Compartilhar via


Método IMFASFSplitter::GetSelectedStreams (wmcontainer.h)

Obtém uma lista de fluxos selecionados no momento.

Sintaxe

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

Parâmetros

[out] pwStreamNumbers

O endereço de uma matriz de WORDs. Essa matriz recebe os números de fluxo dos fluxos selecionados. Este parâmetro pode ser NULL.

[in, out] pwNumStreams

Na entrada, aponta para uma variável que contém o número de elementos na matriz pwStreamNumbers . Defina a variável como zero se pwStreamNumbers for NULL.

Na saída, recebe o número de elementos que foram copiados em pwStreamNumbers. Cada elemento é o identificador de um fluxo selecionado.

Retornar valor

O método retorna um HRESULT. Os possíveis valores incluem, mas sem limitação, aqueles na tabela a seguir.

Código de retorno Descrição
S_OK
O método foi bem-sucedido.
E_INVALIDARG
Argumento inválido.
MF_E_BUFFERTOOSMALL
A matriz pwStreamNumbers é menor que o número de fluxos selecionados. Consulte Observações.

Comentários

Para obter o número de fluxos selecionados, defina pwStreamNumbers como NULL. O método retornará MF_E_BUFFERTOSMALL , mas também definirá o valor igual *pwNumStreams ao número de fluxos selecionados. Em seguida, aloque uma matriz desse tamanho e chame o método novamente, passando a matriz no parâmetro pwStreamNumbers .

O código a seguir mostra essas etapas:

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;
}

Como alternativa, você pode alocar uma matriz igual ao número total de fluxos e passá-la para pwStreamNumbers.

Antes de chamar esse método, inicialize *pwNumStreams para o número de elementos em pwStreamNumbers. Se pwStreamNumbers for NULL, defina como *pwNumStreams zero.

Por padrão, nenhum fluxo é selecionado pelo divisor. Selecione fluxos chamando o método IMFASFSplitter::SelectStreams .

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wmcontainer.h
Biblioteca Mfuuid.lib

Confira também

Divisor ASF

IMFASFSplitter