2017-03-03 1 views
0

J'expérimente Windows Media Foundation.Windows Media Foundation Positionner des vidéos dans EVR

J'ai créé une application par exemple comme décrit dans lien ci-dessous:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms703190(v=vs.85).aspx

Dans l'exemple ci-dessus, j'ai ajouté deux flux vidéo utilisant MFCreateAggregateSource

Dans le renderer EVR je suis en mesure d'entendre le son de les deux vidéos, mais je suis en mesure de voir une seule vidéo qui est d'abord chargé.

Je suis en train de placer les vidéos en utilisant séparément ci-dessous le code, de sorte que le vidéo sont affichés dans la fenêtre:

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(); 
} 

Mais je ne vois aucun effet de ce code sur la vidéo ou non Je ne suis pas en mesure de positionner deux flux vidéo dans le même lecteur séparément. Qu'est-ce que je fais mal, ou comment exactement cela se fait dans Windows Media Foundation.

Répondre

1

Les valeurs de MFVideoNormalizedRect sont dans la gamme de 0,0 à 1,0: MFVideoNormalizedRect

Exemple:

objRect1.left = 0,0; // doit être compris entre 0,0 et 1,0

objRect1.top = 0,0; // doit être compris entre 0,0 et 1,0

objRect1.right = 0,5; // doit être compris entre 0,0 et 1,0

objRect1.bottom = 0,5; // doit être compris entre 0,0 et 1,0