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 を返します。 有効な値を次の表に示しますが、これ以外にもあります。

リターン コード 説明
S_OK
メソッドが成功しました。
E_INVALIDARG
引数が無効です。
MF_E_BUFFERTOOSMALL
pwStreamNumbers 配列は、選択したストリームの数よりも小さくなります。 「解説」を参照してください。

Remarks

選択したストリームの数を取得するには、 pwStreamNumbersNULL に設定します。 メソッドは 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します。 pwStreamNumbersNULL の場合は、0 に設定*pwNumStreamsします。

既定では、スプリッターによってストリームは選択されません。 IMFASFSplitter::SelectStreams メソッドを呼び出してストリームを選択します。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wmcontainer.h
Library Mfuuid.lib

こちらもご覧ください

ASF スプリッター

IMFASFSplitter