Пользовательский фильтр DirectShow Video Renderer - динамическое изменение разрешения - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть 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, я хотел иметь ту же функцию.

Вопросы:

  1. Как мне инициировать CheckMediaType / SetMediaType вызовы после начала потоковой передачи? На самом деле SetMediaType является важным для меня. Или есть другой способ запроса разрешения текущего потока?
  2. Нужно ли постоянно проверять возможные изменения размера видео в DoRenderSample?

1 Ответ

1 голос
/ 17 ноября 2011

CheckMediaType и SetMediaType не совсем "события", они не возникают сами по себе, поэтому вы не можете их вызвать. Собираетесь ли вы менять разрешение? Самостоятельно расширять шаг, как VMR? Или принять изменения разрешения от восходящего фильтра?

Этот раздел MSDN содержит подробную информацию: Динамические изменения формата .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...