Bagikan melalui


Metode IMFSourceReader::ReadSample (mfreadwrite.h)

Membaca sampel berikutnya dari sumber media.

Sintaks

HRESULT ReadSample(
  [in]  DWORD     dwStreamIndex,
  [in]  DWORD     dwControlFlags,
  [out] DWORD     *pdwActualStreamIndex,
  [out] DWORD     *pdwStreamFlags,
  [out] LONGLONG  *pllTimestamp,
  [out] IMFSample **ppSample
);

Parameter

[in] dwStreamIndex

Aliran untuk menarik data dari. Nilainya bisa salah satu dari yang berikut ini.

Nilai Makna
0–0xFFFFFFFB
Indeks aliran berbasis nol.
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
Streaming video pertama.
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
Aliran audio pertama.
MF_SOURCE_READER_ANY_STREAM
0xFFFFFFFE
Dapatkan sampel berikutnya yang tersedia, terlepas dari aliran mana.

[in] dwControlFlags

Bitwise ATAU nol atau lebih bendera dari enumerasi MF_SOURCE_READER_CONTROL_FLAG .

[out] pdwActualStreamIndex

Menerima indeks aliran berbasis nol.

[out] pdwStreamFlags

Menerima bendera bitwise OR nol atau lebih dari enumerasi MF_SOURCE_READER_FLAG .

[out] pllTimestamp

Menerima stempel waktu sampel, atau waktu peristiwa streaming yang ditunjukkan dalam pdwStreamFlags. Waktu diberikan dalam unit 100 nanodetik.

[out] ppSample

Menerima penunjuk ke antarmuka IMFSample atau nilai NULL (lihat Keterangan). Jika parameter ini menerima penunjuk non-NULL , pemanggil harus merilis antarmuka.

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_INVALIDREQUEST
Permintaan tidak valid.
MF_E_INVALIDSTREAMNUMBER
Parameter dwStreamIndex tidak valid.
MF_E_NOTACCEPTING
Operasi flush tertunda. Lihat IMFSourceReader::Flush.
E_INVALIDARG
Argumen tidak valid. Lihat Keterangan.

Keterangan

Jika aliran yang diminta tidak dipilih, kode pengembalian akan MF_E_INVALIDREQUEST. Lihat IMFSourceReader::SetStreamSelection.

Metode ini dapat diselesaikan secara sinkron atau asinkron. Jika Anda memberikan penunjuk panggilan balik saat Anda membuat pembaca sumber, metode ini tidak sinkron. Jika tidak, metode ini sinkron. Untuk informasi selengkapnya tentang mengatur penunjuk panggilan balik, lihat MF_SOURCE_READER_ASYNC_CALLBACK.

Mode Asinkron

Dalam mode asinkron:
  • [out] Semua parameter harus NULL. Jika tidak, metode mengembalikan E_INVALIDARG.
  • Metode ini segera kembali.
  • Ketika operasi selesai, metode IMFSourceReaderCallback::OnReadSample aplikasi dipanggil.
  • Jika terjadi kesalahan, metode dapat gagal baik secara sinkron atau asinkron. Periksa nilai hasil ReadSample, dan periksa juga parameter hrStatusIMFSourceReaderCallback::OnReadSample.

Mode Sinkron

Dalam mode sinkron:
  • Parameter pdwStreamFlags dan ppSample tidak boleh NULL. Jika tidak, metode mengembalikan E_POINTER.
  • Parameter pdwActualStreamIndex dan pllTimestamp dapat berupa NULL.
  • Metode memblokir hingga sampel berikutnya tersedia.
Dalam mode sinkron, jika parameter dwStreamIndexMF_SOURCE_READER_ANY_STREAM, Anda harus meneruskan nilai non-NULL untuk pdwActualStreamIndex, sehingga Anda tahu aliran mana yang mengirimkan sampel.

Metode ini dapat mengembalikan bendera dalam parameter pdwStreamFlags tanpa mengembalikan sampel media di ppSample. Oleh karena itu, parameter ppSample dapat menerima pointer NULL bahkan ketika metode berhasil. Misalnya, ketika pembaca sumber mencapai akhir aliran, ia mengembalikan bendera MF_SOURCE_READERF_ENDOFSTREAM di pdwStreamFlags dan mengatur ppSample ke NULL.

Jika ada celah dalam aliran, pdwStreamFlags menerima bendera MF_SOURCE_READERF_STREAMTICK, ppSample adalah NULL, dan pllTimestamp menunjukkan waktu ketika celah terjadi.

Antarmuka ini tersedia di Windows Vista jika Suplemen Pembaruan Platform untuk Windows Vista diinstal.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7, Windows Vista, dan Suplemen Pembaruan Platform untuk Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 R2 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header mfreadwrite.h

Lihat juga

IMFSourceReader

Pembaca Sumber