Как настроить видео под заданный размер в режиме без рендеринга VMR9?

Я хочу настроить видео для отображения в указанном окне, например 320*240.

Я должен использовать режим без рендеринга VMR-9 для рендеринга на поверхность. Я использую метод IVMRMixerControl9->SetOutputRect() для настройки размера видео. Поэтому я должен получить собственный размер видео. Но я не знаю как.

Метод GetOutputRect всегда возвращает 0 и 1. Методы get_VideoHeight и get_VideoWidth возвращают E_NOINTERFACE. Но я создаю filterGraph с видеофайлом.

У меня неправильная идея или есть другой метод?

Заранее спасибо!


person Nickolas    schedule 14.02.2011    source источник


Ответы (1)


Не уверен, что это поможет вам, но вы смотрели на безоконный режим VMR? Вы можете указать дескриптор окна (например, UserControl) для показа видео. В интерфейсе IVMRWindowlessControl9 вы можете вызвать GetNativeVideoSize, чтобы получить собственный размер окна и установить размер оттуда, а затем вызвать SetVideoPosition, чтобы указать, куда должно идти видео. В моем случае я использую ClientRectangle UserControl в качестве прямоугольника назначения и собственный размер видео в качестве исходного прямоугольника.

person David Paxson    schedule 15.02.2011
comment
Да! Он работает хорошо в вашем методе. Я создаю еще один filtergraph и получаю собственный размер окна. Похоже, GetNativeVideoSize и Get_VideoHeight не могут работать в режиме без рендеринга. Большое спасибо, Давид! - person Nickolas; 16.02.2011