private void UpdateBuffer(object sender, UpdateBufferEventArgs eventArgs) { IntPtr buffer = eventArgs.Buffer; int bufferLen = eventArgs.BufferLen; int width = eventArgs.Width; int height = eventArgs.Height; int stride = width * 4; unsafe { byte *dst = (byte *)buffer0.ToPointer( ) + stride * (height - 1);; byte *src = (byte *)buffer.ToPointer( ); for (int y = 0; y < height; y++) { memcpy(dst, src, stride); dst -= stride; src += stride; } } // swap IntPtr temp = buffer0; buffer0 = buffer1; buffer1 = temp; if (OnFrameReady != null) { OnFrameReady(this, new EventArgs()); } }
private void UpdateBuffer(object sender, UpdateBufferEventArgs eventArgs) { IntPtr buffer = eventArgs.Buffer; int bufferLen = eventArgs.BufferLen; int width = eventArgs.Width; int height = eventArgs.Height; int stride = width * 4; unsafe { byte* dst = (byte*) buffer0.ToPointer( ) + stride * ( height - 1 ); ; byte* src = (byte*) buffer.ToPointer( ); for ( int y = 0; y < height; y++ ) { memcpy( dst, src, stride ); dst -= stride; src += stride; } } // swap IntPtr temp = buffer0; buffer0 = buffer1; buffer1 = temp; if (OnFrameReady != null) { OnFrameReady(this, new EventArgs()); } }