コード例 #1
0
ファイル: RiffAviChunk.cs プロジェクト: bkama/presentations
        RiffChunk(Stream stream, RiffAviFourCCCode code, RiffChunk parent)
        {
            this.stream = stream;

              WriteBits(RiffAviFourCCCodes.GetCode(code));

              bookmark = new StreamBookmark(this.stream);
              bookmark.CaptureAndWrite(0);
              size = 0;

              this.parentChunk = parent;

              if (this.parentChunk != null)
              {
            this.parentChunk.size += 8;
              }
        }
コード例 #2
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);
        }
コード例 #3
0
 void WriteStrfHeaderStructure(RiffChunk chunk)
 {
     chunk.WriteDWORD(40);                             // structure size - TOTAL structure size
       chunk.WriteDWORD(width);                          // width
       chunk.WriteDWORD(height);                         // height
       chunk.WriteWORD(1);                               // planes
       chunk.WriteWORD(32);                              // bits per pixel
       chunk.WriteDWORD(0);                              // compression ( BI_RGB == 0 )
       chunk.WriteDWORD(width * height * 4);             // size image - TODO
       chunk.WriteDWORD(0);                              // X pels per meter
       chunk.WriteDWORD(0);                              // Y pels per meter
       chunk.WriteDWORD(0);                              // clr used
       chunk.WriteDWORD(0);                              // clr important
       //NB: No colour table.
 }
コード例 #4
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
        }
コード例 #5
0
        void WriteAvihHeaderStructure(RiffChunk chunk)
        {
            UInt32 microSecondsPerFrame =
            (UInt32)((1.0 / framesPerSecond) * 1.0E6);

              chunk.WriteDWORD(microSecondsPerFrame);             // Microseconds per frame
              chunk.WriteDWORD(0);                                // Max Bytes Per Second
              chunk.WriteDWORD(0);                                // Padding granularity
              chunk.WriteDWORD(0);                                // Flags

              avihFrameCountBookmark =
            chunk.WriteAndBookmarkDWORD(0);                   // Total frames

              chunk.WriteDWORD(0);                                // Initial frames
              chunk.WriteDWORD(1);                                // Streams
              chunk.WriteDWORD(width * height * 4);               // Suggested buffer size
              chunk.WriteDWORD(width);                            // Width
              chunk.WriteDWORD(height);                           // Height
              chunk.WriteDWORD(0);                                // Reserved [0]
              chunk.WriteDWORD(0);                                // Reserved [1]
              chunk.WriteDWORD(0);                                // Reserved [2]
              chunk.WriteDWORD(0);                                // Reserved [3]
        }