Metodo IMFTransform::GetOutputAvailableType (mftransform.h)

Ottiene un tipo di supporto disponibile per un flusso di output in questa trasformazione MFT (Media Foundation).

Sintassi

HRESULT GetOutputAvailableType(
  [in]  DWORD        dwOutputStreamID,
  [in]  DWORD        dwTypeIndex,
  [out] IMFMediaType **ppType
);

Parametri

[in] dwOutputStreamID

Identificatore del flusso di output. Per ottenere l'elenco degli identificatori di flusso, chiamare IMFTransform::GetStreamIDs.

[in] dwTypeIndex

Indice del tipo di supporto da recuperare. I tipi di supporti vengono indicizzati da zero e restituiti in ordine approssimativo di preferenza.

[out] ppType

Riceve un puntatore all'interfaccia IMFMediaType . Il chiamante deve rilasciare l'interfaccia.

Valore restituito

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

Codice restituito Descrizione
S_OK
Il metodo è riuscito.
E_NOTIMPL
MFT non dispone di un elenco di tipi di output disponibili.
MF_E_INVALIDSTREAMNUMBER
Identificatore di flusso non valido.
MF_E_NO_MORE_TYPES
Il parametro dwTypeIndex non è compreso nell'intervallo.
MF_E_TRANSFORM_TYPE_NOT_SET
È necessario impostare i tipi di input prima di impostare i tipi di output.

Commenti

MFT definisce un elenco di tipi di supporti disponibili per ogni flusso di output e li ordina in base alle preferenze. Questo metodo enumera i tipi di supporti disponibili per un flusso di output. Per enumerare i tipi disponibili, incrementare dwTypeIndex fino a quando il metodo non restituisce MF_E_NO_MORE_TYPES.

L'impostazione del tipo di supporto in un flusso può modificare i tipi disponibili per un altro flusso (o modificare l'ordine delle preferenze). Tuttavia, non è necessario un MFT per aggiornare dinamicamente l'elenco dei tipi disponibili. L'unico modo garantito per verificare se è possibile impostare un tipo di input specifico consiste nel chiamare IMFTransform::SetOutputType.

In alcuni casi, un MFT non può restituire un elenco di tipi di output fino a quando non vengono impostati uno o più tipi di input. In tal caso, il metodo restituisce MF_E_TRANSFORM_TYPE_NOT_SET.

Non è necessario un MFT per implementare questo metodo. Tuttavia, la maggior parte delle MMFT deve implementare questo metodo, a meno che i tipi supportati non siano semplici e possano essere individuati tramite la funzione MFTGetInfo .

Questo metodo può restituire un tipo di supporto parziale . Un tipo di supporto parziale contiene una descrizione incompleta di un formato e viene usato per fornire un suggerimento al chiamante. Ad esempio, un tipo parziale può includere solo i GUID di tipo principale e sottotipo. Tuttavia, dopo che il client imposta i tipi di input in MFT, il MFT deve in genere restituire almeno un tipo di output completo, che può essere usato senza ulteriori modifiche. Per altre informazioni, vedere Tipi di supporti completi e parziali.

Alcuni MFP non possono fornire un elenco accurato di tipi di output fino a quando MFT non riceve il primo esempio di input. Ad esempio, l'MFT potrebbe dover leggere la prima intestazione del pacchetto per dedurre il formato. Un MFT deve gestire questa situazione nel modo seguente:

  1. Prima che MFT riceva qualsiasi input, offre un elenco di uno o più tipi di output che potrebbe produrre. Ad esempio, un decodificatore MPEG-2 potrebbe restituire un tipo di supporto che descrive il profilo principale MPEG-2/livello principale.
  2. Il client seleziona uno di questi tipi (in genere il primo) e lo imposta nel flusso di output.
  3. Il client recapita il primo esempio di input chiamando IMFTransform::P rocessInput.
  4. Se il tipo di output non è conforme ai dati di input, la trasformazione segnala una modifica del formato nel metodo ProcessOutput . Per altre informazioni sulle modifiche al formato, vedere IMFTransform::P rocessOutput.
  5. Chiama di nuovo GetOutputAvailableType . A questo punto, il metodo deve restituire un elenco aggiornato di tipi che riflette i dati di input.
  6. Il client seleziona un nuovo tipo di output da questo elenco e chiama SetOutputType.
Se MFT_UNIQUE_METHOD_NAMES viene definito prima di includere mftransform.h, questo metodo viene rinominato MFTGetOutputAvailableType. Vedere Creazione di oggetti DMO/MFT ibridi.

Note sull'implementazione

Se MFT archivia internamente un tipo di supporto, MFT deve restituire un clone del tipo di supporto, non un puntatore al tipo originale. In caso contrario, il chiamante potrebbe modificare il tipo e modificare lo stato interno di MFT.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2008 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione mftransform.h
Libreria Mfuuid.lib

Vedi anche

IMFTransform

Trasformazioni di Media Foundation