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。 可能的值包括(但并不限于)下表中的项。
返回代码 | 说明 |
---|---|
|
方法成功。 |
|
无效的参数。 |
|
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。
在调用此方法之前,请初始化 *pwNumStreams
为 pwStreamNumbers 中的元素数。 如果 pwStreamNumbers 为 NULL,请将 设置为 *pwNumStreams
零。
默认情况下,拆分器不会选择任何流。 通过调用 IMFASFSplitter::SelectStreams 方法选择流。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | wmcontainer.h |
Library | Mfuuid.lib |