IMFASFSplitter::GetSelectedStreams メソッド (wmcontainer.h)
現在選択されているストリームの一覧を取得します。
構文
HRESULT GetSelectedStreams(
[out] WORD *pwStreamNumbers,
[in, out] WORD *pwNumStreams
);
パラメーター
[out] pwStreamNumbers
WORD の配列のアドレス。 この配列は、選択したストリームのストリーム番号を受け取ります。 このパラメーターは、NULL でもかまいません。
[in, out] pwNumStreams
入力時に、 pwStreamNumbers 配列内の要素の数を含む変数を指します。 pwStreamNumbers が NULL の場合は、変数を 0 に設定します。
出力時に、 は pwStreamNumbers にコピーされた要素の数を受け取ります。 各要素は、選択したストリームの識別子です。
戻り値
このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。
リターン コード | 説明 |
---|---|
|
メソッドが成功しました。 |
|
引数が無効です。 |
|
pwStreamNumbers 配列は、選択したストリームの数よりも小さくなります。 「解説」を参照してください。 |
Remarks
選択したストリームの数を取得するには、 pwStreamNumbers を NULL に設定します。 メソッドは MF_E_BUFFERTOSMALL を返しますが、 の *pwNumStreams
値は、選択したストリームの数に等しい値も設定します。 次に、そのサイズの配列を割り当て、メソッドをもう一度呼び出し、 pwStreamNumbers パラメーターに配列を渡します。
これらの手順を示すコードは次のようになります。
HRESULT DisplaySelectedStreams(IMFASFSplitter *pSplitter)
{
WORD count = 0;
HRESULT hr = pSplitter->GetSelectedStreams(NULL, &count);
if (hr == MF_E_BUFFERTOOSMALL)
{
WORD *pStreamIds = new (std::nothrow) WORD[count];
if (pStreamIds)
{
hr = pSplitter->GetSelectedStreams(pStreamIds, &count);
if (SUCCEEDED(hr))
{
for (WORD i = 0; i < count; i++)
{
printf("Selected stream ID: %d\n", pStreamIds[i]);
}
}
delete [] pStreamIds;
}
else
{
hr = E_OUTOFMEMORY;
}
}
return hr;
}
または、ストリームの合計数に等しい配列を割り当てて、 pwStreamNumbers に渡すことができます。
このメソッドを呼び出す前に、pwStreamNumbers 内の要素の数に初期化*pwNumStreams
します。 pwStreamNumbers が NULL の場合は、0 に設定*pwNumStreams
します。
既定では、スプリッターによってストリームは選択されません。 IMFASFSplitter::SelectStreams メソッドを呼び出してストリームを選択します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wmcontainer.h |
Library | Mfuuid.lib |