директива show «Конвертер цветового пространства» проблема конфигурации фильтра (рендерер VMR без окон) - PullRequest
1 голос
/ 21 июня 2011

Я использую 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, но мне не особо повезло , Надеюсь, кто-то здесь может указать мне правильное направление!

1 Ответ

1 голос
/ 22 июня 2011

Насколько я знаю, у фильтра Color Space Converter нет интерфейса, но он вам и не нужен.Вы можете принудительно преобразовать фильтр преобразователя цветового пространства в RGB32, вставив фильтр, который принимает только RGB32.TransNull32 из примера RGBFilters делает это точно.Ваш график будет выглядеть так:

capture.avi -> AVI Splitter -> Color Space Converter -> TransNull32 -> Video Renderer

См. Также Относительно области действия Sample Grabber в DirectShow , где я объясняю, как использовать фильтр TransNull24.

...