Partager via


Intersections de plage de données dans AVStream

Un format de données est un ensemble unique de paramètres décrivant un aspect d’une connexion. Par exemple, un format de données audio peut spécifier un certain format audio avec X échantillons par seconde et Y bits par échantillon.

Une plage de données spécifie une séquence de paramètres valides. Par exemple, une plage de données audio peut spécifier un certain format d’audio avec des échantillons A-B par seconde et des C-D bits par échantillon.

Le minidriver fournit une liste de plages de données qu'il prend en charge pour une broche spécifique dans le membre DataRanges de la structure KSPIN_DESCRIPTOR correspondante.

Dans AVStream, les minidrivers peuvent fournir leurs propres gestionnaires d’intersection de plage de données en fournissant un pointeur vers une routine de rappel fournie par minidriver dans le membre IntersectHandler d’un KSPIN_DESCRIPTOR_EX. Pour permettre à AVStream d’croiser les plages, définissez ce membre sur NULL. Consultez AVStrMiniIntersectHandlerEx pour savoir comment définir la routine de rappel.

Si un minidriver fournit un gestionnaire d’intersection, lorsqu’une intersection doit être effectuée, le minidriver reçoit deux plages de données qui correspondent au type principal, sous-format et spécificateur. En outre, les attributs requis des plages de données correspondent.

Si les plages se croisent et que l’espace tampon suffisant est fourni dans le paramètre Données de la routine de rappel AVStrMiniIntersectHandlerEx , la routine d’intersection choisit un format dans l’intersection et la retourne à l’appelant dans la mémoire tampon pointée par les données.

Si les deux plages de données ne se croisent pas, le gestionnaire retourne STATUS_NO_MATCH.

Si le minidriver a spécifié une routine de distribution AVStrMiniPinSetDataFormat, AVStream appelle cette routine de distribution pour informer le minidriver que AVStream définit un format spécifique sur le connecteur. Fournissez un pointeur vers votre routine de rappel AVStrMiniPinSetDataFormat dans le membre SetDataFormat de la structure KSPIN_DISPATCH . (Les minidrivers qui sont des clients de classe stream reçoivent SRB_SET_DATA_FORMAT au lieu de AVStrMiniPinSetDataFormat.)

Le minidriver peut refuser un format proposé en retournant STATUS_NO_MATCH à partir d’AVStrMiniPinSetDataFormat.

Outre l’appel initial à AVStrMiniPinSetDataFormat avant la création de l’épingle, votre minidriver peut recevoir un deuxième appel AVStrMiniPinSetDataFormat juste avant la transition de l’épingle vers l’état RUN. Si votre client de classe AVStream ou stream est un minidriver de capture vidéo et que vous recevez une telle notification, cet envoi contient les paramètres réels de surface. Si possible, le minidriver ne doit pas échouer lors de ce deuxième changement de format. Ne supposez pas qu’un deuxième appel de délivrance aura lieu.

Le minidriver doit capturer des données dans n’importe quel format contenu dans la dernière distribution AVStrMiniPinSetDataFormat réussie.