Esempio n. 1
0
        void SyncWriteFileHeader()
        {
            riffChunk = new RiffChunk(this.stream);
              riffChunk.WriteFourCC(RiffAviFourCCCode.Avi);

              RiffChunk listHdrl = riffChunk.AddChild(RiffAviFourCCCode.List);
              listHdrl.WriteFourCC(RiffAviFourCCCode.Hdrl);

              RiffChunk avihChunk = listHdrl.AddChild(RiffAviFourCCCode.Avih);
              WriteAvihHeaderStructure(avihChunk);
              avihChunk.Close();

              RiffChunk listStrl = listHdrl.AddChild(RiffAviFourCCCode.List);
              listStrl.WriteFourCC(RiffAviFourCCCode.Strl);

              RiffChunk strhChunk = listStrl.AddChild(RiffAviFourCCCode.Strh);
              WriteStrhHeaderStructure(strhChunk);
              strhChunk.Close();

              RiffChunk strfChunk = listStrl.AddChild(RiffAviFourCCCode.Strf);
              WriteStrfHeaderStructure(strfChunk);
              strfChunk.Close();

              listStrl.Close();

              listHdrl.Close();

              listMovi = riffChunk.AddChild(RiffAviFourCCCode.List);
              listMovi.WriteFourCC(RiffAviFourCCCode.Movi);
        }
Esempio n. 2
0
        void WriteStrhHeaderStructure(RiffChunk chunk)
        {
            chunk.WriteFourCC(RiffAviFourCCCode.Vids);            // 'vids'
              chunk.WriteFourCC(RiffAviFourCCCode.Dib);             // 'DIB '
              chunk.WriteDWORD(0);                                  // flags
              chunk.WriteWORD(0);                                   // priority
              chunk.WriteWORD(0);                                   // language
              chunk.WriteDWORD(0);                                  // initial frames
              chunk.WriteDWORD(1);                                  // scale
              chunk.WriteDWORD(framesPerSecond);                    // rate
              chunk.WriteDWORD(0);                                  // start

              strhFrameCountBookmark =
            chunk.WriteAndBookmarkDWORD(0);                     // frameCount

              chunk.WriteDWORD(width * height * 4);                 // suggested buffer size
              chunk.WriteDWORD(0);                                  // quality
              chunk.WriteDWORD(0);                                  // sample size
              chunk.WriteDWORD(0);                                  // left
              chunk.WriteDWORD(0);                                  // top
              chunk.WriteDWORD((ushort)width);                      // right
              chunk.WriteDWORD((ushort)height);                     // bottom
        }