共用方式為


IMFSourceReader::ReadSample 方法(mfreadwrite.h)

從媒體來源讀取下一個範例。

語法

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

參數

[in] dwStreamIndex

要從哪個串流中擷取資料。 其價值可以是以下任一。

價值觀 Meaning
0–0xFFFFFFFB
溪流的零基指數。
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
第一段影片串流。
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
第一段音訊串流。
MF_SOURCE_READER_ANY_STREAM
0xFFFFFFFE
不論是哪個串流,都要取得下一個可用的樣本。

[in] dwControlFlags

一個位元 或 OR ,從 MF_SOURCE_READER_CONTROL_FLAG 枚舉中標示為零個或以上。

[out] pdwActualStreamIndex

接收該串流的零基索引。

[out] pdwStreamFlags

MF_SOURCE_READER_FLAG枚舉中接收零個或多個旗標的位元值。

[out] pllTimestamp

接收取樣的時間戳記,或 pdwStreamFlags 中指示的串流事件時間。 時間以100奈秒單位表示。

[out] ppSample

接收指向 IMFSample 介面的指標或 NULL 值(詳見備註)。 若此參數接收非 NULL 指標,呼叫者必須釋放介面。

返回值

這個方法會傳回 HRESULT。 可能的值包括但不限於下表中的值。

回傳碼 Description
S_OK
此方法已成功。
MF_E_INVALIDREQUEST
要求無效。
MF_E_INVALIDSTREAMNUMBER
dwStreamIndex 參數無效。
MF_E_NOTACCEPTING
沖洗手術正在進行中。 請參見 IMFSourceReader::Flush
E_INVALIDARG
論點無效。 請參閱<備註>。

備註

若未選擇請求的串流,返回代碼將 MF_E_INVALIDREQUEST。 請參見 IMFSourceReader::SetStreamSelection

此方法可同步或非同步完成。 如果你在建立原始碼讀取器時提供回調指標,該方法就是非同步的。 否則,該方法為同步式。 關於設定回調指標的更多資訊,請參見 MF_SOURCE_READER_ASYNC_CALLBACK

非同步模式

非同步模式下:

同步模式

同步模式下:
  • pdwStreamFlagsppSample 參數不能是 NULL。 否則,方法會回傳 E_POINTER
  • pdwActualStreamIndexpllTimestamp 參數可以為 NULL。
  • 此方法會阻塞,直到下一個樣本可用。
在同步模式下,如果 dwStreamIndex 參數是 MF_SOURCE_READER_ANY_STREAM,你應該傳遞一個非 NULLpdwActualStreamIndex 值,這樣你就知道是哪個串流傳送了樣本。

此方法可在 pdwStreamFlags 參數中回傳旗標,而不回傳 ppSample 中的媒體樣本。 因此, ppSample 參數即使方法成功,仍可接收 NULL 指標。 例如,當原始碼讀取器到達串流末端時,會回傳 pdwStreamFlags 中的 MF_SOURCE_READERF_ENDOFSTREAM 標誌,並將 ppSample 設為 NULL。

若串流中有中斷,pdwStreamFlags 會接收 MF_SOURCE_READERF_STREAMTICK 標誌,ppSampleNULL,pllTimestamp 表示中斷發生的時間。

若安裝了 Windows Vista 平台更新補充包,則可使用此介面。

需求

Requirement 價值觀
最低支援的用戶端 Windows 7、Windows Vista 及 Windows Vista 平台更新補充 [桌面應用程式 |UWP 應用程式]
支援的最低伺服器 Windows Server 2008 R2 [傳統型應用程式 |UWP 應用程式]
目標平臺 窗戶
Header mfreadwrite.h

另請參閱

IMFSourceReader

資料來源閱讀