手動ストリーム選択を使用するには

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

リーダー オブジェクトを使用して圧縮されていないサンプルを配信する場合は、出力番号でのみ配信できます。 相互に排他的なストリームの場合、これは、一度に相互除外内の 1 つのストリームからのみサンプルを受信できることを意味します。 配信する相互排他的ストリームを選択するプロセスは、ストリーム選択と呼ばれます。

ビット レート相互除外の場合、リーダーは再生時にホスト マシン上の条件に基づいてストリーム選択を自動的に行います。 他の種類の相互除外の場合、手動で別のストリームを自分で選択しない限り、リーダーは既定のストリームからサンプルを配信します。 ビット レートの相互除外からストリームを手動で選択する場合もあります。

手動ストリーム選択は、ファイル全体に対してオンまたはオフのいずれかです。 ファイルにビット レート相互除外とその他の相互除外の種類が含まれている場合は、ビット レート ベースのストリームを手動で選択する必要があります。

相互に排他的なストリームを手動で選択するには、次の手順を実行する必要があります。

  1. IWMReader::QueryInterface を呼び出して、リーダー オブジェクトの IWMReaderAdvanced インターフェイスへのポインターを取得します。
  2. IWMReaderAdvanced::SetManualStreamSelection を呼び出して、手動ストリーム選択を有効にします。
  3. 特定のストリームが選択されているかどうかを確認するには、 IWMReaderAdvanced::GetStreamSelected を呼び出します。 WMT_STREAM_SELECTION列挙型の変数へのポインターを渡す必要があります。 呼び出しが返されると、変数の値によってストリームの現在の選択型が記述されます。
  4. ストリームを選択するには、 IWMReaderAdvanced::SetStreamsSelected を呼び出します。 このメソッドを使用すると、同期されたストリーム切り替えのために複数のストリームを同時に指定できます。

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