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
FORMAT_DvInfo

DVINFO

FORMAT_MPEG2Video

MPEG2VIDEOINFO

FORMAT_MPEGStreams

AM_MPEGSYSTEMTYPE

FORMAT_MPEGVideo

MPEG1VIDEOINFO

FORMAT_None
Tidak ada.
FORMAT_VideoInfo

VIDEOINFOHEADER

FORMAT_VideoInfo2

VIDEOINFOHEADER2

FORMAT_WaveFormatEx

WAVEFORMATEX

GUID_NULL
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. */
    }
}
Dalam beberapa situasi, Anda dapat mengatur blok format ke NULL dan jenis format ke GUID_NULL, menghasilkan jenis media parsial. Ini memungkinkan Anda menentukan rentang kemungkinan format. Misalnya, Anda dapat menentukan RGB 24-bit (MEDIASUBTYPE_RGB24) tanpa memberikan lebar atau tinggi yang tepat.

Untuk mendapatkan informasi terperinci tentang jenis media tertentu untuk tujuan penelusuran kesalahan, gunakan metode DisplayType .

Persyaratan

   
Header strmif.h (termasuk Dshow.h)

Lihat juga

Tentang Tipe Media

Struktur DirectShow

Fungsi Jenis Media

Jenis Media