public void GetFrameOpen() { var bih = new AviInterop.BitmapInfoHeader { biBitCount = CountBitsPerPixel, biPlanes = 1 }; bih.biSize = Marshal.SizeOf(bih); getFrameObject = AviInterop.AVIStreamGetFrameOpen(StreamPointer, ref bih); if (getFrameObject == 0) throw new CodecNotFoundException(); isFrameOpen = true; }
public VideoStream(int filePtr, IntPtr streamPtr) : base(filePtr, streamPtr) { var bih = new AviInterop.BitmapInfoHeader(); int size = Marshal.SizeOf(bih); AviInterop.AVIStreamReadFormat(StreamPointer, 0, ref bih, ref size); AviInterop.StreamInfo streamInfo = GetStreamInfo(); FrameRate = streamInfo.dwRate / (float)streamInfo.dwScale; Width = streamInfo.rcFrame.right; Height = streamInfo.rcFrame.bottom; FrameSize = bih.biSizeImage; CountBitsPerPixel = CalculateBitsPerPixel(bih.biBitCount); FirstFrame = AviInterop.AVIStreamStart(StreamPointer); CountFrames = AviInterop.AVIStreamLength(StreamPointer); }
public void GetFrameOpen() { var bih = new AviInterop.BitmapInfoHeader { biBitCount = CountBitsPerPixel, biPlanes = 1 }; bih.biSize = Marshal.SizeOf(bih); getFrameObject = AviInterop.AVIStreamGetFrameOpen(StreamPointer, ref bih); if (getFrameObject == 0) { throw new CodecNotFoundException(); } isFrameOpen = true; }
public byte[] GetStreamData(int position, out AviInterop.BitmapInfoHeader header) { if (!isFrameOpen) throw new Exception("GetFrameOpen needs to be called before GetStreamData!"); int dib = AviInterop.AVIStreamGetFrame(getFrameObject, FirstFrame + position); header = new AviInterop.BitmapInfoHeader(); header = (AviInterop.BitmapInfoHeader)Marshal.PtrToStructure((IntPtr)dib, header.GetType()); if (header.biSizeImage < 1) throw new Exception("Exception in VideoStreamGetFrame"); int bihSize = Marshal.SizeOf(header); var bitmapData = new byte[header.biSizeImage + (header.biBitCount < 16 ? PaletteSize : 0)]; Marshal.Copy((IntPtr)(dib + bihSize), bitmapData, 0, bitmapData.Length); return bitmapData; }
public byte[] GetStreamData(int position, out AviInterop.BitmapInfoHeader header) { if (!isFrameOpen) { throw new Exception("GetFrameOpen needs to be called before GetStreamData!"); } int dib = AviInterop.AVIStreamGetFrame(getFrameObject, FirstFrame + position); header = new AviInterop.BitmapInfoHeader(); header = (AviInterop.BitmapInfoHeader)Marshal.PtrToStructure((IntPtr)dib, header.GetType()); if (header.biSizeImage < 1) { throw new Exception("Exception in VideoStreamGetFrame"); } int bihSize = Marshal.SizeOf(header); var bitmapData = new byte[header.biSizeImage + (header.biBitCount < 16 ? PaletteSize : 0)]; Marshal.Copy((IntPtr)(dib + bihSize), bitmapData, 0, bitmapData.Length); return(bitmapData); }