OnSample コールバックを実装するには

[このページに関連付けられている機能である Windows Media Format 11 SDK は、レガシ機能です。 これは、ソース リーダーシンク ライターによって置き換えられます。 ソース リーダーシンク ライターは、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、Windows Media Format 11 SDK ではなくソース リーダーシンク ライターを使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

非同期リーダーは、 IWMReaderCallback::OnSample コールバック メソッドを呼び出すことによって、プレゼンテーション時の順序で制御アプリケーションにサンプルを配信します。 非同期リーダーを使用してアプリケーションを作成する場合は、圧縮されていないサンプルを処理するために OnSample を実装する必要があります。 通常、コンテンツをレンダリングするために作成された関数またはメソッドは 、OnSample 内から呼び出されます。

OnSample コールバックの一般的な実装には、次の手順が含まれます。

  1. pSample として渡されたバッファーで INSSBuffer::GetBufferAndLength を呼び出して、サンプルを含むバッファーの場所とサイズを取得します。
  2. 出力番号に応じてロジックを分岐します。 出力番号は、dwOutputNumber として OnSample に渡されます。
  3. サポートする出力番号ごとにレンダリング ロジックを含めます。 複数の出力からサンプルをレンダリングする場合は、レンダリングを同期することが必要な場合があります。

ASF ファイルから圧縮されたサンプルを提供するアプリケーションでは、 IWMReaderCallbackAdvanced::OnStreamSample コールバック メソッドを実装する必要があります。 OnStreamSample 関数は OnSample とほぼ同じですが、出力番号によって圧縮されていないサンプルではなく、ストリーム番号で圧縮されたサンプルを受け取る点が異なります。

IWMReaderCallback インターフェイス

IWMReaderCallbackAdvanced インターフェイス

非同期リーダーを使用したファイルの読み取り

コールバック メソッドの使用