Videorechthoeken in de samenstellingsruimte positioneren en verplaatsen
[De functie die is gekoppeld aan deze pagina, DirectShow, is een verouderde functie. Het is vervangen door MediaPlayer, IMFMediaEngineen Audio/Video Capture in Media Foundation. Deze functies zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan om nieuwe code te gebruiken MediaPlayer, IMFMediaEngine en Audio/Video Capture in Media Foundation in plaats van DirectShow, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]
Wanneer de VMR meerdere invoerstromen combineert, wordt elke stroom in een genormaliseerde rechthoek geplaatst, genaamd 'samenstellingsruimte'. Binnen de samenstellingsruimte vormen de coördinaten (0,0, 0.0) tot (1.0, 1.0) de zichtbare videorechthoek. Alle coördinaten die buiten deze rechthoek vallen, worden geknipt.
Een toepassing kan speciale effecten uitvoeren met het verplaatsen, uitrekken en verkleinen van de video vanuit een invoerstroom door de doelrechthoek in de samenstellingsruimte voor die stroom te wijzigen. Als de opgegeven rechthoek een andere grootte heeft dan de oorspronkelijke videorechthoek, wordt de systeemeigen video verkleind of uitgerekt zodat deze past. De doelrechthoek wordt opgegeven door de methode IVMRMixerControl::SetOutputRect aan te roepen.
Stel dat stream 0 (die overeenkomt met pin 0) de hoofdvideostream bevat en stream 1 (dat overeenkomt met pin 1) een secundaire video bevat. Stream 1 kan volledig buiten het scherm worden geplaatst door een genormaliseerde rechthoek op te geven van { -1.0f, 0.0f, 0.0f, 1.0f }. Stream 1 kan vervolgens worden verplaatst naar het zichtbare gebied door de linker- en rechterkant van de rechthoek te wijzigen bij opeenvolgende aanroepen naar SetOutputRect-:
Etiket | Waarde |
---|---|
Tijd | Rechthoek |
t + 0 | { -1.0f, 0.0f, 0.0f, 1,0f } |
t + 1 | { -0.9f, 0.0f, 0.1f, 1,0f } |
t + 2 | { -0.8f, 0.0f, 0.2f, 1,0f } |
... | ... |
t + 10 | { 0.0f, 0.0f, 1.0f, 1.0f } |
Op het moment t+10 is de video van stream 1 volledig zichtbaar. In dit voorbeeld werd de systeemeigen grootte van stream 1 gehandhaafd terwijl deze werd verplaatst. U kunt de rechthoek ook uitrekken of verkleinen om interessante effecten te produceren. U kunt de video ook verticaal spiegelen door een hogere waarde voor de bovenkant dan de onderkant op te geven of de video horizontaal te spiegelen door een hogere waarde voor links dan rechts op te geven.
Verwante onderwerpen