énumération _MFT_INPUT_STREAM_INFO_FLAGS (mftransform.h)
Décrit un flux d’entrée sur une transformation Media Foundation (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
} ;
Constantes
MFT_INPUT_STREAM_WHOLE_SAMPLES Valeur : 0x1 Chaque exemple multimédia (interface IMFSample ) de données d’entrée doit contenir des unités de données complètes et non ininterrompues. La définition d’une unité de données dépend du type de média : Pour une vidéo non compressée, une image vidéo ; pour les données compressées, un paquet compressé ; pour l’audio non compressé, une image audio unique. Pour les formats audio non compressés, cet indicateur est toujours implicite. (Il est valide de définir l’indicateur, mais pas obligatoire.) Une image audio non compressée ne doit jamais s’étendre sur plusieurs exemples multimédias. |
MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER Valeur : 0x2 Chaque exemple de média fourni par le client en tant qu’entrée doit contenir exactement une unité de données, comme défini pour l’indicateur MFT_INPUT_STREAM_WHOLE_SAMPLES. Si cet indicateur est présent, l’indicateur MFT_INPUT_STREAM_WHOLE_SAMPLES doit également être présent. Un MFT qui traite l’audio non compressé ne doit pas définir cet indicateur. Le MFT doit accepter les mémoires tampons qui contiennent plus d’une trame audio unique, pour plus d’efficacité. |
MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE Valeur : 0x4 Tous les exemples d’entrée doivent avoir la même taille. La taille est indiquée dans le membre cbSize de la structure MFT_INPUT_STREAM_INFO . Le MFT doit fournir cette valeur. Pendant le traitement, le MFT doit vérifier la taille des échantillons d’entrée et peut supprimer des échantillons dont la taille est incorrecte. |
MFT_INPUT_STREAM_HOLDS_BUFFERS Valeur : 0x8 Le MFT peut contenir un ou plusieurs exemples d’entrée après l’appel d’IMFTransform::P rocessOutput . Si cet indicateur est présent, le membre hnsMaxLatency de la structure MFT_INPUT_STREAM_INFO donne la latence maximale, et le membre cbMaxLookahead donne le nombre maximal d’octets de lookahead. |
MFT_INPUT_STREAM_DOES_NOT_ADDREF Valeur : 0x100 Le MFT ne contient pas d’exemples d’entrée après le retour de la méthode IMFTransform::P rocessInput . Il libère l’exemple avant que la méthode ProcessInput ne retourne. Si cet indicateur est absent, le MFT peut contenir un nombre de références sur les exemples passés à la méthode ProcessInput . Le client ne doit pas réutiliser ou supprimer la mémoire tampon tant que le MFT n’a pas libéré le pointeur IMFSample de l’exemple. Si cet indicateur est absent, il ne garantit pas que le MFT conserve un nombre de références sur les exemples d’entrée. Il est valide pour un MFT de libérer des exemples d’entrée dans ProcessInput , même si MFT ne définit pas cet indicateur. Toutefois, la définition de cet indicateur peut permettre au client d’optimiser la façon dont il réutilisent les mémoires tampons. Un MFT ne doit pas définir cet indicateur s’il conserve un exemple d’entrée après le retour de ProcessInput. |
MFT_INPUT_STREAM_REMOVABLE Valeur : 0x200 Ce flux d’entrée peut être supprimé en appelant IMFTransform::D eleteInputStream. |
MFT_INPUT_STREAM_OPTIONAL Valeur : 0x400 Ce flux d’entrée est facultatif. La transformation peut produire une sortie sans recevoir d’entrée de ce flux. L’appelant peut désélectionner le flux en ne définissant pas de type de média ou en définissant un type de média NULL . Il est possible que chaque flux d’entrée sur une transformation soit facultatif, mais au moins une entrée doit être sélectionnée pour produire une sortie. |
MFT_INPUT_STREAM_PROCESSES_IN_PLACE Valeur : 0x800 Le MFT peut effectuer un traitement sur place. Dans ce mode, le MFT modifie directement la mémoire tampon d’entrée. Lorsque le client appelle ProcessOutput, le même exemple qui a été remis à ce flux est retourné dans le flux de sortie qui a un identificateur de flux correspondant. Cet indicateur implique que le MFT se maintient sur la mémoire tampon d’entrée, de sorte que cet indicateur ne peut pas être combiné avec l’indicateur MFT_INPUT_STREAM_DOES_NOT_ADDREF. Si cet indicateur est présent, le MFT doit définir l’indicateur MFT_OUTPUT_STREAM_PROVIDES_SAMPLES ou MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES pour le flux de sortie qui correspond à ce flux d’entrée. (Voir IMFTransform::GetOutputStreamInfo). |
Notes
Avant que le client ne définisse les types de médias sur la transformation, les seuls indicateurs garantis sont les indicateurs MFT_INPUT_STREAM_REMOVABLE et MFT_INPUT_STREAM_OPTIONAL. Pour tous les autres indicateurs, le client doit d’abord définir le type de média sur chaque flux non facultatif.
Dans le modèle de traitement par défaut, un MFT contient un nombre de références sur l’exemple qu’il reçoit dans ProcessInput. Il ne traite pas l’exemple immédiatement à l’intérieur de ProcessInput. Lorsque ProcessOutput est appelé, le MFT produit des données de sortie, puis ignore l’exemple d’entrée. Les variantes suivantes sur ce modèle sont définies :
- Si un MFT ne conserve jamais d’exemples d’entrée entre ProcessInput et ProcessOutput, il peut définir le MFT_INPUT_STREAM_DOES_NOT_ADDREF.
- Si un MFT contient des exemples d’entrée au-delà de l’appel suivant à ProcessOutput, il peut définir le MFT_INPUT_STREAM_HOLDS_BUFFERS.
Configuration requise
Client minimal pris en charge | Windows Vista [applications de bureau | applications UWP] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau | applications UWP] |
En-tête | mftransform.h |