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
データをプルするストリーム。 値には、次のいずれかを指定できます。
[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 を返します。 有効な値を次の表に示しますが、これ以外にもあります。
リターン コード | 説明 |
---|---|
|
メソッドが成功しました。 |
|
無効な要求です。 |
|
dwStreamIndex パラメーターが無効です。 |
|
フラッシュ操作が保留中です。 「IMFSourceReader::Flush」を参照してください。 |
|
引数が無効です。 「解説」を参照してください。 |
Remarks
要求されたストリームが選択されていない場合、戻りコードは MF_E_INVALIDREQUEST。 「IMFSourceReader::SetStreamSelection」を参照してください。
このメソッドは、同期的または非同期的に完了できます。 ソース リーダーの作成時にコールバック ポインターを指定すると、 メソッドは非同期になります。 それ以外の場合、メソッドは同期です。 コールバック ポインターの設定の詳細については、「 MF_SOURCE_READER_ASYNC_CALLBACK」を参照してください。
非同期モード
非同期モードの場合:- すべてのパラメーターは
[out]
NULL である必要があります。 それ以外の場合、メソッドは E_INVALIDARGを返します。 - メソッドは直ちにを返します。
- 操作が完了すると、アプリケーションの IMFSourceReaderCallback::OnReadSample メソッドが呼び出されます。
- エラーが発生した場合、メソッドは同期的または非同期的に失敗する可能性があります。 ReadSample の戻り値を確認し、IMFSourceReaderCallback::OnReadSample の hrStatus パラメーターもチェックします。
同期モード
同期モードの場合:- pdwStreamFlags パラメーターと ppSample パラメーターを NULL にすることはできません。 それ以外の場合、メソッドは E_POINTERを返します。
- pdwActualStreamIndex パラメーターとpllTimestamp パラメーターは NULL にすることができます。
- メソッドは、次のサンプルが使用可能になるまでブロックします。
このメソッドは、ppSample でメディア サンプルを返すことなく、pdwStreamFlags パラメーターでフラグを返すことができます。 したがって、 ppSample パラメーターは、メソッドが成功した場合でも NULL ポインターを受け取ることができます。 たとえば、ソース リーダーがストリームの末尾に達すると、pdwStreamFlags で MF_SOURCE_READERF_ENDOFSTREAM フラグが返され、ppSample がNULL に設定されます。
ストリームにギャップがある場合、 pdwStreamFlags はMF_SOURCE_READERF_STREAMTICK フラグを受け取り、 ppSample は NULL、 pllTimestamp はギャップが発生した時刻を示します。
このインターフェイスは、Windows Vista のプラットフォーム更新プログラムの補足がインストールされている場合に、Windows Vista で使用できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista 用 Windows 7、Windows Vista およびプラットフォーム更新プログラムの補足 [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | mfreadwrite.h |