Bagikan melalui


Mengonfigurasi Pin Output Demux

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Audio/Video Capture di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Ketika demux MPEG-2 menerima paket data, MPEG-2 harus menentukan pin output mana yang harus mengurai dan mengirimkan data. Dalam mode aliran program, demux memetakan ID aliran ke pin output. Dalam mode aliran transportasi, ia memetakan PID ke pin output. Misalnya, dalam mode aliran transportasi, jika PID 0x31 dipetakan ke pin 0, maka setiap paket TS dengan nomor PID tersebut dirutekan ke pin output 0. Jika demux menerima paket yang ID aliran atau PID-nya tidak dipetakan ke pin output apa pun, demux hanya membuang paket.

Dalam mode penarikan, demux secara otomatis membuat pin output untuk aliran audio dan video dalam file, dan memetakan ID aliran ke pin.

Dalam mode pendorongan, pin output harus dikonfigurasi oleh aplikasi atau oleh filter lain. Untuk sumber televisi digital yang menggunakan Arsitektur Driver Siaran (BDA), filter penyedia jaringan berfungsi dengan filter TIF untuk mengonfigurasi demux. Aplikasi tidak perlu melakukan apa pun. Dalam skenario lain, aplikasi harus mengonfigurasi pin output.

Demux dimulai tanpa pin output. Untuk membuat pin output, panggil metode IMpeg2Demultiplexer::CreateOutputPin pada filter. Metode ini mengambil jenis media dan nama pin, dan mengembalikan penunjuk IPin . Jenis media digunakan saat pin tersambung ke filter lain, biasanya dekoder—contoh diberikan bagian Menggunakan Demux dengan Elementary Streams. Nama pin bisa apa pun yang Anda suka, kecuali bahwa nama pin duplikat tidak diizinkan.

Selanjutnya, tetapkan satu atau beberapa ID aliran atau PID ke pin output baru. Untuk aliran program, kueri pin untuk IMPEG2StreamIdMap dan panggil IMPEG2StreamIdMap::MapStreamId. Untuk aliran transportasi, kueri pin untuk IMPEG2PIDMap dan panggil IMPEG2PIDMap::MapPID.

Ada beberapa cara agar demux dapat mengurai paket TS. Untuk setiap pin output, metode penguraian ditentukan oleh parameter MediaSampleContent ke metode MapPID .

Nilai Deskripsi
MEDIA_ELEMENTARY_STREAM Filter ini memberikan payload PES. Dalam mode ini, filter memisahkan paket PES, sehingga filter hilir menerima aliran byte ES, tanpa header paket PES. (Aliran audio dan video saja.)
MEDIA_MPEG2_PSI Filter ini memberikan bagian PSI lengkap, seperti tabel PAT, tabel PMT, tabel CAT, dan sebagainya.
MEDIA_TRANSPORT_PAYLOAD Filter mengekstrak payload dari paket TS dan mengirimkannya tanpa penguraian lebih lanjut. Untuk aliran dasar, ini berarti demux akan mengirimkan seluruh paket PES, termasuk header paket PES.
MEDIA_TRANSPORT_PACKET Filter ini memberikan seluruh paket TS. Demux merutekan paket TS sesuai dengan PID mereka, tetapi tidak memeriksa atau memproses paket. Paket dengan kesalahan tidak difilter. Demux tidak mere-multipleks paket, dan aliran output yang dihasilkan bukan aliran transportasi MPEG-2 yang sesuai. Mode ini disebut mode pass through .

 

Untuk aliran program, demux selalu mengirimkan payload PES.

Menggunakan MPEG-2 Demultiplexer