DirectShow EVR проблема изменения размера окна

Итак, я заглянул в мир воспроизведения мультимедиа для окон и начал создавать C# Media Player с использованием DirectShow. Я начал с использования оконного видео рендерера VRM-7, и он был великолепен, за исключением нескольких небольших проблем (мультимониторы, полноэкранный режим). Но после некоторого исследования я обнаружил, что это устарело, и я должен использовать VRM9. Так что я изменил его, чтобы использовать VRM9 без окон, а затем обнаружил, что это был старый пост rofl >_<, так что, наконец, я использую Vista / Win7 (или XP.net 3) Enhanced Video Renderer (EVR), который, по-видимому, является самым современным 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 ответ

Решение

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

Думаю, я посмотрю на образец и попробую оттуда

Другие вопросы по тегам