Bagikan melalui


Metode IMFSourceReader::ReadSample (mfreadwrite.h)

Membaca sampel berikutnya dari sumber media.

Syntax

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

Parameter-parameternya

[in] dwStreamIndex

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

Nilai Meaning
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 bitwise ATAU nol atau lebih bendera dari enumerasi MF_SOURCE_READER_FLAG .

[out] pllTimestamp

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

[out] ppSample

Menerima penunjuk ke antarmuka IMFSample atau nilai NULL (lihat Komentar). 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.

Mengembalikan kode Description
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 Komentar.

Komentar

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

Metode ini dapat diselesaikan secara sinkron atau asinkron. Jika Anda memberikan penunjuk panggilan balik saat membuat pembaca sumber, metode ini asinkron. 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 pengembalian 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 Platform Update Supplement untuk Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 R2 [aplikasi desktop | Aplikasi UWP]
Platform Target Windows
Header mfreadwrite.h

Lihat juga

IMFSourceReader

Pembaca Sumber