Ejemplo n.º 1
0
        void DeInitDirectShow()
        {
            if (mediaControl != null)
            {
                mediaControl.StopWhenReady();
            }

            if (mediaEventEx != null)
            {
                mediaEventEx.SetNotifyWindow(IntPtr.Zero, WM_GRAPHNOTIFY, IntPtr.Zero);
            }

            if (videoWindow != null)
            {
                videoWindow.put_Visible(OABool.False);
                videoWindow.put_Owner(IntPtr.Zero);
            }

            Marshal.ReleaseComObject(mediaControl);
            mediaControl = null;
            Marshal.ReleaseComObject(mediaEventEx);
            mediaControl = null;
            Marshal.ReleaseComObject(videoWindow);
            videoWindow = null;
            Marshal.ReleaseComObject(graphBuilder);
            graphBuilder = null;
            Marshal.ReleaseComObject(captureGraphBuilder);
            captureGraphBuilder = null;
            Marshal.ReleaseComObject(outputRenderer);
            outputRenderer = null;
            Marshal.ReleaseComObject(aspectRatioControl);
            aspectRatioControl = null;
            Marshal.ReleaseComObject(aspectRatioControl9);
            aspectRatioControl9 = null;
        }
Ejemplo n.º 2
0
        void InitDirectShow(IntPtr handle)
        {
            graphBuilder = (IGraphBuilder) new FilterGraph();
            mediaControl = (IMediaControl)(IVideoWindow)graphBuilder;
            videoWindow  = (IVideoWindow)(IMediaControl)graphBuilder;
            mediaEventEx = (IMediaEventEx)graphBuilder;

            captureGraphBuilder = (ICaptureGraphBuilder2) new CaptureGraphBuilder2();

            outputRenderer = (IBaseFilter) new VideoMixingRenderer9();

            if (outputRenderer != null)
            {
                graphBuilder.AddFilter(outputRenderer, "Output");

                aspectRatioControl  = outputRenderer as IVMRAspectRatioControl;
                aspectRatioControl9 = outputRenderer as IVMRAspectRatioControl9;
            }

            var hr = mediaEventEx.SetNotifyWindow(handle, WM_GRAPHNOTIFY, IntPtr.Zero);

            DsError.ThrowExceptionForHR(hr);

            hr = captureGraphBuilder.SetFiltergraph(graphBuilder);
            DsError.ThrowExceptionForHR(hr);

            graphBuilderRotEntry = new DsROTEntry(graphBuilder);
        }
Ejemplo n.º 3
0
        // VMR windowed behaves like a real windowed renderer, i.e. it must be configured after the video is rendered (compare with VMR9 windowed)
        protected override void Initialize(IGraphBuilder pGraphBuilder, IntPtr hMediaWindow)
        {
            base.Initialize(pGraphBuilder, hMediaWindow);

            IVMRAspectRatioControl pVMRAspectRatioControl = (IVMRAspectRatioControl)BaseFilter; // will be released when we release IBaseFilter

            pVMRAspectRatioControl.SetAspectRatioMode(VMR_ASPECT_RATIO_MODE.VMR_ARMODE_NONE);
        }
Ejemplo n.º 4
0
        public void DoTests()
        {
            arControl = (IVMRAspectRatioControl) new VideoMixingRenderer();

            try
            {
                TestAspectRatioMode();
            }
            finally
            {
                Marshal.ReleaseComObject(arControl);
            }
        }