#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, и когда все это будет сделано, входные контакты средств визуализации могут быть подключены. Я пытался сделать это в неправильном порядке, и это было моей самой большой ошибкой.