Пример #1
0
        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());
            }
        }
Пример #2
0
        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());
            }
        }