У меня есть Custom DirectShow Video Renderer Filter
, который имеет некоторые расширенные функции по сравнению с Microsoft's Video Renderer Filter
, такие как оверлейные изображения. Я знаю, что могу сделать то же самое с Transform Filter
, но я выбрал этот путь. Я также считаю, что столкнулся бы с той же проблемой с Transform Filter
, которую я опишу ниже.
Когда я использую Microsoft's Video Renderer Filter
, он может автоматически изменять размеры окна и размера буфера при запуске / изменении потока. Мой фильтр способен делать то же самое, но я не могу получать события после запуска потока. Я верю, что могу как-то сделать запрос, но не знаю как.
Текущий конвейер событий, как показано ниже.
On Pin Connect
--------------
CreateInstance
Video Renderer Class Constructor
CheckMediaType
SetMediaType
-> Width: 100, Height: 100
CheckMediaType
CheckMediaType
CheckMediaType
SetMediaType
-> Width: 100, Height: 100
On Play
-------
StartStreaming
DoRenderSample
...
...
...
DoRenderSample
On Stop
-------
Video Renderer Class Destructor
Размер окна по умолчанию, установленный моим исходным фильтром, составляет 100x100. Я могу получить это на контактный разъем дважды. Но после StartStreaming
я не могу снова получить события CheckMediaType
и SetMediaType
. Я мог бы попытаться вызвать их из исходного фильтра (это также и мой код), но поскольку Microsoft's Video Renderer
может автоматически изменять размеры на StartStreaming
, я хотел иметь ту же функцию.
Вопросы:
- Как мне инициировать
CheckMediaType
/ SetMediaType
вызовы после начала потоковой передачи? На самом деле SetMediaType
является важным для меня. Или есть другой способ запроса разрешения текущего потока?
- Нужно ли постоянно проверять возможные изменения размера видео в
DoRenderSample
?