MFT_MESSAGE_COMMAND_DRAIN

Meminta transformasi Media Foundation (MFT) untuk menguras semua data yang disimpan.

Parameter Pesan

Tidak ada.

Keterangan

Untuk mengirim pesan ini, panggil IMFTransform::P rocessMessage.

Setelah pesan ini dikirim, aliran input yang ditentukan tidak menerima input sampai MFT memproses semua data dari panggilan sebelumnya ke IMFTransform::P rocessInput.

Proses pengurasan sedikit bervariasi antara MFTs sinkron dan MFTs asinkron:

MFTs sinkron

  1. Setelah klien mengirim pesan ini, klien memanggil IMFTransform::P rocessOutput dalam perulangan, hingga ProcessOutput mengembalikan kode kesalahan MF_E_TRANSFORM_NEED_MORE_INPUT.
  2. Selama MFT masih memiliki data untuk diproses, panggilan lebih lanjut ke ProcessInput akan gagal. MFT terus menghasilkan output sampai menggunakan semua data yang disimpan. MFT membuang data apa pun yang tidak dapat diproses menjadi sampel output lengkap. (Misalnya, bingkai video parsial harus dihilangkan.)

MFTs asinkron

  1. MFT terus mengirim peristiwa METransformHaveOutput sampai tidak memiliki data lagi untuk diproses. Ini tidak mengirim peristiwa METransformNeedInput selama waktu ini.
  2. Setelah MFT mengirimkan peristiwa METransformHaveOutput terakhir, MFT mengirimkan peristiwa METransformDrainComplete .
  3. Setelah pengurasan selesai, MFT tidak mengirim peristiwa METransformNeedInput lain sampai menerima pesan MFT_MESSAGE_NOTIFY_START_OF_STREAM dari klien.

Setelah klien menguras MFT, klien dapat mengirim lebih banyak data input. Sampel pertama setelah operasi pengurasan harus memiliki atribut penghentian (atribut MFSampleExtension_Discontinuity ).

Catatan

Versi sebelumnya dari dokumentasi ini menyatakan bahwa parameter peristiwa ulParam adalah anggota enumerasi _MFT_DRAIN_TYPE . Itu tidak benar. ulParam berisi pengidentifikasi aliran.

 

Implementasi

MFT asinkron harus selalu mengembalikan METransformDrainComplete setelah dikosongkan.

MFT sinkron dapat mengabaikan pesan ini dan mengembalikan S_OK jika kondisi berikut ini benar:

  • MFT tidak pernah menyimpan lebih dari satu sampel input pada satu waktu.
  • Setiap sampel input menghasilkan satu sampel output.

Jika tidak, MFT sinkron harus mengimplementasikan pesan ini.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung
Windows Server 2008 [hanya aplikasi desktop]
Header
Mftransform.h

Lihat juga

MFT_MESSAGE_TYPE

MFTs asinkron