struktur AM_MEDIA_TYPE (strmif.h)
[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan 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 Pengambilan Audio/Video 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.]
Struktur AM_MEDIA_TYPE menjelaskan format sampel media.
Sintaks
typedef struct _AMMediaType {
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
BYTE *pbFormat;
} AM_MEDIA_TYPE;
Anggota
majortype
Pengidentifikasi unik global (GUID) yang menentukan jenis utama sampel media. Untuk daftar kemungkinan jenis utama, lihat Jenis Media.
subtype
GUID yang menentukan subjenis sampel media. Untuk daftar kemungkinan subjenis, lihat Jenis Media. Untuk beberapa format, nilainya mungkin MEDIASUBTYPE_None, yang berarti format tidak memerlukan subjenis.
bFixedSizeSamples
Jika TRUE, sampel berukuran tetap. Bidang ini hanya informasi. Untuk audio, umumnya diatur ke TRUE. Untuk video, biasanya TRUE untuk video yang tidak dikompresi dan FALSE untuk video terkompresi.
bTemporalCompression
Jika TRUE, sampel dikompresi menggunakan kompresi temporal (interframe). Nilai TRUE menunjukkan bahwa tidak semua bingkai adalah bingkai kunci. Bidang ini hanya informasi.
lSampleSize
Ukuran sampel dalam byte. Untuk data terkompresi, nilainya bisa nol.
formattype
GUID yang menentukan struktur yang digunakan untuk blok format. Anggota pbFormat menunjuk ke struktur format yang sesuai. Jenis format meliputi yang berikut ini:
Jenis format | Format struktur |
---|---|
|
|
|
|
|
|
|
|
|
Tidak ada. |
|
|
|
|
|
|
|
Tidak ada |
pUnk
Tidak digunakan. Atur ke NULL.
cbFormat
Ukuran blok format, dalam byte.
pbFormat
Penunjuk ke blok format. Jenis struktur ditentukan oleh anggota formattype . Struktur format harus ada, kecuali formattype GUID_NULL atau FORMAT_None.
Buffer pbFormat harus dialokasikan dengan memanggil CoTaskMemAlloc. Untuk merilis blok format, panggil FreeMediaType.
Keterangan
Ketika dua pin terhubung, mereka menegosiasikan jenis media, yang didefinisikan oleh struktur AM_MEDIA_TYPE . Jenis media menjelaskan format data yang akan ditukar filter. Jika filter tidak menyetujui jenis media, filter tidak dapat tersambung.
Jenis aliran ditentukan oleh dua GUID, yang disebut jenis utama dan subjenis. Jenis utama menentukan kategori umum, seperti video, audio, atau aliran byte. Subjenis mendefinisikan kategori yang lebih sempit dalam jenis utama. Misalnya, subjenis video mencakup RGB 8-bit, 16-bit, 24-bit, dan 32-bit.
Struktur AM_MEDIA_TYPE diikuti oleh blok data dengan panjang variabel yang berisi informasi khusus format. Anggota pbFormat menunjuk ke blok ini, yang disebut blok format. Tata letak blok format tergantung pada jenis data dalam aliran, dan ditentukan oleh anggota jenis format . Blok format mungkin NULL. Periksa anggota cbFormat untuk menentukan ukurannya. Transmisikan anggota pbFormat untuk mengakses blok format. Contohnya:
C++ |
---|
if (pmt->formattype == FORMAT_VideoInfo) { // Check the buffer size. if (pmt->cbFormat >= sizeof(VIDEOINFOHEADER)) { VIDEOINFOHEADER *pVih = reinterpret_cast<VIDEOINFOHEADER*>(pmt->pbFormat); /* Access VIDEOINFOHEADER members through pVih. */ } } |
Untuk mendapatkan informasi terperinci tentang jenis media tertentu untuk tujuan penelusuran kesalahan, gunakan metode DisplayType .
Persyaratan
Header | strmif.h (termasuk Dshow.h) |