Condividi tramite


Combinazione non quadrata

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Questo argomento si applica a Windows XP Service Pack 2 o versione successiva.

Quando vmR-9 combina due o più flussi, esistono due punti in cui il ridimensionamento può verificarsi: quando il mixer esegue il composito dei flussi di input e quando l'allocatore-relatore esegue il rendering dell'immagine composita.

operazioni di combinazione di vmr

Le versioni precedenti di VMR-9 hanno sempre composito i flussi di input usando una proporzioni di pixel quadrata (1:1) (PAR), anche quando è presente un singolo flusso video. Se il flusso di input aveva pixel non quadrati, questo ha causato un'operazione di ridimensionamento non necessaria. La scalabilità deve essere evitata il più possibile, naturalmente, perché degrada la qualità dell'immagine finale.

A partire da Windows XP Service Pack 2, vmR-9 supporta due modi diversi per evitare il problema del doppio ridimensionamento:

  • Implementare un relatore allocatore personalizzato e supportare l'interfaccia IVMRSurfaceAllocatorEx9 .
  • Usare la modalità di combinazione non quadrata.

Questa sezione descrive la modalità di combinazione non quadrata. Le applicazioni possono combinare entrambe le tecniche.

Funzionamento della combinazione non quadrata

In modalità di combinazione non quadrata, VMR-9 seleziona un flusso di input che sia la dimensione di destinazione e PAR. Il mixer di VMR non ridimensiona il video da tale flusso o da altri flussi con le stesse dimensioni dell'immagine e PAR. I flussi con dimensioni o proporzioni diverse vengono ridimensionati in modo da corrispondere alla par di destinazione e alla casella di posta in corrispondenza delle dimensioni dell'immagine di output finale.

La scelta dei flussi dipende dalla modalità di combinazione corrente:

  • La modalità di combinazione YUV è limitata a un flusso video sul pin 0. Gli altri pin possono avere sottopicture o flussi chiusi didascalia. Pertanto, vmR-9 seleziona sempre il pin 0 per le dimensioni dell'immagine di destinazione e PAR.
  • In modalità di combinazione RGB, VMR seleziona il flusso con le dimensioni più grandi dell'immagine. Se c'è più di uno, seleziona quello con l'ordine z più alto; e se c'è ancora un tie, seleziona il flusso con il numero di pin più basso.

Esempi di operazione

Esempio 1. Stream 0 è 720 x 480 pixel con proporzioni immagine pari a 16:9. Stream 1 è un 640 x 480 pixel con proporzioni immagine pari a 4:3.

In questo esempio il flusso 0 ha la dimensione più grande dell'immagine, quindi VMR sceglie questo flusso, indipendentemente dalla modalità di combinazione RGB o dalla modalità di combinazione YUB. Par è 32:27 (16:9/720:480), il che significa che l'immagine deve essere estesa orizzontalmente per produrre la corretta proporzioni dell'immagine 16:9.

Per corrispondere alla par di destinazione, il flusso del mixer VMR scala 1 per il rapporto inverso (27:32), causando un'immagine da 540 x 480. I due flussi vengono quindi compositi su una superficie. Per visualizzare correttamente l'immagine risultante, il relatore allocatore deve estendere l'immagine orizzontalmente in modo da adattare le proporzioni dell'immagine 16:9.

esempio 1.

Esempio 2. Stream 0 è 720 x 480 pixel con proporzioni immagine pari a 16:9. Stream 1 è un 1024 x 768 pixel con proporzioni immagine pari a 4:3.

Se vmR-9 usa la modalità di combinazione YUV, seleziona sempre stream 0. Pertanto, estende il flusso da 1 a 540 x 480 pixel, in modo da corrispondere all'par di flusso 0.

Se vmR-9 usa la modalità di combinazione RGB, seleziona il flusso 1 come destinazione, perché tale flusso ha le dimensioni maggiori dell'immagine. Estende il flusso 0 a una dimensione dell'immagine di 1024 x 576 pixel. Si noti che in questo caso l'immagine composita ha una PAR di 1:1, quindi l'allocatore-relatore non deve correggere per pixel non quadrati. Potrebbe comunque essere necessario estendere il video per tenere conto del rettangolo di destinazione.

Uso della modalità di combinazione non quadrata

La modalità di combinazione non quadrata è consigliata se una delle condizioni seguenti è true:

  • L'applicazione non invia mai più di un flusso video alla VMR-9.
  • L'applicazione esegue il rendering di file DVD, televisione o ms-dvr. È anche consigliabile usare la modalità di combinazione YUV in questo caso, se l'hardware grafico lo supporta.

Se l'applicazione combina più flussi video che possono avere dimensioni diverse di immagine o proporzioni pixel, è consigliabile usare la modalità di combinazione quadrata predefinita.

Per configurare la modalità di combinazione non quadrata, il grafico del filtro deve essere arrestato e tutti i pin di input disconnessi nella vmR-9. Chiamare quindi IVMRMixerControl9::SetMixingPrefs con il flag di MixerPref9_NonSquareMixing:

DWORD dwPrefs;
pMixControl->GetMixingPrefs(&dwPrefs);  
dwPrefs |= MixerPref9_NonSquareMixing;
pMixControl->SetMixingPrefs(dwPrefs);

Nota

Se si combina il flag di MixerPref9_NonSquareMixing con il flag di MixerPref9_ARAdjustXorY, vmR-9 ignora il flag MixerPref9_ARAdjustXorY.

 

Se l'applicazione usa un relatore allocatore personalizzato con modalità di combinazione non quadrata, tenere presente che l'immagine composita potrebbe avere una PAR non quadrata. L'allocatore-relatore deve ridimensionare l'immagine in un quadrato (1:1) PAR.

Bitmap statiche

Se si usa l'interfaccia IVMRMixerBitmap9 per combinare una bitmap statica nel video, è consigliabile considerare la bitmap come un secondo flusso video ai fini della modalità di combinazione di VMR.

VmR considera la bitmap come con la stessa PAR della destinazione. Non ridimensiona la bitmap per modificare il rapporto di proporzioni del pixel di destinazione. Nella configurazione predefinita di VMR, la destinazione ha una par 1:1 che corrisponde alla maggior parte delle bitmap. In modalità di combinazione non quadrata, la destinazione potrebbe avere pixel non quadrati. Per assicurarsi che la bitmap venga visualizzata correttamente, l'applicazione deve fornire un'immagine la cui PAR corrisponde alla par di destinazione.

Uso della modalità di combinazione di VMR