Bagikan melalui


Metode IAMStreamConfig::GetStreamCaps (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.]

Metode GetStreamCaps mengambil serangkaian kemampuan format.

Sintaks

HRESULT GetStreamCaps(
  [in]  int           iIndex,
  [out] AM_MEDIA_TYPE **ppmt,
  [out] BYTE          *pSCC
);

Parameter

[in] iIndex

Menentukan kemampuan format untuk diambil, diindeks dari nol. Untuk menentukan jumlah kemampuan yang didukung pin, panggil metode IAMStreamConfig::GetNumberOfCapabilities .

[out] ppmt

Alamat penunjuk ke struktur AM_MEDIA_TYPE . Metode ini mengalokasikan struktur dan mengisinya dengan jenis media.

[out] pSCC

Penunjuk ke array byte yang dialokasikan oleh pemanggil. Untuk video, gunakan struktur VIDEO_STREAM_CONFIG_CAPS (lihat Keterangan). Untuk audio, gunakan struktur AUDIO_STREAM_CONFIG_CAPS . Untuk menentukan ukuran array yang diperlukan, panggil metode GetNumberOfCapabilities . Ukuran dikembalikan dalam parameter piSize .

Nilai kembali

Mengembalikan nilai HRESULT . Nilai yang mungkin termasuk yang berikut ini.

Menampilkan kode Deskripsi
S_FALSE
Indeks yang ditentukan terlalu tinggi.
S_OK
Berhasil.
E_INVALIDARG
Indeks tidak valid.
E_OUTOFMEMORY
Memori tidak cukup.
E_POINTER
Nilai pointer NULL.
VFW_E_NOT_CONNECTED
Pin input tidak tersambung.

Keterangan

Metode ini mengembalikan dua informasi:

  • Parameter pmt menerima struktur AM_MEDIA_TYPE yang diisi, yang menjelaskan satu format output yang didukung.
  • Parameter pSCC menerima struktur yang berisi informasi format tambahan. Untuk video, pSCC menerima struktur VIDEO_STREAM_CONFIG_CAPS . Untuk audio, ia menerima struktur AUDIO_STREAM_CONFIG_CAPS .
Catatan Penggunaan struktur VIDEO_STREAM_CONFIG_CAPS untuk mengonfigurasi perangkat video tidak digunakan lagi. Meskipun pemanggil harus mengalokasikan buffer, pemanggil harus mengabaikan konten setelah metode kembali. Perangkat pengambilan akan mengembalikan format yang didukung melalui parameter pmt .
 
Untuk mengonfigurasi pin output sehingga menggunakan format ini, panggil metode IAMStreamConfig::SetFormat dan teruskan nilai pmt.

Sebelum memanggil SetFormat, Anda dapat mengubah struktur AM_MEDIA_TYPE dalam pmt, menggunakan informasi di pSCC. Misalnya, pin audio mungkin mengembalikan jenis media default 44-kHz, stereo 16-bit dalam parameter pmt . Berdasarkan nilai yang dikembalikan dalam struktur AUDIO_STREAM_CONFIG_CAPS , Anda mungkin mengubah format ini menjadi mono 8-bit sebelum memanggil SetFormat.

Metode ini mengalokasikan memori untuk struktur AM_MEDIA_TYPE yang dikembalikan dalam parameter pmt . Pemanggil harus melepaskan memori, termasuk blok format. Anda dapat menggunakan fungsi pembantu DeleteMediaType di pustaka kelas dasar. Pemanggil harus mengalokasikan memori untuk parameter pSCC .

Pada beberapa filter kompresi, metode ini gagal jika pin input filter tidak tersambung.

Pengembang Filter: Untuk informasi selengkapnya tentang menerapkan metode ini, lihat Mengekspos Format Pengambilan dan Pemadatan.

Contoh

Contoh berikut mengambil format pertama yang didukung (indeks nol) pada pin output video lalu mengatur format ini pada pin.

C++
int iCount, iSize; BYTE *pSCC = NULL; AM_MEDIA_TYPE *pmt;

hr = pConfig-GetNumberOfCapabilities>(&iCount, &iSize);

pSCC = BYTE[iSize] baru; if (pSCC == NULL) { // TODO: Kesalahan kehabisan memori. }

// Get the first format. hr = pConfig->GetStreamCaps(0, &pmt, pSCC)); if (hr == S_OK) { // TODO: Examine the format. If it's not suitable for some // reason, call GetStreamCaps with the next index value (up // to iCount). Otherwise, set the format: hr = pConfig->SetFormat(pmt); if (FAILED(hr)) { // TODO: Error handling. } DeleteMediaType(pmt); } delete [] pSCC;

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header strmif.h (termasuk Dshow.h)
Pustaka Strmiids.lib

Lihat juga

Kode Kesalahan dan Keberhasilan

Antarmuka IAMStreamConfig