У меня есть 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
?