C# + Directshow + Vmr9... Help!

Тема в разделе ".NET", создана пользователем monsky, 29 окт 2007.

Статус темы:
Закрыта.
  1. monsky

    monsky Гость

    Народ, помогите зеленому, бъюсь уже второй день.

    Строю аппликацию для захвата живого видео с аналоговой карточки, причем хочу использовать VMR9, чтобы с его помощью и картинки грабить, и яркость с контрастностью регулировать (но до этого я еще не дошел).
    Пока работаю в оконном режиме, все тип-топ:

    private void SetupGraph(DsDevice dev, int iWidth, int iHeight, short iBPP, Control hControl)
    {
    int hr;

    IBaseFilter capFilter = null;

    // Get the graphbuilder object
    m_graphBuilder = new FilterGraph() as IFilterGraph2;

    try
    {
    #if DEBUG
    m_rot = new DsROTEntry(m_graphBuilder);
    #endif
    ICaptureGraphBuilder2 captureGraphBuilder = (ICaptureGraphBuilder2)new CaptureGraphBuilder2();
    hr = captureGraphBuilder.SetFiltergraph(m_graphBuilder);
    DsError.ThrowExceptionForHR(hr);

    vmr = (IBaseFilter)new VideoMixingRenderer9();
    hr = m_graphBuilder.AddFilter(vmr, "VMR9");
    DsError.ThrowExceptionForHR(hr);

    //IVMRFilterConfig9 vmrFilterConfig = (IVMRFilterConfig9)vmr;
    //hr = vmrFilterConfig.SetRenderingMode(VMR9Mode.Windowless);
    //DsError.ThrowExceptionForHR(hr);

    //IVMRWindowlessControl9 vmrWindowsless = (IVMRWindowlessControl9)vmr;
    //hr = vmrWindowsless.SetVideoClippingWindow(hControl.Handle);
    //DsError.ThrowExceptionForHR(hr);

    // add the video input device
    hr = m_graphBuilder.AddSourceFilterForMoniker(dev.Mon, null, dev.Name, out capFilter);
    DsError.ThrowExceptionForHR(hr);

    object o = null;
    Guid iid = typeof(IAMStreamConfig).GUID;
    hr = captureGraphBuilder.FindInterface(DsGuid.FromGuid(PinCategory.Capture), DsGuid.FromGuid(MediaType.Interleaved), capFilter, DsGuid.FromGuid(iid), out o);

    hr = captureGraphBuilder.RenderStream(null, null, capFilter, null, vmr);
    DsError.ThrowExceptionForHR(hr);

    ConfigVideoWindow(hControl);

    // Start the graph
    IMediaControl mediaCtrl = m_graphBuilder as IMediaControl;
    hr = mediaCtrl.Run();
    DsError.ThrowExceptionForHR( hr );
    }
    finally
    {
    }
    }
    Если же пытаюсь перейти на безоконный режим, то нифига не вижу, хотя GraphBuilder подключается и показывает граф нормально.
    (Для безоконного режима в этой функции надо раскомментировать соответствующие строки и закомментировать ConfigVideoWindow(hControl)

    НУ ЧТО Я ДЕЛАЮ НЕ ТАК???
     
Статус темы:
Закрыта.

Поделиться этой страницей