ошибка запроса c # IVMRWindowlessControl9

#c# #winapi #video #directshow #directshow.net

#c# #winapi #Видео #directshow #directshow.net

Вопрос:

Почему я могу сделать что-то подобное без каких-либо проблем ((IVMRFilterConfig9)pVideoMixingRenderer1).SetRenderingMode(VMR9Mode.Windowless);
, но когда я пытаюсь это

 IVMRWindowlessControl9 vc1 = (IVMRWindowlessControl9)pVideoMixingRenderer1;
 

у меня недопустимое исключение приведения (РЕЗУЛЬТАТ: 0x80004002 (E_NOINTERFACE))?

Кстати, сам рендерер VMR9 работает просто отлично.

Ответ №1:

Поведение точно задокументировано. MSDN:

VMR-9 поддерживает этот интерфейс только в режимах без окон и без отображения. В оконном режиме QueryInterface возвращает E_NOINTERFACE .

Вы показываете строку, которая предположительно переключается в режим без окон, но у этого есть свои ограничения. В режиме без окон интерфейс будет доступен.

DirectShow.В примерах сети есть несколько IVMRWindowlessControl9 примеров использования, вы можете проверить их для правильного использования интерфейса.

Ответ №2:

Я понял это. Похоже, вам нужно добавить средства визуализации в свой график, не подключая их, а затем включить режим без окон, чтобы получить доступ к windowlesscontrol. Затем вам нужно установить параметры windowlesscontrol, и когда все это будет сделано, входные контакты средств визуализации могут быть подключены. Я пытался сделать это в неправильном порядке, и это было моей самой большой ошибкой.