Metodo IMFTransform::GetInputAvailableType (mftransform.h)

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

Sintassi

HRESULT GetInputAvailableType(
  [in]  DWORD        dwInputStreamID,
  [in]  DWORD        dwTypeIndex,
  [out] IMFMediaType **ppType
);

Parametri

[in] dwInputStreamID

Identificatore del flusso di input. Per ottenere l'elenco di identificatori di flusso, chiamare FMTransform::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 .

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_NOTIMPL
MFT non ha un elenco di tipi di input 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 output prima di impostare i tipi di input.

Commenti

MFT definisce un elenco di tipi di supporti disponibili per ogni flusso di input e li ordina per preferenza. Questo metodo enumera i tipi di supporti disponibili per un flusso di input. Per enumerare i tipi disponibili, aumentare 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 di preferenza. Tuttavia, un MFT non è necessario per aggiornare l'elenco dei tipi disponibili in modo dinamico. L'unico modo garantito per verificare se è possibile impostare un tipo di input specifico consiste nel chiamare FMTransform::SetInputType.

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

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

Se MFT_UNIQUE_METHOD_NAMES viene definito prima di includere mftransform.h, questo metodo viene rinominato MFTGetInputAvailableType. Vedere Creazione di oggetti DMO/MFT ibridi.

Per i codificatori, dopo aver impostato il tipo di output, GetInputAvailableType deve restituire un elenco di tipi di input compatibili con il tipo di output corrente. Ciò significa che tutti i tipi restituiti da GetInputAvailableType dopo che il tipo di output è impostato devono essere tipi validi per SetInputType.

I codificatori devono rifiutare i tipi di input se gli attributi del tipo di supporto di input e del tipo di supporto di output non corrispondono, ad esempio l'impostazione di risoluzione con MF_MT_FRAME_SIZE, l'impostazione dell'intervallo nominale con MF_MT_VIDEO_NOMINAL_RANGE o l'impostazione della frequenza dei fotogrammi con MF_MT_FRAME_SIZE

Note sull'implementazione

Se MFT archivia un tipo di supporto internamente, 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 del 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

FMTransform

Trasformazioni di Media Foundation