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

データをプルするストリーム。 値には、次のいずれかを指定できます。

意味
0 ~ 0xFFFFFFFB
ストリームの 0 から始まるインデックス。
MF_SOURCE_READER_FIRST_VIDEO_STREAM
0xFFFFFFFC
最初のビデオ ストリーム。
MF_SOURCE_READER_FIRST_AUDIO_STREAM
0xFFFFFFFD
最初のオーディオ ストリーム。
MF_SOURCE_READER_ANY_STREAM
0xFFFFFFFE
どのストリームに関係なく、次に使用可能なサンプルを取得します。

[in] dwControlFlags

MF_SOURCE_READER_CONTROL_FLAG列挙体からの 0 個以上のフラグのビットごとの OR

[out] pdwActualStreamIndex

ストリームの 0 から始まるインデックスを受け取ります。

[out] pdwStreamFlags

MF_SOURCE_READER_FLAG列挙から 0 個以上のフラグのビットごとの OR を受け取ります。

[out] pllTimestamp

サンプルのタイム スタンプ、または pdwStreamFlags で示されるストリーム イベントの時刻を受け取ります。 時間は 100 ナノ秒単位で指定されます。

[out] ppSample

IMFSample インターフェイスまたは値 NULL へのポインターを受け取ります (「解説」を参照)。 このパラメーターが NULL 以外のポインターを受け取る場合、呼び出し元はインターフェイスを解放する必要があります。

戻り値

このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。

リターン コード 説明
S_OK
メソッドが成功しました。
MF_E_INVALIDREQUEST
無効な要求です。
MF_E_INVALIDSTREAMNUMBER
dwStreamIndex パラメーターが無効です。
MF_E_NOTACCEPTING
フラッシュ操作が保留中です。 「IMFSourceReader::Flush」を参照してください。
E_INVALIDARG
引数が無効です。 「解説」を参照してください。

Remarks

要求されたストリームが選択されていない場合、戻りコードは MF_E_INVALIDREQUEST「IMFSourceReader::SetStreamSelection」を参照してください

このメソッドは、同期的または非同期的に完了できます。 ソース リーダーの作成時にコールバック ポインターを指定すると、 メソッドは非同期になります。 それ以外の場合、メソッドは同期です。 コールバック ポインターの設定の詳細については、「 MF_SOURCE_READER_ASYNC_CALLBACK」を参照してください。

非同期モード

非同期モードの場合:
  • すべてのパラメーターは [out]NULL である必要があります。 それ以外の場合、メソッドは E_INVALIDARGを返します。
  • メソッドは直ちにを返します。
  • 操作が完了すると、アプリケーションの IMFSourceReaderCallback::OnReadSample メソッドが呼び出されます。
  • エラーが発生した場合、メソッドは同期的または非同期的に失敗する可能性があります。 ReadSample の戻り値を確認し、IMFSourceReaderCallback::OnReadSamplehrStatus パラメーターもチェックします。

同期モード

同期モードの場合:
  • pdwStreamFlags パラメーターと ppSample パラメーターを NULL にすることはできません。 それ以外の場合、メソッドは E_POINTERを返します。
  • pdwActualStreamIndex パラメーターとpllTimestamp パラメーターは NULL にすることができます
  • メソッドは、次のサンプルが使用可能になるまでブロックします。
同期モードでは、dwStreamIndex パラメーターがMF_SOURCE_READER_ANY_STREAMされている場合は、サンプルを配信したストリームを把握できるように、pdwActualStreamIndexNULL 以外の値を渡す必要があります。

このメソッドは、ppSample でメディア サンプルを返すことなく、pdwStreamFlags パラメーターでフラグを返すことができます。 したがって、 ppSample パラメーターは、メソッドが成功した場合でも NULL ポインターを受け取ることができます。 たとえば、ソース リーダーがストリームの末尾に達すると、pdwStreamFlagsMF_SOURCE_READERF_ENDOFSTREAM フラグが返され、ppSample がNULL に設定されます。

ストリームにギャップがある場合、 pdwStreamFlags はMF_SOURCE_READERF_STREAMTICK フラグを受け取り、 ppSampleNULLpllTimestamp はギャップが発生した時刻を示します。

このインターフェイスは、Windows Vista のプラットフォーム更新プログラムの補足がインストールされている場合に、Windows Vista で使用できます。

要件

要件
サポートされている最小のクライアント Windows Vista 用 Windows 7、Windows Vista およびプラットフォーム更新プログラムの補足 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー mfreadwrite.h

こちらもご覧ください

IMFSourceReader

ソース リーダー