/// <summary>Create a compressed stream from an uncompressed stream</summary> private void CreateCompressedStream() { //display the compression options dialog... Avi.AVICOMPRESSOPTIONS_CLASS options = new Avi.AVICOMPRESSOPTIONS_CLASS(); options.fccType = (uint)Avi.streamtypeVIDEO; options.lpParms = IntPtr.Zero; options.lpFormat = IntPtr.Zero; Avi.AVISaveOptions(IntPtr.Zero, Avi.ICMF_CHOOSE_KEYFRAME | Avi.ICMF_CHOOSE_DATARATE, 1, ref aviStream, ref options); //..or set static options /*Avi.AVICOMPRESSOPTIONS opts = new Avi.AVICOMPRESSOPTIONS(); //opts.fccType = (UInt32)Avi.mmioStringToFOURCC("vids", 0); //opts.fccHandler = (UInt32)Avi.mmioStringToFOURCC("CVID", 0); opts.fccType = (UInt32)Avi.mmioStringToFOURCC("mrle", 0); opts.fccHandler = (UInt32)Avi.mmioStringToFOURCC("MRLE", 0); opts.dwKeyFrameEvery = 0; opts.dwQuality = 0; // 0 .. 10000 opts.dwFlags = 0; // AVICOMRPESSF_KEYFRAMES = 4 opts.dwBytesPerSecond= 0; opts.lpFormat = new IntPtr(0); opts.cbFormat = 0; opts.lpParms = new IntPtr(0); opts.cbParms = 0; opts.dwInterleaveEvery = 0;*/ //get the compressed stream this.compressOptions = options.ToStruct(); int result = Avi.AVIMakeCompressedStream(out compressedStream, aviStream, ref compressOptions, 0); if(result != 0) { throw new Exception("Exception in AVIMakeCompressedStream: "+result.ToString()); } Avi.AVISaveOptionsFree(1, ref options); SetFormat(compressedStream, 0); }
/// <summary>Create a compressed stream from an uncompressed stream</summary> private void CreateCompressedStream(Avi.AVICOMPRESSOPTIONS options) { int result = Avi.AVIMakeCompressedStream(out compressedStream, aviStream, ref options, 0); if (result != 0) { throw new Exception("Exception in AVIMakeCompressedStream: " + result.ToString()); } this.compressOptions = options; SetFormat(compressedStream, 0); }
/// <summary>Copy all properties from one VideoStream to another one</summary> /// <remarks>Used by EditableVideoStream</remarks> /// <param name="frameSize"></param><param name="frameRate"></param> /// <param name="width"></param><param name="height"></param> /// <param name="countBitsPerPixel"></param> /// <param name="countFrames"></param><param name="compressOptions"></param> internal VideoStream(int frameSize, double frameRate, int width, int height, Int16 countBitsPerPixel, int countFrames, Avi.AVICOMPRESSOPTIONS compressOptions, bool writeCompressed) { this.frameSize = frameSize; this.frameRate = frameRate; this.width = width; this.height = height; this.countBitsPerPixel = countBitsPerPixel; this.countFrames = countFrames; this.compressOptions = compressOptions; this.writeCompressed = writeCompressed; this.firstFrame = 0; }