IMFASFSplitter::GetSelectedStreams 方法 (wmcontainer.h)

获取当前所选流的列表。

语法

HRESULT GetSelectedStreams(
  [out]     WORD *pwStreamNumbers,
  [in, out] WORD *pwNumStreams
);

参数

[out] pwStreamNumbers

WORD 数组的地址。 此数组接收所选流的流编号。 此参数可以为 NULL。

[in, out] pwNumStreams

在输入时, 指向包含 pwStreamNumbers 数组中元素数的变量。 如果 pwStreamNumbers 为 NULL,则将变量设置为

在输出时, 接收复制到 pwStreamNumbers 中的元素数。 每个元素都是所选流的标识符。

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
E_INVALIDARG
无效的参数。
MF_E_BUFFERTOOSMALL
pwStreamNumbers 数组小于所选流的数量。 请参阅“备注”。

注解

若要获取所选流的数量,请将 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

在调用此方法之前,请初始化 *pwNumStreamspwStreamNumbers 中的元素数。 如果 pwStreamNumbersNULL,请将 设置为 *pwNumStreams 零。

默认情况下,拆分器不会选择任何流。 通过调用 IMFASFSplitter::SelectStreams 方法选择流。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 wmcontainer.h
Library Mfuuid.lib

另请参阅

ASF 拆分器

IMFASFSplitter