Управление соотношением сторон в DirectShow (полноэкранный режим) - PullRequest
2 голосов
/ 21 июля 2011

Я использую DirectShow с простым подходом (IGraphBuilder RenderFile) и пытаюсь контролировать все остальное с помощью дополнительных интерфейсов.

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

Я обнаружил, что есть как минимум две сложные опции: для видео VMR и с добавлением оверлейного микшера, но есть ли известный способ сделать это для IGraphBuilder 'RenderFile video?

1 Ответ

1 голос
/ 16 сентября 2011

Когда вы делаете IGraphBuilder :: RenderFile, он внутренне добавляет фильтр видео рендерера к графику. Обычно это VMR-7 Video Renderer Filter :

В Windows XP и более поздних версиях Video Mixing Renderer 7 (VMR-7) является видео рендерер по умолчанию. Это называется VMR-7, потому что внутренне это использует DirectDraw 7.

На этом этапе вы можете перечислить фильтры графа, найти VMR-7 и использовать его интерфейсы, такие как IVMRAspectRatioControl , чтобы указать интересующий режим.

...