コード例 #1
0
        unsafe void OnpDisplay(void *opaque, void *picture)
        {
            lock (m_lock)
            {
                try
                {
                    PixelData *px = (PixelData *)opaque;
                    MemoryHeap.CopyMemory(m_pBuffer, px->pPixelData, px->size);

                    m_frameRate++;
                    if (m_callback != null)
                    {
                        using (Bitmap frame = GetBitmap())
                        {
                            m_callback(frame);
                        }
                    }
                }
                catch (Exception ex)
                {
                    if (m_excHandler != null)
                    {
                        m_excHandler(ex);
                    }
                    else
                    {
                        throw ex;
                    }
                }
            }
        }
コード例 #2
0
        private FrameData DeepClone(IntPtr data, int size)
        {
            FrameData clone = new FrameData();

            clone.Data = new IntPtr(MemoryHeap.Alloc(size));
            MemoryHeap.CopyMemory(clone.Data.ToPointer(), data.ToPointer(), size);
            clone.DataSize = size;
            return(clone);
        }
コード例 #3
0
        unsafe void OnpDisplay(void *opaque, void *picture)
        {
            lock (m_lock)
            {
                PixelData *px = (PixelData *)opaque;
                MemoryHeap.CopyMemory(m_pBuffer, px->pPixelData, px->size);

                m_frameRate++;
                if (m_callback != null)
                {
                    using (Bitmap frame = GetBitmap())
                    {
                        m_callback(frame);
                    }
                }
            }
        }
コード例 #4
0
ファイル: VideoInputMedia.cs プロジェクト: PlumpMath/nVlc-3.5
        public void AddFrame(Bitmap frame)
        {
            Monitor.Enter(m_lock);

            try
            {
                Rectangle  rect    = new Rectangle(0, 0, frame.Width, frame.Height);
                BitmapData bmpData = frame.LockBits(rect, ImageLockMode.ReadOnly, frame.PixelFormat);

                void *pData = bmpData.Scan0.ToPointer();
                MemoryHeap.CopyMemory(m_data.pPixelData, pData, m_data.size);

                frame.UnlockBits(bmpData);
            }
            finally
            {
                Monitor.Exit(m_lock);
            }
        }