Condividi tramite


Metodo IMFASFSplitter::GetSelectedStreams (wmcontainer.h)

Ottiene un elenco di flussi attualmente selezionati.

Sintassi

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

Parametri

[out] pwStreamNumbers

Indirizzo di una matrice di WORD. Questa matrice riceve i numeri di flusso dei flussi selezionati. Questo parametro può essere NULL.

[in, out] pwNumStreams

In input, punta a una variabile contenente il numero di elementi nella matrice pwStreamNumbers . Impostare la variabile su zero se pwStreamNumbers è NULL.

Nell'output riceve il numero di elementi copiati in pwStreamNumbers. Ogni elemento è l'identificatore di un flusso selezionato.

Valore restituito

Il metodo restituisce un HRESULT. I valori possibili includono, ma non sono limitati a, quelli indicati nella tabella seguente.

Codice restituito Descrizione
S_OK
Il metodo è riuscito.
E_INVALIDARG
Argomento non valido.
MF_E_BUFFERTOOSMALL
La matrice pwStreamNumbers è inferiore al numero di flussi selezionati. Vedere la sezione Osservazioni.

Commenti

Per ottenere il numero di flussi selezionati, impostare pwStreamNumbers su NULL. Il metodo restituirà MF_E_BUFFERTOSMALL ma imposterà anche il valore di *pwNumStreams uguale al numero di flussi selezionati. Allocare quindi una matrice di tale dimensione e chiamare di nuovo il metodo, passando la matrice nel parametro pwStreamNumbers .

Il codice seguente illustra questi passaggi:

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

In alternativa, è possibile allocare una matrice uguale al numero totale di flussi e passarlo a pwStreamNumbers.

Prima di chiamare questo metodo, inizializzare *pwNumStreams il numero di elementi in pwStreamNumbers. Se pwStreamNumbers è NULL, impostare *pwNumStreams su zero.

Per impostazione predefinita, nessun flusso viene selezionato dal splitter. Selezionare i flussi chiamando il metodo IMFASFSplitter::SelectStreams .

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wmcontainer.h
Libreria Mfuuid.lib

Vedi anche

ASF Splitter

FMASFSplitter