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.
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.
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 |