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 |
---|---|
|
Il metodo è riuscito. |
|
MFT non dispone di un elenco di tipi di output disponibili. |
|
Identificatore di flusso non valido. |
|
Il parametro dwTypeIndex non è compreso nell'intervallo. |
|
È 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:
- 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.
- Il client seleziona uno di questi tipi (in genere il primo) e lo imposta nel flusso di output.
- Il client recapita il primo esempio di input chiamando IMFTransform::P rocessInput.
- 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.
- Chiama di nuovo GetOutputAvailableType . A questo punto, il metodo deve restituire un elenco aggiornato di tipi che riflette i dati di input.
- Il client seleziona un nuovo tipo di output da questo elenco e chiama SetOutputType.
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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per