Menggunakan Demux dengan Aliran PSI
[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.]
Untuk mendapatkan informasi PSI dari aliran transportasi MPEG-2 menggunakan filter demux MPEG-2, buat pin output pada demux dengan jenis media berikut:
- Jenis utama: KSDATAFORMAT_TYPE_MPEG2_SECTIONS
- Subjenis: MEDIASUBTYPE_None
- Jenis format: GUID_NULL
Kemudian panggil metode IMPEG2PIDMap::MapPID pin output dengan PID yang diinginkan dan bendera MEDIA_MPEG2_PSI.
// Query the demux filter for IMpeg2Demultiplexer.
IMpeg2Demultiplexer *pDemux = NULL;
hr = pFilter->QueryInterface(IID_IMpeg2Demultiplexer, (void**)&pDemux);
if (SUCCEEDED(hr))
{
// Define the media type.
AM_MEDIA_TYPE mt;
ZeroMemory(&mt, sizeof(AM_MEDIA_TYPE));
mt.majortype = KSDATAFORMAT_TYPE_MPEG2_SECTIONS;
mt.subtype = MEDIASUBTYPE_None;
// Create a new output pin.
IPin *pPin;
hr = pDemux->CreateOutputPin(&mt, L"PSI Pin", &pPin);
if (SUCCEEDED(hr))
{
// Map the PID.
IMPEG2PIDMap *pPidMap = NULL;
hr = pPin->QueryInterface(IID_IMPEG2PIDMap, (void**)&pPidMap);
if (SUCCEEDED(hr))
{
ULONG Pid[] = { 0x00 }; // Map any desired PIDs.
ULONG cPid = 1;
hr = pPidMap->MapPID(cPid, Pid, MEDIA_MPEG2_PSI);
pPidMap->Release();
}
pPin->Release();
}
pDemux->Release();
}
Setiap bagian PSI lengkap dikirimkan dalam satu sampel media. Untuk mengambil nomor PID yang terkait dengan bagian tabel, panggil IMediaSample2::GetProperties pada sampel media. PID diberikan dalam 13 bit rendah dari bendera dwTypeSpecificFlags dalam struktur AM_SAMPLE2_PROPERTIES . Ini berguna jika Anda memetakan beberapa PID PSI ke pin output yang sama.
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk