struktur MFT_OUTPUT_DATA_BUFFER (mftransform.h)

Berisi informasi tentang buffer output untuk transformasi Media Foundation. Struktur ini digunakan dalam metode IMFTransform::P rocessOutput .

Sintaks

typedef struct _MFT_OUTPUT_DATA_BUFFER {
  DWORD         dwStreamID;
  IMFSample     *pSample;
  DWORD         dwStatus;
  IMFCollection *pEvents;
} MFT_OUTPUT_DATA_BUFFER, *PMFT_OUTPUT_DATA_BUFFER;

Anggota

dwStreamID

Pengidentifikasi aliran output. Sebelum memanggil ProcessOutput, atur anggota ini ke pengidentifikasi aliran yang valid.

Pengecualian: Jika metode IMFTransform::GetStreamIDs mengembalikan E_NOTIMPL, MFT mengabaikan anggota ini dan menggunakan indeks array pOutputSamples dalam metode ProcessOutput sebagai pengidentifikasi aliran. Dengan kata lain, ia menggunakan elemen pertama dalam array untuk aliran 0, yang kedua untuk aliran 1, dan sebagainya. Disarankan (tetapi tidak diperlukan) bahwa pemanggil mengatur dwStreamID sama dengan indeks array dalam kasus ini.

pSample

Penunjuk ke antarmuka IMFSample . Sebelum memanggil ProcessOutput, atur anggota ini sama dengan penunjuk IMFSample atau NULL yang valid. Lihat Keterangan untuk informasi selengkapnya.

dwStatus

Sebelum memanggil ProcessOutput, atur anggota ini ke nol. Ketika metode kembali, MFT mungkin mengatur anggota yang sama dengan nilai dari enumerasi _MFT_OUTPUT_DATA_BUFFER_FLAGS . Jika tidak, MFT membiarkan anggota ini sama dengan nol.

pEvents

Sebelum memanggil ProcessOutput, atur anggota ini ke NULL. Pada output, MFT mungkin mengatur anggota ini ke penunjuk antarmuka IMFCollection yang valid. Penunjuk mewakili collecton yang berisi nol atau lebih peristiwa. Untuk mendapatkan setiap peristiwa, panggil IMFCollection::GetElement dan kueri pointer IUnknown yang dikembalikan untuk antarmuka IMFMediaEvent . Ketika metode ProcessOutput kembali, pemanggil bertanggung jawab untuk merilis penunjuk IMFCollection jika penunjuk bukan NULL.

Keterangan

Anda harus menyediakan struktur MFT_OUTPUT_DATA_BUFFER untuk setiap aliran output yang dipilih.

MFTs dapat mendukung dua model alokasi yang berbeda untuk sampel output:

  • MFT mengalokasikan sampel output.
  • Klien mengalokasikan sampel output.
Untuk menemukan model mana yang didukung MFT untuk aliran output tertentu, panggil IMFTransform::GetOutputStreamInfo dan periksa nilai dwFlags.
Bendera Model Alokasi
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES MFT mengalokasikan sampel output untuk aliran. Atur pSample ke NULL untuk aliran ini.
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES MFT mendukung kedua model alokasi.
Keduanya (default) Klien harus mengalokasikan sampel output untuk aliran.
 

Perilaku ProcessOutput tergantung pada nilai awal pSample dan nilai parameter dwFlags dalam metode ProcessOutput .

  • Jika pSampleadalah NULL dan dwFlags berisi bendera MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER, MFT akan membuang data output.

    Pembatasan: Aliran output ini harus memiliki bendera MFT_OUTPUT_STREAM_DISCARDABLE atau MFT_OUTPUT_STREAM_LAZY_READ. (Untuk mendapatkan bendera untuk aliran output, panggil metode IMFTransform::GetOutputStreamInfo .)

  • Jika pSampleadalah NULL dan dwFlags tidak berisi MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER, MFT menyediakan sampel untuk data output. MFT mengatur pSample untuk menunjuk ke sampel yang disediakannya. MFT dapat mengalokasikan sampel baru atau menggunakan kembali sampel input.

    Pembatasan: Aliran output ini harus memiliki bendera MFT_OUTPUT_STREAM_PROVIDES_SAMPLES atau MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES.

  • Jika pSample bukan NULL, MFT menggunakan sampel yang disediakan oleh pemanggil.

    Pembatasan: Aliran output ini tidak boleh memiliki bendera MFT_OUTPUT_STREAM_PROVIDES_SAMPLES.

Kombinasi lainnya tidak valid dan menyebabkan ProcessOutput mengembalikan E_INVALIDARG.

Setiap panggilan ke ProcessOutput dapat menghasilkan nol atau lebih peristiwa dan hingga satu sampel per aliran output.

Persyaratan

   
Klien minimum yang didukung Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Header mftransform.h

Lihat juga

IMFTransform::P rocessOutput

Struktur Yayasan Media

Transformasi Media Foundation