Я использую VMR для смешивания растрового изображения с видеопотоком. Я запускаю рендерер в режиме без окон.
Так как мне нужно иметь более 1 потока на рендере, я сначала добавляю рендерер на график, а затем использую IFilterGraph2 :: RenderEx с AM_RENDEREX_RENDERTOEXISTINGRENDERERS.
В большинстве случаев все работает нормально, но у меня есть один файл .avi, который хорошо отрисовывается с помощью RenderFile, но в конечном итоге отображает весь черный при визуализации на моем графике. Я сравнил два графика в графике, и они одинаковы:
capture.avi -> AVI Splitter -> Color Space Converter -> Video Renderer
Единственное различие между графиками заключается в том, что средство визуализации цветового пространства настроено по-другому: graphedit показывает, что на графике работают следующие параметры:
Input:
Major Type: Video
Sub Type: ARGB32
...
XForm Out:
Major Type: Video
Sub Type: RGB32
В то время как на моем графике показано:
Input: (same)
XForm Out:
Major Type: Video
Sub Type: ARGB32
Так что похоже, что конвертер в основном ничего не делает. Я осмотрелся и не смог найти интерфейс конфигурации для фильтра Color Space Converter. Я также пробовал разные вещи с IPin :: QueryAccept и IFilterGraph2 :: ReconnectEx на входном выводе VMR и выходном выводе преобразователя цветового пространства, чтобы попытаться форсировать вывод фильтра преобразователя в RGB32, но мне не особо повезло , Надеюсь, кто-то здесь может указать мне правильное направление!