DirectShow EVR проблема изменения размера окна - PullRequest
1 голос
/ 10 мая 2010

Итак, я заглянул в мир воспроизведения мультимедиа для окон и начал создавать C # Media Player с использованием DirectShow. Я начал с использования оконного видео рендерера VRM-7, и он был великолепен, за исключением нескольких небольших проблем (мультимониторы, полноэкранный режим). Но после некоторого исследования я обнаружил, что это устарело, и я должен использовать VRM9. Так что я изменил его, чтобы использовать VRM9 без окон, а затем обнаружил, что это был старый пост Microsoft рендерер видео и имеет все роскошные вещи производительность / качество добавлены к нему. (но я не заметил никакой разницы, но, может быть, мне нужно видео Blue-Ray или HQ, чтобы это заметить).

С использованием EVR все работает нормально, кроме изменения размера видео. Он действительно запаздывает / прерывисто / слезится и, вероятно, что-то связано с его механизмом очереди кадров.

Чтобы продемонстрировать мою проблему

  1. Откройте Windows Media Player Classic.
  2. Вид -> Параметры -> Воспроизведение -> Вывод
  3. Выберите "EVR" DirectShow Video Renderer

Теперь перезапустите класс wmp и воспроизведите видео, пока оно воспроизводится, нажмите и перетащите угол, чтобы изменить его размер. Вы заметите, что это ужасно медленно. Это точно такая же проблема, как и у меня.

Но если вы выбрали "EVR Custom Pres. **" или EVR Sync ** ", изменение размера работает прекрасно! Поэтому я попытался найти что-нибудь о проблемах изменения размера EVR и о том, как это исправить, но я не мог поверить, насколько мало я я могу найти. Я предполагаю, что "Custom Pres." означает "Custom Presenter", который звучит так, как будто он сделал свой собственный. Кроме того, вы заметите размер справа, когда вы переключаетесь между EVR и другим EVR, выпадающий Resizer на правой градации серого.

Так что в основном я не хочу знать, как я могу решить эту проблему запаздывающего изменения размера, и есть ли какая-нибудь приличная документация там? Для VMR7 / 9 есть немало, но не для EVR. Я скачал DirectX SDK, который, очевидно, имеет образцы, но это была трата 500 Мб пропускной способности, поскольку это не имело никакого отношения.

Возможно, есть какой-то способ заставить его не ставить в очередь кадры, если в этом проблема? Если вы хотите, чтобы код произнес слово, и я его вставлю. Но это действительно довольно просто и ничего особенного не происходит, я уверен, что это проблема с рендерером EVR.

РЕДАКТИРОВАТЬ: Да, и еще одна вещь, что использует VLC? Если вы войдете в параметры vlc и измените рендерер на что-либо кроме значения по умолчанию, они все отстой. Так это с использованием VMR7? Или свой?

1 Ответ

1 голос
/ 12 мая 2010

Мне нужно написать свой собственный Presenter, который с точки зрения http://msdn.microsoft.com/en-us/library/bb530107(VS.85).aspx является относительно большой задачей.

Полагаю, я посмотрю на образец и попробую перейти оттуда

...