Condividi tramite


enumerazione _MFT_INPUT_STREAM_INFO_FLAGS (mftransform.h)

Descrive un flusso di input in una trasformazione Media Foundation (MFT).

Sintassi

typedef enum _MFT_INPUT_STREAM_INFO_FLAGS {
  MFT_INPUT_STREAM_WHOLE_SAMPLES = 0x1,
  MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 0x2,
  MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE = 0x4,
  MFT_INPUT_STREAM_HOLDS_BUFFERS = 0x8,
  MFT_INPUT_STREAM_DOES_NOT_ADDREF = 0x100,
  MFT_INPUT_STREAM_REMOVABLE = 0x200,
  MFT_INPUT_STREAM_OPTIONAL = 0x400,
  MFT_INPUT_STREAM_PROCESSES_IN_PLACE = 0x800
} ;

Costanti

 
MFT_INPUT_STREAM_WHOLE_SAMPLES
Valore: 0x1
Ogni esempio multimediale (interfaccia FMSample ) dei dati di input deve contenere unità complete e non interrotte di dati. La definizione di un'unità di dati dipende dal tipo di supporto: per un video non compresso, un fotogramma video; per i dati compressi, un pacchetto compresso; per l'audio non compresso, un singolo frame audio.

Per i formati audio non compressi, questo flag è sempre implicito. È valido per impostare il flag, ma non obbligatorio. Un frame audio non compresso non deve mai estendersi su più di un esempio multimediale.
MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER
Valore: 0x2
Ogni esempio multimediale fornito dal client come input deve contenere esattamente un'unità di dati, come definito per il flag di MFT_INPUT_STREAM_WHOLE_SAMPLES.

Se questo flag è presente, il flag di MFT_INPUT_STREAM_WHOLE_SAMPLES deve essere presente anche.

Un MFT che elabora audio non compresso non deve impostare questo flag. Il MFT deve accettare buffer che contengono più di un singolo frame audio, per l'efficienza.
MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE
Valore: 0x4
Tutti gli esempi di input devono essere le stesse dimensioni.
Le dimensioni sono specificate nel membro cbSize della struttura MFT_INPUT_STREAM_INFO . MFT deve specificare questo valore. Durante l'elaborazione, il MFT deve verificare le dimensioni degli esempi di input e può eliminare campioni con dimensioni non corrette.
MFT_INPUT_STREAM_HOLDS_BUFFERS
Valore: 0x8
Il MFT può contenere uno o più esempi di input dopo che FMTransform::P rocessOutput viene chiamato. Se questo flag è presente, il membro hnsMaxLatency della struttura MFT_INPUT_STREAM_INFO fornisce la latenza massima e il membro cbMaxLookahead fornisce il numero massimo di byte di lookahead.
MFT_INPUT_STREAM_DOES_NOT_ADDREF
Valore: 0x100
MFT non contiene esempi di input dopo che il metodo FMTransform::P rocessInput restituisce. Rilascia l'esempio prima che venga restituito il metodo ProcessInput .

Se questo flag è assente, MFT potrebbe contenere un conteggio dei riferimenti sugli esempi passati al metodo ProcessInput . Il client non deve riutilizzare o eliminare la memoria del buffer finché il MFT rilascia il puntatore FMSample dell'esempio.

Se questo flag è assente, non garantisce che il MFT contenga un conteggio dei riferimenti sugli esempi di input. È valido per un MFT per rilasciare esempi di input in ProcessInput anche se L'MFT non imposta questo flag. Tuttavia, l'impostazione di questo flag potrebbe consentire al client di ottimizzare il modo in cui usa di nuovo i buffer.

Un MFT non deve impostare questo flag se contiene mai un esempio di input dopo aver restituito da ProcessInput.
MFT_INPUT_STREAM_REMOVABLE
Valore: 0x200
Questo flusso di input può essere rimosso chiamando FMTransform::D eleteInputStream.
MFT_INPUT_STREAM_OPTIONAL
Valore: 0x400
Questo flusso di input è facoltativo. La trasformazione può produrre output senza ricevere input da questo flusso. Il chiamante può deselezionare il flusso non impostando un tipo di supporto o impostando un tipo di supporto NULL . È possibile che ogni flusso di input in una trasformazione sia facoltativo, ma almeno un input deve essere selezionato per produrre l'output.
MFT_INPUT_STREAM_PROCESSES_IN_PLACE
Valore: 0x800
MFT può eseguire l'elaborazione sul posto. In questa modalità, MFT modifica direttamente il buffer di input. Quando il client chiama ProcessOutput, lo stesso esempio che è stato recapitato a questo flusso viene restituito nel flusso di output con un identificatore di flusso corrispondente. Questo flag implica che il MFT si mantiene nel buffer di input, quindi questo flag non può essere combinato con il flag di MFT_INPUT_STREAM_DOES_NOT_ADDREF.

Se questo flag è presente, il MFT deve impostare il flag MFT_OUTPUT_STREAM_PROVIDES_SAMPLES o MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES per il flusso di output corrispondente a questo flusso di input. Vedere FMTransform::GetOutputStreamInfo.

Commenti

Prima che il client imposta i tipi di supporti nella trasformazione, gli unici flag garantiti per essere accurati sono i flag MFT_INPUT_STREAM_REMOVABLE e MFT_INPUT_STREAM_OPTIONAL. Per tutti gli altri flag, il client deve prima impostare il tipo di supporto su ogni flusso non facoltativo.

Nel modello di elaborazione predefinito, un MFT contiene un conteggio dei riferimenti sull'esempio ricevuto in ProcessInput. Non elabora immediatamente l'esempio all'interno di ProcessInput. Quando Viene chiamato ProcessOutput , il MFT produce dati di output e quindi elimina l'esempio di input. Le varianti seguenti su questo modello sono definite:

  • Se un MFT non contiene mai esempi di input tra ProcessInput e ProcessOutput, può impostare la MFT_INPUT_STREAM_DOES_NOT_ADDREF.
  • Se un MFT contiene alcuni esempi di input oltre la chiamata successiva a ProcessOutput, può impostare la MFT_INPUT_STREAM_HOLDS_BUFFERS.

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

MFT_INPUT_STREAM_INFO

Enumerazione Media Foundation

Trasformazioni di Media Foundation