Condividi tramite


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.
Per trovare il modello supportato da MFT per un determinato flusso di output, chiamare IMFTransform::GetOutputStreamInfo e controllare il valore di dwFlags.
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.

Qualsiasi altra combinazione non è valida e fa sì che ProcessOutput restituisca E_INVALIDARG.

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

Vedi anche

IMFTransform::P rocessOutput

Strutture di Media Foundation

Trasformazioni di Media Foundation