コード例 #1
0
ファイル: VirtualCam.cs プロジェクト: Norman0406/KinectCamV2
        public unsafe int FillBuffer(ref IMediaSampleImpl _sample)
        {
            IntPtr _ptr;
            _sample.GetPointer(out _ptr);
            int length = _sample.GetSize();

            if (!KinectCamSettigns.Default.Desktop)
            {
                KinectHelper.GenerateFrame(_ptr, length, KinectCamSettigns.Default.Mirrored);
            }
            else
            {
                if (m_hBitmap == IntPtr.Zero)
                {
                    m_hBitmap = CreateCompatibleBitmap(m_hScreenDC, m_nWidth, Math.Abs(m_nHeight));
                }
                IntPtr hOldBitmap = SelectObject(m_hMemDC, m_hBitmap);
                StretchBlt(m_hMemDC, 0, 0, m_nWidth, Math.Abs(m_nHeight), m_hScreenDC, 0, 0, m_nMaxWidth, m_nMaxHeight, TernaryRasterOperations.SRCCOPY);
                SelectObject(m_hMemDC, hOldBitmap);
                GetDIBits(m_hMemDC, m_hBitmap, 0, (uint)Math.Abs(m_nHeight), _ptr, ref m_bmi, 0);
            }

            _sample.SetActualDataLength(_sample.GetSize());
            _sample.SetSyncPoint(true);

            return NOERROR;
        }
コード例 #2
0
        public int FillBuffer(ref IMediaSampleImpl sample)
        {
            IntPtr ptr;
            sample.GetPointer(out ptr);
            var length = sample.GetSize();

            //KinectHelper.GenerateFrameFromFullscreen(ptr, length);
            KinectHelper.GenerateFrameFromZoom(ptr, length);

            sample.SetActualDataLength(sample.GetSize());
            sample.SetSyncPoint(true);

            return NOERROR;
        }