_MFT_INPUT_STREAM_INFO_FLAGS-Enumeration (mftransform.h)
Beschreibt einen Eingabestream für eine Media Foundation-Transformation (MFT).
Syntax
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
} ;
Konstanten
MFT_INPUT_STREAM_WHOLE_SAMPLES Wert: 0x1 Jedes Medienbeispiel (IMFSample-Schnittstelle ) von Eingabedaten muss vollständige, ungebrochene Dateneinheiten enthalten. Die Definition einer Dateneinheit hängt vom Medientyp ab: Bei unkomprimiertem Video ein Videoframe; für komprimierte Daten ein komprimiertes Paket; für unkomprimierte Audiodaten einen einzelnen Audioframe. Bei nicht komprimierten Audioformaten wird dieses Flag immer impliziert. (Es ist gültig, das Flag festzulegen, aber nicht erforderlich.) Ein nicht komprimierter Audioframe sollte niemals mehr als ein Medienbeispiel umfassen. |
MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER Wert: 0x2 Jedes Medienbeispiel, das der Client als Eingabe bereitstellt, muss genau eine Dateneinheit enthalten, wie für das MFT_INPUT_STREAM_WHOLE_SAMPLES-Flag definiert. Wenn dieses Flag vorhanden ist, muss auch das MFT_INPUT_STREAM_WHOLE_SAMPLES-Flag vorhanden sein. Ein MFT, der unkomprimiertes Audio verarbeitet, sollte dieses Flag nicht festlegen. Der MFT sollte Puffer akzeptieren, die mehr als einen einzelnen Audioframe enthalten, um die Effizienz zu erzielen. |
MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE Wert: 0x4 Alle Eingabebeispiele müssen die gleiche Größe aufweisen. Die Größe wird im cbSize-Member der MFT_INPUT_STREAM_INFO-Struktur angegeben. Dieser Wert muss vom MFT bereitgestellt werden. Während der Verarbeitung sollte der MFT die Größe der Eingabebeispiele überprüfen und möglicherweise Stichproben mit falscher Größe löschen. |
MFT_INPUT_STREAM_HOLDS_BUFFERS Wert: 0x8 Das MFT enthält möglicherweise ein oder mehrere Eingabebeispiele, nachdem IMFTransform::P rocessOutput aufgerufen wurde. Wenn dieses Flag vorhanden ist, gibt das hnsMaxLatency-Element der MFT_INPUT_STREAM_INFO-Struktur die maximale Latenz, und das cbMaxLookahead-Element gibt die maximale Anzahl von Bytes von Lookahead an. |
MFT_INPUT_STREAM_DOES_NOT_ADDREF Wert: 0x100 Die MFT enthält keine Eingabebeispiele, nachdem die IMFTransform::P rocessInput-Methode zurückgegeben wurde. Das Beispiel wird freigegeben, bevor die ProcessInput-Methode zurückgegeben wird. Wenn dieses Flag nicht vorhanden ist, kann der MFT eine Verweisanzahl für die Beispiele enthalten, die an die ProcessInput-Methode übergeben werden. Der Client darf den Pufferspeicher erst wiederverwenden oder löschen, wenn der MFT den IMFSample-Zeiger des Beispiels freigibt. Wenn dieses Flag nicht vorhanden ist, wird nicht garantiert, dass der MFT eine Verweisanzahl für die Eingabebeispiele enthält. Es ist gültig, dass ein MFT Eingabebeispiele in ProcessInput freigibt, auch wenn dieses Flag vom MFT nicht festgelegt wird. Durch Festlegen dieses Flags kann es jedoch möglich sein, den Client zu optimieren, wie Puffer erneut verwendet werden. Ein MFT sollte dieses Flag nicht festlegen, wenn es jemals ein Eingabebeispiel nach der Rückgabe von ProcessInput enthält. |
MFT_INPUT_STREAM_REMOVABLE Wert: 0x200 Dieser Eingabedatenstrom kann durch Aufrufen von IMFTransform::D eleteInputStream entfernt werden. |
MFT_INPUT_STREAM_OPTIONAL Wert: 0x400 Dieser Eingabedatenstrom ist optional. Die Transformation kann eine Ausgabe erzeugen, ohne eingaben aus diesem Stream zu empfangen. Der Aufrufer kann die Auswahl des Datenstroms aufheben, indem er keinen Medientyp festlegt oder einen NULL-Medientyp festlegt. Es ist möglich, dass jeder Eingabedatenstrom für eine Transformation optional ist, aber mindestens eine Eingabe muss ausgewählt werden, um eine Ausgabe zu erzeugen. |
MFT_INPUT_STREAM_PROCESSES_IN_PLACE Wert: 0x800 Die MFT kann eine direkte Verarbeitung durchführen. In diesem Modus ändert der MFT direkt den Eingabepuffer. Wenn der Client ProcessOutput aufruft, wird dasselbe Beispiel, das an diesen Stream übermittelt wurde, im Ausgabedatenstrom zurückgegeben, der über einen übereinstimmenden Streambezeichner verfügt. Dieses Flag impliziert, dass der MFT den Eingabepuffer enthält, sodass dieses Flag nicht mit dem MFT_INPUT_STREAM_DOES_NOT_ADDREF-Flag kombiniert werden kann. Wenn dieses Flag vorhanden ist, muss der MFT das MFT_OUTPUT_STREAM_PROVIDES_SAMPLES- oder MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES-Flag für den Ausgabestream festlegen, der diesem Eingabedatenstrom entspricht. (Siehe IMFTransform::GetOutputStreamInfo). |
Hinweise
Bevor der Client die Medientypen für die Transformation festlegt, sind nur die MFT_INPUT_STREAM_REMOVABLE- und MFT_INPUT_STREAM_OPTIONAL-Flags garantiert. Für alle anderen Flags sollte der Client zuerst den Medientyp für jeden nicht optionalen Stream festlegen.
Im Standardverarbeitungsmodell enthält ein MFT eine Verweisanzahl für das Beispiel, das er in ProcessInput empfängt. Das Beispiel wird nicht sofort in ProcessInput verarbeitet. Wenn ProcessOutput aufgerufen wird, erzeugt der MFT Ausgabedaten und verwirft dann das Eingabebeispiel. Die folgenden Variationen dieses Modells werden definiert:
- Wenn ein MFT nie Eingabebeispiele zwischen ProcessInput und ProcessOutput enthält, kann er die MFT_INPUT_STREAM_DOES_NOT_ADDREF festlegen.
- Wenn ein MFT einige Eingabebeispiele über den nächsten Aufruf von ProcessOutput hinaus enthält, kann er die MFT_INPUT_STREAM_HOLDS_BUFFERS festlegen.
Anforderungen
Unterstützte Mindestversion (Client) | Windows Vista [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 [Desktop-Apps | UWP-Apps] |
Kopfzeile | mftransform.h |