Аппаратно ускоренное видео в DirectShow / WinForms

В настоящее время моделируя Windows приложение.NET, которое должно воспроизвести WMV с высоким разрешением и видео H264. Мои тестовые файлы составляют полные 1 080 пунктов.

Целевые аппаратные средства имеют слабые процессоры Atom, но сильную графику NVidia 9400. Я знаю, что графика интегрируется, но мое понимание - то, что они хороши для воспроизведения видео.

При тестировании в Windows 7, если я играю свои тестовые файлы в WPF, с помощью управления MediaElement, мое использование ЦП 0.

Однако целевой ОС является Windows XP, и у нас не может быть.NET 3.0. Поэтому приложение должно работать в WinForms. По различным причинам Windows Media Player ActiveX не является опцией. Таким образом, мы смотрим на DirectShow.

Я соединил плеер, использующий DirectShow.NET, играя видео назад полный экран с помощью VMR9. Используя этот подход, мои файлы WMV используют где-нибудь между 20 - 30% ЦП. Я должен был установить mp4 muxer/demuxer, чтобы даже заставить файлы H264 играть, и затем они использовали 40 - 50% ЦП.

  • Я знаю, что Windows 7 поддерживает H264 поле. Однако кажется, что это не фильтр DirectShow?
  • Почему мое видео ускоряется с помощью WPF, но не при использовании DirectShow? Мое понимание является тем DirectShow поддержки DXvA.

tldr: как я могу достигнуть аппаратно ускоренного WMV и воспроизведения видео H264 в WinForms?

Спасибо!

6
задан TheNextman 26 January 2010 в 14:49
поделиться

3 ответа

Нет прямого ответа для вас, но утилита DXVA Checker помогла мне отлаживать проблемы DXVA в прошлом. Вот скачать ссылку: http://bluesky23.hp.infoseek.co.jp/en/index.html

2
ответ дан 16 December 2019 в 21:39
поделиться

Я сделал некоторую проверку утилитой DXVA, рекомендованной Иеремией Морилл.

У меня довольно хорошая идея о том, что происходит сейчас ....

  • Я думаю, что поддержка H264 в Windows 7 предоставляется MediaFoundation, что объясняет, почему мое приложение DirectShow не может использовать его!
  • Запуск видео WMV с использованием фильтра DirectShow в Windows 7 обеспечивает разные уровни производительности в зависимости от рендерера (VMR7 / VMR9 / EVR). VMR7 является наименее процессором (6 - 7% CPU), но худшее качество, EVR (8 - 12% CPU) немного более эффективно, чем VMR9 (12 - 13% CPU), однако они оба выглядят аналогичны. Тем не менее, Kicker - это фильтр MediaFoundation - который, очевидно, полностью ускоряется и использует 0% CPU. Поэтому я догадаю, что в Windows 7 MediaElement использует MediaFoundation?

, поэтому нижняя строка в том, что мне нужно проверить в поле Windows XP с графикой 9400. Похоже, что полное оборудование будет невозможно (так как у нас нет MediaFoundation, и, следовательно, у нас нет DXVA2) ...

Спасибо снова за помощью!

2
ответ дан 16 December 2019 в 21:39
поделиться

Существует много коммерческих аппаратных средств, ускоренных фильтров DirectShow H264, доступных там. Некоторые используют DXVA, некоторые используют CUDA. Никто из них не свободен, но большинство из них не дороги. FFDShow и связанные с ними проекты FFMPEG великолепны, но они не будут абсолютно не делать HD H264 на процессоре Atom. (Если кто-то может доказать иначе, я хотел бы услышать от вас.)

Я занимаюсь воспроизведением HD H264 на той же ионной платформе, которую вы описали, используя DirectShow в XP. Это пограничное пограничное исполнение для 1080p, но может управлять им, если вы можете ограничить битрейт и не нужно делать много других процессоров или графических процессоров одновременно. 720P - это намного удобнее, особенно если вы можете получить с 24 или 30 кадров в секунду вместо 60.

от верхней части моей головки, кодеки, которые лучше всего работали на ионе H264, были MainConcept, Coreavc и Cyberlink.

Я бы также предложил попробовать VMR7 вместо VMR9, если это вариант для вас. Некоторые кодеки DXVA более надежны и имеют лучшую производительность с VMR7.

4
ответ дан 16 December 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: