METODE IMFTransform::GetOutputAvailableType (mftransform.h)

Mendapatkan jenis media yang tersedia untuk aliran output pada transformasi Media Foundation (MFT) ini.

Sintaks

HRESULT GetOutputAvailableType(
  [in]  DWORD        dwOutputStreamID,
  [in]  DWORD        dwTypeIndex,
  [out] IMFMediaType **ppType
);

Parameter

[in] dwOutputStreamID

Pengidentifikasi aliran output. Untuk mendapatkan daftar pengidentifikasi aliran, panggil IMFTransform::GetStreamIDs.

[in] dwTypeIndex

Indeks jenis media yang akan diambil. Jenis media diindeks dari nol dan dikembalikan dalam perkiraan urutan preferensi.

[out] ppType

Menerima penunjuk ke antarmuka IMFMediaType . Pemanggil harus merilis antarmuka.

Nilai kembali

Metode mengembalikan HRESULT. Nilai yang mungkin termasuk, tetapi tidak terbatas pada, yang ada dalam tabel berikut.

Menampilkan kode Deskripsi
S_OK
Metode berhasil.
E_NOTIMPL
MFT tidak memiliki daftar jenis output yang tersedia.
MF_E_INVALIDSTREAMNUMBER
Pengidentifikasi aliran tidak valid.
MF_E_NO_MORE_TYPES
Parameter dwTypeIndex berada di luar rentang.
MF_E_TRANSFORM_TYPE_NOT_SET
Anda harus mengatur jenis input sebelum mengatur jenis output.

Keterangan

MFT mendefinisikan daftar jenis media yang tersedia untuk setiap aliran output dan mengurutkannya berdasarkan preferensi. Metode ini menghitung jenis media yang tersedia untuk aliran output. Untuk menghitung jenis yang tersedia, tambahkan dwTypeIndex hingga metode mengembalikan MF_E_NO_MORE_TYPES.

Mengatur jenis media pada satu aliran dapat mengubah jenis yang tersedia untuk aliran lain (atau mengubah urutan preferensi). Namun, MFT tidak diperlukan untuk memperbarui daftar jenis yang tersedia secara dinamis. Satu-satunya cara terjamin untuk menguji apakah Anda dapat mengatur jenis input tertentu adalah dengan memanggil IMFTransform::SetOutputType.

Dalam beberapa kasus, MFT tidak dapat mengembalikan daftar jenis output hingga satu atau beberapa jenis input diatur. Jika demikian, metode mengembalikan MF_E_TRANSFORM_TYPE_NOT_SET.

MFT tidak diperlukan untuk menerapkan metode ini. Namun, sebagian besar MFTs harus menerapkan metode ini, kecuali jenis yang didukung sederhana dan dapat ditemukan melalui fungsi MFTGetInfo .

Metode ini dapat mengembalikan jenis media parsial . Jenis media parsial berisi deskripsi format yang tidak lengkap, dan digunakan untuk memberikan petunjuk kepada pemanggil. Misalnya, jenis parsial mungkin hanya menyertakan jenis utama dan GUID subjenis. Namun, setelah klien menetapkan jenis input pada MFT, MFT umumnya harus mengembalikan setidaknya satu jenis output lengkap, yang dapat digunakan tanpa modifikasi lebih lanjut. Untuk informasi selengkapnya, lihat Tipe Media Lengkap dan Parsial.

Beberapa MFT tidak dapat memberikan daftar jenis output yang akurat sampai MFT menerima sampel input pertama. Misalnya, MFT mungkin perlu membaca header paket pertama untuk menyimpulkan format. MFT harus menangani situasi ini sebagai berikut:

  1. Sebelum MFT menerima input apa pun, MFT menawarkan daftar satu atau beberapa jenis output yang mungkin dapat dihasilkan. Misalnya, dekoder MPEG-2 mungkin mengembalikan jenis media yang menjelaskan profil utama MPEG-2/tingkat utama.
  2. Klien memilih salah satu jenis ini (umumnya yang pertama) dan mengaturnya pada aliran output.
  3. Klien memberikan sampel input pertama dengan memanggil IMFTransform::P rocessInput.
  4. Jika jenis output tidak sesuai dengan data input, transformasi memberi sinyal perubahan format dalam metode ProcessOutput . Untuk informasi selengkapnya tentang perubahan format, lihat IMFTransform::P rocessOutput.
  5. Panggilan GetOutputAvailableType lagi. Pada titik ini, metode harus mengembalikan daftar jenis yang diperbarui yang mencerminkan data input.
  6. Klien memilih jenis output baru dari daftar ini dan memanggil SetOutputType.
Jika MFT_UNIQUE_METHOD_NAMES didefinisikan sebelum menyertakan mftransform.h, metode ini diganti namanya menjadi MFTGetOutputAvailableType. Lihat Membuat Objek DMO/MFT Hibrid.

Catatan Implementasi

Jika MFT menyimpan jenis media secara internal, MFT harus mengembalikan klon jenis media, bukan penunjuk ke jenis aslinya. Jika tidak, pemanggil dapat memodifikasi jenis dan mengubah status internal MFT.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header mftransform.h
Pustaka Mfuuid.lib

Lihat juga

IMFTransform

Transformasi Media Foundation