public Pixelmap GetPixelmap(int index) { if (index < FirstFrame) { index = FirstFrame; } if (index > LastFrame) { index = LastFrame; } uint[] pixels; uint[] originalPixels; Bitmap videoFrame; byte[] bitmapBytes; TangraVideo.GetFrame(index, out pixels, out originalPixels, out videoFrame, out bitmapBytes); var rv = new Pixelmap(Width, Height, 8, pixels, videoFrame, bitmapBytes); rv.UnprocessedPixels = originalPixels; return(rv); }
public Pixelmap GetPixelmap(int index) { if (index < FirstFrame) { index = FirstFrame; } if (index > LastFrame) { index = LastFrame; } uint[] pixels; uint[] originalPixels; Bitmap videoFrame; byte[] bitmapBytes; if (Mode == ReInterlaceMode.SwapFields) { TangraVideo.GetFrame(index, out pixels, out originalPixels, out videoFrame, out bitmapBytes); byte[] bitmapPixels = new byte[Width * Height * 3 + 40 + 14 + 1]; TangraCore.SwapVideoFields(pixels, originalPixels, Width, Height, bitmapPixels, bitmapBytes); videoFrame = Pixelmap.ConstructBitmapFromBitmapPixels(bitmapBytes, Width, Height); var rv = new Pixelmap(Width, Height, 8, pixels, videoFrame, bitmapBytes); rv.UnprocessedPixels = originalPixels; return(rv); } else if (Mode == ReInterlaceMode.ShiftOneField || Mode == ReInterlaceMode.SwapAndShiftOneField) { uint[] pixels2; uint[] originalPixels2; Bitmap videoFrame2; byte[] bitmapBytes2; if (m_LastPrevFrameId == index) { pixels = m_LastPrevFramePixels; originalPixels = m_LastPrevFrameOriginalPixels; bitmapBytes = m_LastPrevFrameBitmapBytes; } else { TangraVideo.GetFrame(index, out pixels, out originalPixels, out videoFrame, out bitmapBytes); } TangraVideo.GetFrame(index + 1, out pixels2, out originalPixels2, out videoFrame2, out bitmapBytes2); m_LastPrevFrameId = index + 1; m_LastPrevFramePixels = pixels2; m_LastPrevFrameOriginalPixels = originalPixels2; m_LastPrevFrameBitmapBytes = bitmapBytes2; byte[] bitmapPixels = new byte[Width * Height * 3 + 40 + 14 + 1]; TangraCore.ShiftVideoFields(pixels, originalPixels, pixels2, originalPixels2, Width, Height, m_ShiftMode, bitmapPixels, bitmapBytes); videoFrame = Pixelmap.ConstructBitmapFromBitmapPixels(bitmapBytes, Width, Height); var rv = new Pixelmap(Width, Height, 8, pixels, videoFrame, bitmapBytes); rv.UnprocessedPixels = originalPixels; return(rv); } else if (Mode == ReInterlaceMode.None) { return(m_BaseStream.GetPixelmap(index)); } else { throw new NotSupportedException(); } }