struttura MFT_OUTPUT_DATA_BUFFER (mftransform.h)
Contiene informazioni su un buffer di output per una trasformazione Media Foundation. Questa struttura viene utilizzata nel metodo IMFTransform::P rocessOutput .
Sintassi
typedef struct _MFT_OUTPUT_DATA_BUFFER {
DWORD dwStreamID;
IMFSample *pSample;
DWORD dwStatus;
IMFCollection *pEvents;
} MFT_OUTPUT_DATA_BUFFER, *PMFT_OUTPUT_DATA_BUFFER;
Members
dwStreamID
Identificatore del flusso di output. Prima di chiamare ProcessOutput, impostare questo membro su un identificatore di flusso valido.
Eccezione: se il metodo IMFTransform::GetStreamIDs restituisce E_NOTIMPL, MFT ignora questo membro e usa gli indici della matrice pOutputSamples nel metodo ProcessOutput come identificatori del flusso. In altre parole, usa il primo elemento nella matrice per il flusso 0, il secondo per il flusso 1 e così via. In questo caso, è consigliabile (ma non obbligatorio) che il chiamante set dwStreamID sia uguale all'indice della matrice.
pSample
Puntatore all'interfaccia IMFSample . Prima di chiamare ProcessOutput, impostare questo membro su un puntatore IMFSample valido o NULL. Per ulteriori informazioni, vedere la sezione Osservazioni.
dwStatus
Prima di chiamare ProcessOutput, impostare questo membro su zero. Quando termina, il metodo MFT potrebbe impostare il membro uguale a un valore dell'enumerazione _MFT_OUTPUT_DATA_BUFFER_FLAGS . In caso contrario, MFT lascia il membro uguale a zero.
pEvents
Prima di chiamare ProcessOutput, impostare questo membro su NULL. Nell'output, il MFT potrebbe impostare questo membro su un puntatore di interfaccia IMFCollection valido. Il puntatore rappresenta una raccolta che contiene zero o più eventi. Per ottenere ogni evento, chiamare IMFCollection::GetElement ed eseguire una query sul puntatore IUnknown restituito per l'interfaccia IMFMediaEvent . Quando il metodo ProcessOutput viene restituito, il chiamante è responsabile del rilascio del puntatore IMFCollection se il puntatore non è NULL.
Commenti
È necessario fornire una struttura MFT_OUTPUT_DATA_BUFFER per ogni flusso di output selezionato.
Le MFP possono supportare due modelli di allocazione diversi per gli esempi di output:
- MFT alloca l'esempio di output.
- Il client alloca l'esempio di output.
Flag | Modello di allocazione |
---|---|
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES | MFT alloca gli esempi di output per il flusso. Impostare pSample su NULL per questo flusso. |
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES | MFT supporta entrambi i modelli di allocazione. |
Nessuno dei due (impostazione predefinita) | Il client deve allocare gli esempi di output per il flusso. |
Il comportamento di ProcessOutput dipende dal valore iniziale di pSample e dal valore del parametro dwFlags nel metodo ProcessOutput .
-
Se pSample è NULL e dwFlags contiene il flag MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER, MFT rimuove i dati di output.
Restrizione: questo flusso di output deve avere il flag MFT_OUTPUT_STREAM_DISCARDABLE o MFT_OUTPUT_STREAM_LAZY_READ. Per ottenere i flag per il flusso di output, chiamare il metodo IMFTransform::GetOutputStreamInfo .
-
Se pSample è NULL e dwFlags non contiene il MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER, MFT fornisce un esempio per i dati di output. MFT imposta pSample in modo che punti all'esempio fornito. MFT può allocare un nuovo esempio o riutilizzare un esempio di input.
Restrizione: questo flusso di output deve avere il flag MFT_OUTPUT_STREAM_PROVIDES_SAMPLES o MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES.
-
Se pSample è diverso da NULL, MFT usa l'esempio fornito dal chiamante.
Restrizione: questo flusso di output non deve avere il flag MFT_OUTPUT_STREAM_PROVIDES_SAMPLES.
Ogni chiamata a ProcessOutput può produrre zero o più eventi e fino a un campione per ogni flusso di output.
Requisiti
Client minimo supportato | Windows Vista [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 [app desktop | App UWP] |
Intestazione | mftransform.h |