METODE IMFMediaStream::RequestSample (mfidl.h)

Meminta sampel dari sumber media.

Sintaks

HRESULT RequestSample(
  [in] IUnknown *pToken
);

Parameter

[in] pToken

Arahkan ke antarmuka IUnknown ke objek yang digunakan sebagai token untuk permintaan. Pemanggil harus mengimplementasikan objek ini. Parameter ini bisa NULL. Lihat Keterangan.

Mengembalikan nilai

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

Menampilkan kode Deskripsi
S_OK
Metode berhasil.
MF_E_END_OF_STREAM
Akhir aliran tercapai.
MF_E_MEDIA_SOURCE_WRONGSTATE
Sumber media dihentikan.
MF_E_SHUTDOWN
Metode Matikan sumber telah dipanggil.

Keterangan

Jika pToken bukan NULL, aliran media memanggil AddRef di pToken dan menempatkan token dalam antrean pertama masuk dan keluar.

Saat sampel berikutnya tersedia, aliran media melakukan hal berikut:

  1. Menarik token pertama dari antrean.
  2. Mengatur atribut MFSampleExtension_Token pada sampel media. Data atribut adalah penunjuk ke objek token.
  3. Mengirim peristiwa MEMediaSample . Data peristiwa adalah penunjuk ke antarmuka IMFSample sampel media.
  4. Memanggil Rilis pada token.
Jika aliran media tidak dapat memenuhi permintaan pemanggil untuk sampel, aliran media hanya merilis objek token dan melewati langkah 2 dan 3.

Pemanggil harus memantau jumlah referensi pada token permintaan. Jika aliran media mengirim peristiwa MEMediaSample , dapatkan atribut MFSampleExtension_Token dari sampel dan cocokkan nilai atribut dengan token. Jika jumlah referensi token jatuh ke nol dan Anda tidak menerima peristiwa MEMediaSample, itu berarti bahwa permintaan dihilangkan.

Karena alur Media Foundation multithreaded, metode RequestSample sumber mungkin dipanggil setelah sumber berhenti. Jika sumber media dihentikan, metode harus mengembalikan MF_E_MEDIA_SOURCE_WRONGSTATE. Alur tidak memperlakukan kode pengembalian ini sebagai kondisi kesalahan. Jika sumber mengembalikan kode kesalahan lainnya, alur memperlakukannya sebagai kesalahan fatal dan menghentikan sesi.

Catatan Versi dokumentasi sebelumnya mencantumkan kode kesalahan yang salah untuk kasus ini.

 

Jika sumber media dijeda, metode berhasil, tetapi aliran tidak mengirimkan sampel sampai sumber dimulai lagi.

Jika sumber media mengalami kesalahan secara asinkron saat memproses data, sumber media harus memberi sinyal kesalahan dengan salah satu cara berikut (tetapi tidak keduanya):

  • Mengembalikan kode kesalahan dari panggilan RequestSample berikutnya.
  • Mengirim peristiwa MEError .

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 mfidl.h
Pustaka Mfuuid.lib

Lihat juga

IMFMediaStream

Sumber Media