Проблема с изменением размера окна DirectShow EVR

Итак, я изучал мир воспроизведения мультимедиа для Windows и начал создавать C # Media Player с помощью DirectShow. Я начал использовать оконный видеорендерер VRM-7, и он был великолепен, за исключением нескольких небольших проблем (несколько мониторов, полноэкранный режим). Но после некоторого исследования я обнаружил, что он устарел и мне следует использовать VRM9. Итак, я изменил его, чтобы использовать VRM9 без окон, а затем обнаружил, что это старый пост rofl> _ ‹, поэтому, наконец, я использую Vista / Win7 (или XP .net 3) Enhanced Video Renderer (EVR), который, по-видимому, является самым современным. Microsoft video renderer, и в него добавлены все отличные характеристики производительности / качества. (честно говоря, я не заметил никакой разницы, но, возможно, мне нужно видео в формате blue-ray или HQ, чтобы заметить это).

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

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

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

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

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

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

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

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


person Daniel    schedule 10.05.2010    source источник
comment
У меня такая же проблема, но с C ++. Было ли создание собственного Custom Presenter решением вашей проблемы?   -  person    schedule 10.11.2010


Ответы (1)


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

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

person Daniel    schedule 12.05.2010
comment
Мне было бы очень интересно услышать о ваших выводах по этому поводу, напишите, пожалуйста, о том, как у вас дела;) - person ; 10.11.2010