Воссоздание театрального режима с DirectX - PullRequest
5 голосов
/ 14 декабря 2011

Мне нужно одновременно отображать видео, которое воспроизводится в моем приложении, на весь экран на большом мониторе.На некоторых видеокартах это называется режимом театра и настраивается с помощью инструмента, поставляемого производителем карты.

Я хотел бы сделать это только с программным обеспечением.Могу ли я сделать это с DirectX?

Моя идея состоит в том, чтобы взять текущее активное видео, воспроизводимое с использованием DirectShow, и перекрасить его на втором экране (в соответствии с настройками пользователя) в полноэкранном режиме.

Какие технологии или методы я бы использовал для этого?

1 Ответ

2 голосов
/ 16 декабря 2011

Простой способ - разделить закодированное видео на две ветви и использовать два видео рендерера, установленных для представления видео на разных мониторах.Один рендерер может быть частью пользовательского интерфейса вашего приложения, другой может развернуть полноэкранный режим на большом дополнительном мониторе.

enter image description here

Разделение кодированного видео дает вам возможность использовать аппаратное декодирование (DXVA), если оно доступно.Вы можете предпочесть использовать только программный декодер и разделить уже декодированное видео - это также сработает.

Возможно, вы захотите дополнительно внедрить фильтр, который бы отдельно временно отключал один или другой рендерер, например, путемпрекращение прохождения образцов мультимедиа.

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

...