コード例 #1
0
        public override void Shutdown()
        {
            var  bw  = writer.binaryWriter;
            long pos = bw.Seek(0, SeekOrigin.Current);

            bw.Seek(offsets.avih + 4 * 4, SeekOrigin.Begin);
            bw.Write(totalFramesOld);           // avih.dwTotalFrames
            bw.Seek(offsets.videoStrh + 8 * 4, SeekOrigin.Begin);
            bw.Write(totalFrames);              // strh[vids].dwLength
            bw.Seek(offsets.dmlh, SeekOrigin.Begin);
            bw.Write(totalFrames);              // dmlh.dwTotalFrames
            if (hasAudioStream)
            {
                bw.Seek(offsets.audioStrh + 8 * 4, SeekOrigin.Begin);
                bw.Write(totalSamples);                  // strh[auds].dwLength
            }
            bw.BaseStream.Seek(pos, SeekOrigin.Begin);

            if (videoIndex.entries.Count > 0)
            {
                WriteChunkIndex(writer, videoIndex, offsets.videoIndx, ref videoSuperIndexEntryCount, offsets.indexBase, maxSuperindexEntries);
            }
            if (hasAudioStream && audioIndex.entries.Count > 0)
            {
                WriteChunkIndex(writer, audioIndex, offsets.audioIndx, ref audioSuperIndexEntryCount, offsets.indexBase, maxSuperindexEntries);
            }

            writer.EndList();              // end of movi
            writer.EndRiff();
            writer.Close();
        }