Позиция видео Windows Media Foundation в EVR

Я экспериментирую с Windows Media Foundation.

Я создал один пример приложения, как описано в приведенной ниже ссылке:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms703190(v=vs.85).aspx

В приведенном выше примере я добавил два видеопотока, используя MFCreateAggregateSource

В средстве визуализации EVR я могу слышать звук обоих видео, но я могу видеть только одно видео, которое загружается первым.

Я пытаюсь расположить видео отдельно, используя приведенный ниже код, чтобы оба видео отображались в окне:

if (status == MF_TOPOSTATUS_READY)
{

HRESULT hr1 = MFGetService(m_pSession, MR_VIDEO_MIXER_SERVICE,IID_PPV_ARGS(&m_pVideoMixerControl));

MFVideoNormalizedRect objRect1;
objRect1.left = 0;
objRect1.top = 0;
objRect1.right = 100;
objRect1.bottom = 100;
m_pVideoMixerControl->SetStreamOutputRect(0, &objRect1);

MFVideoNormalizedRect objRect2;
objRect2.left = 105;
objRect2.top = 0;
objRect2.right = 200;
objRect2.bottom = 200;
m_pVideoMixerControl->SetStreamOutputRect(1, &objRect2);

hr = StartPlayback();
}

Но я не вижу никакого влияния этого кода на видео или я не могу позиционировать два видеопотока в одном плеере отдельно.

Что я делаю не так, или как именно это делается в Windows Media Foundation.


person User7723337    schedule 03.03.2017    source источник


Ответы (1)


Значения MFVideoNormalizedRect находятся в диапазоне от 0,0 до 1,0: MFVideoNormalizedRect

Пример :

objRect1.left = 0,0; // должно быть в диапазоне от 0,0 до 1,0

objRect1.top = 0,0; // должно быть в диапазоне от 0,0 до 1,0

objRect1.right = 0,5; // должно быть в диапазоне от 0,0 до 1,0

objRect1.bottom = 0,5; // должно быть в диапазоне от 0,0 до 1,0

person mofo77    schedule 04.03.2017