Configurazione dei pin di output Demux
[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.
Quando mpeg-2 riceve un pacchetto di dati, deve determinare quale pin di output deve analizzare e recapitare i dati. In modalità di flusso di programma, gli ID di flusso mappano gli ID di flusso ai pin di output. In modalità di flusso di trasporto esegue il mapping dei PID ai pin di output. Ad esempio, in modalità di flusso di trasporto, se piD 0x31 viene mappato al pin 0, ogni pacchetto TS con tale numero PID viene instradato al pin di output 0. Se il demux riceve un pacchetto il cui ID di flusso o PID non viene mappato a un pin di output, viene semplicemente rimosso il pacchetto.
In modalità pull, il demux crea automaticamente i pin di output per i flussi audio e video nel file e esegue il mapping degli ID di flusso ai pin.
In modalità push, i pin di output devono essere configurati dall'applicazione o da un altro filtro. Per le origini televisive digitali che usano l'architettura del driver di trasmissione (BDA), il filtro del provider di rete funziona con il filtro TIF per configurare l'demux. L'applicazione non deve eseguire alcuna operazione. In altri scenari, l'applicazione deve configurare i pin di output.
Il demux inizia senza pin di output. Per creare un pin di output, chiamare il metodo IMpeg2Demultiplexer::CreateOutputPin nel filtro. Questo metodo accetta un tipo di supporto e un nome pin e restituisce un puntatore IPin . Il tipo di supporto viene usato quando il pin si connette a un altro filtro, in genere un decodificatore, ovvero viene specificata la sezione Uso del Demux con flussi elementari. Il nome del pin può essere qualsiasi elemento simile, ad eccezione del fatto che i nomi di pin duplicati non sono consentiti.
Assegnare quindi uno o più ID di flusso o PID al nuovo pin di output. Per i flussi di programma, eseguire una query sul pin per IMPEG2StreamIdMap e chiamare IMPEG2StreamIdMap::MapStreamId. Per i flussi di trasporto, eseguire una query sul pin per IMPEG2PIDMap e chiamare IMPEG2PIDMap::MapPID.
Esistono diversi modi per analizzare i pacchetti TS. Per ogni pin di output, il metodo di analisi viene determinato dal parametro MediaSampleContent al metodo MapPID .
Valore | Descrizione |
---|---|
MEDIA_ELEMENTARY_STREAM | Il filtro fornisce payload PES. In questa modalità, il filtro depacketizza i pacchetti PES, quindi il filtro downstream riceve il flusso di byte ES, senza le intestazioni del pacchetto PES. (Solo flussi audio e video). |
MEDIA_MPEG2_PSI | Il filtro offre sezioni PSI complete, ad esempio tabelle PAT, tabelle PMT, tabelle CAT e così via. |
MEDIA_TRANSPORT_PAYLOAD | Il filtro estrae i payload dai pacchetti TS e li recapita senza ulteriori analisi. Per i flussi elementari, ciò significa che il demux fornirà interi pacchetti PES, incluse le intestazioni dei pacchetti PES. |
MEDIA_TRANSPORT_PACKET | Il filtro fornisce interi pacchetti TS. Il demux indirizza i pacchetti TS in base ai propri ID, ma non esamina o elabora i pacchetti. I pacchetti con errori non vengono filtrati. La demux non ri-multiplex i pacchetti e il flusso di output risultante non è un flusso di trasporto MPEG-2 conforme. Questa modalità viene chiamata modalità pass-through . |
Per i flussi di programma, il demux offre sempre payload PES.
Argomenti correlati