예제 #1
0
        /// <summary>
        /// ビデオフレームが到着。videoBufferをロックして転送する。
        /// </summary>
        private void graph_VideoFrame(double sampleTime, IntPtr pFrame, int bufferSize)
        {
            lock (videoBuffer)
            {
                BitmapData data = videoBuffer.LockBits(new Rectangle(Point.Empty, videoBuffer.Size), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
                graph.RenderVideoFrameToTexture(pFrame, data.Scan0, videoBuffer.Width, videoBuffer.Height);
                videoBuffer.UnlockBits(data);
            }

            // ビデオバッファを更新したので画面も更新する。
            BeginInvoke(new MethodInvoker(Invalidate));
        }