enumerasi _MFT_INPUT_STREAM_INFO_FLAGS (mftransform.h)
Menjelaskan aliran input pada transformasi Media Foundation (MFT).
Sintaks
typedef enum _MFT_INPUT_STREAM_INFO_FLAGS {
MFT_INPUT_STREAM_WHOLE_SAMPLES = 0x1,
MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 0x2,
MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE = 0x4,
MFT_INPUT_STREAM_HOLDS_BUFFERS = 0x8,
MFT_INPUT_STREAM_DOES_NOT_ADDREF = 0x100,
MFT_INPUT_STREAM_REMOVABLE = 0x200,
MFT_INPUT_STREAM_OPTIONAL = 0x400,
MFT_INPUT_STREAM_PROCESSES_IN_PLACE = 0x800
} ;
Konstanta
MFT_INPUT_STREAM_WHOLE_SAMPLES Nilai: 0x1 Setiap sampel media (antarmuka IMFSample ) data input harus berisi unit data yang lengkap dan tidak terputus. Definisi unit data tergantung pada jenis media: Untuk video yang tidak dikompresi, bingkai video; untuk data terkompresi, paket terkompresi; untuk audio yang tidak dikompresi, satu bingkai audio. Untuk format audio yang tidak dikompresi, bendera ini selalu tersirat. (Valid untuk mengatur bendera, tetapi tidak diperlukan.) Bingkai audio yang tidak dikompresi tidak boleh menjangkau lebih dari satu sampel media. |
MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER Nilai: 0x2 Setiap sampel media yang disediakan klien sebagai input harus berisi tepat satu unit data, seperti yang didefinisikan untuk bendera MFT_INPUT_STREAM_WHOLE_SAMPLES. Jika bendera ini ada, bendera MFT_INPUT_STREAM_WHOLE_SAMPLES juga harus ada. MFT yang memproses audio yang tidak dikompresi tidak boleh mengatur bendera ini. MFT harus menerima buffer yang berisi lebih dari satu bingkai audio, untuk efisiensi. |
MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE Nilai: 0x4 Semua sampel input harus berukuran sama. Ukuran diberikan dalam anggota cbSize dari struktur MFT_INPUT_STREAM_INFO . MFT harus memberikan nilai ini. Selama pemrosesan, MFT harus memverifikasi ukuran sampel input, dan dapat menghilangkan sampel dengan ukuran yang salah. |
MFT_INPUT_STREAM_HOLDS_BUFFERS Nilai: 0x8 MFT mungkin menyimpan satu atau beberapa sampel input setelah IMFTransform::P rocessOutput dipanggil. Jika bendera ini ada, anggota hnsMaxLatency dari struktur MFT_INPUT_STREAM_INFO memberikan latensi maksimum, dan anggota cbMaxLookahead memberikan jumlah maksimum byte lookahead. |
MFT_INPUT_STREAM_DOES_NOT_ADDREF Nilai: 0x100 MFT tidak menyimpan sampel input setelah metode IMFTransform::P rocessInput kembali. Ini merilis sampel sebelum metode ProcessInput kembali. Jika bendera ini tidak ada, MFT mungkin menyimpan jumlah referensi pada sampel yang diteruskan ke metode ProcessInput . Klien tidak boleh menggunakan kembali atau menghapus memori buffer hingga MFT merilis penunjuk IMFSample sampel. Jika bendera ini tidak ada, bendera ini tidak menjamin bahwa MFT menyimpan jumlah referensi pada sampel input. Ini berlaku untuk MFT untuk merilis sampel input di ProcessInput meskipun MFT tidak mengatur bendera ini. Namun, mengatur bendera ini mungkin memungkinkan klien untuk mengoptimalkan caranya menggunakan kembali buffer. MFT tidak boleh mengatur bendera ini jika pernah berpegang pada sampel input setelah kembali dari ProcessInput. |
MFT_INPUT_STREAM_REMOVABLE Nilai: 0x200 Aliran input ini dapat dihapus dengan memanggil IMFTransform::D eleteInputStream. |
MFT_INPUT_STREAM_OPTIONAL Nilai: 0x400 Aliran input ini bersifat opsional. Transformasi dapat menghasilkan output tanpa menerima input dari aliran ini. Pemanggil dapat membatalkan pilihan aliran dengan tidak mengatur jenis media atau dengan mengatur jenis media NULL . Dimungkinkan untuk setiap aliran input pada transformasi menjadi opsional, tetapi setidaknya satu input harus dipilih untuk menghasilkan output. |
MFT_INPUT_STREAM_PROCESSES_IN_PLACE Nilai: 0x800 MFT dapat melakukan pemrosesan di tempat. Dalam mode ini, MFT langsung memodifikasi buffer input. Ketika klien memanggil ProcessOutput, sampel yang sama yang dikirimkan ke aliran ini dikembalikan dalam aliran output yang memiliki pengidentifikasi aliran yang cocok. Bendera ini menyiratkan bahwa MFT memegang buffer input, sehingga bendera ini tidak dapat dikombinasikan dengan bendera MFT_INPUT_STREAM_DOES_NOT_ADDREF. Jika bendera ini ada, MFT harus mengatur bendera MFT_OUTPUT_STREAM_PROVIDES_SAMPLES atau MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES untuk aliran output yang sesuai dengan aliran input ini. (Lihat IMFTransform::GetOutputStreamInfo). |
Keterangan
Sebelum klien menetapkan jenis media pada transformasi, satu-satunya bendera yang dijamin akurat adalah bendera MFT_INPUT_STREAM_REMOVABLE dan MFT_INPUT_STREAM_OPTIONAL. Untuk semua bendera lainnya, klien harus terlebih dahulu mengatur jenis media pada setiap aliran non-opsional.
Dalam model pemrosesan default, MFT menyimpan jumlah referensi pada sampel yang diterimanya di ProcessInput. Ini tidak memproses sampel segera di dalam ProcessInput. Ketika ProcessOutput dipanggil, MFT menghasilkan data output lalu membuang sampel input. Variasi berikut pada model ini ditentukan:
- Jika MFT tidak pernah memegang sampel input antara ProcessInput dan ProcessOutput, MFT dapat mengatur MFT_INPUT_STREAM_DOES_NOT_ADDREF.
- Jika MFT menyimpan beberapa sampel input di luar panggilan berikutnya ke ProcessOutput, MFT dapat mengatur MFT_INPUT_STREAM_HOLDS_BUFFERS.
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 |