Structure KSPROCESSPIN (ks.h)
La structure KSPROCESSPIN décrit l’état du processus d’une broche spécifique.
Syntaxe
typedef struct _KSPROCESSPIN {
PKSPIN Pin;
PKSSTREAM_POINTER StreamPointer;
PKSPROCESSPIN InPlaceCounterpart;
PKSPROCESSPIN DelegateBranch;
PKSPROCESSPIN CopySource;
PVOID Data;
ULONG BytesAvailable;
ULONG BytesUsed;
ULONG Flags;
BOOLEAN Terminate;
} KSPROCESSPIN, *PKSPROCESSPIN;
Membres
Pin
Pointeur vers une structure KSPIN décrite par la structure KSPROCESSPIN. Tout dans la structure fait référence à ce KSPIN.
StreamPointer
Pointeur vers une structure de KSSTREAM_POINTER qui pointe dans le flux d’entrée à l’emplacement d’entrée actuel ou dans le flux de sortie à l’emplacement de sortie actuel. Cela peut être utilisé, par exemple, par des broches de sortie pour marquer les informations sur les KSSTREAM_HEADER associées (ProcessPin-StreamPointer-StreamHeader-Flags>>>=...).
InPlaceCounterpart
Pointeur vers une structure KSPROCESSPIN. Si ce KSPROCESSPIN ne fait pas partie d’une transformation inplace , AVStream définit InPlaceCounterpart sur NULL. Si ce KSPROCESSPIN est l’entrée d’une transformation inplace, InPlaceCounterpart pointe vers la broche de processus de sortie pour la transformation. Si ce KSPROCESSPIN est la sortie d’une transformation inplace, InPlaceCounterpart pointe vers l’épingle du processus d’entrée pour la transformation.
DelegateBranch
Pointeur vers une structure KSPROCESSPIN. Si les images sortant de ce KSPROCESSPIN sont fractionnées et envoyées à plusieurs broches récepteur, et que le fractionnement n’entraîne pas de copie des données (autrement dit, le fractionnement envoie les images en lecture seule et que toutes les instances de broches fractionnées sont dans le même canal), DelegateBranch pointe vers la première instance de la broche de processus. Le séparateur gère automatiquement n’importe quelle broche de processus qui a un DelegateBranch non NULL.
CopySource
Pointeur vers une structure KSPROCESSPIN. Si les images sortant de cette broche de processus sont fractionnées et envoyées à plusieurs broches récepteurs d’une manière qui provoque une copie des données (autrement dit, l’un des filtres en aval modifie le cadre de données à l’aide d’une transformation sur place), CopySource pointe vers la broche de processus à partir de laquelle le cadre a été copié. Le séparateur gère automatiquement toute broche de processus qui a un CopySource non NULL.
Data
Pointeur vers une mémoire tampon. Si le code pin décrit par cette entrée de processus est une broche d’entrée, les données pointent vers l’octet disponible suivant des données à entrer. Si la broche décrite par cette entrée de processus est une broche de sortie, les données pointent vers une mémoire tampon de sortie dans laquelle les données traitées sont placées.
BytesAvailable
Ce membre spécifie le nombre d’octets de données disponibles dans Données.
BytesUsed
Ce membre spécifie le nombre d’octets de cette trame de données qui ont été utilisés par la fonction de processus. Les pilotes AVStream doivent définir ce membre pour mettre à jour la quantité de lecture ou d’écriture qu’ils ont.
Flags
Ce membre contient une copie des indicateurs de la structure KSSTREAM_HEADER appropriée, si ce KSPROCESSPIN est une broche d’entrée.
Terminate
Ce membre indique si la trame de données actuelle doit être envoyée en aval une fois la répartition du processus terminée. Si la valeur est TRUE, la trame est envoyée en aval même si toutes les données n’ont pas été consommées. Si la valeur est FALSE, la trame n’est pas libérée tant que toutes les données ne sont pas consommées.
Remarques
La structure KSPROCESSPIN est utilisée dans le modèle de traitement centré sur les filtres . Vous pouvez utiliser cette structure pour accéder aux données d’une broche d’entrée spécifique ou pour écrire les données traitées dans une broche de sortie.
Seuls les clients centrés sur les filtres utilisent des broches de processus. En outre, les broches de processus qui ont un DelegateBranch non NULL ou un CopySource non NULL ne sont généralement pas préoccupants pour le client. Le séparateur gère automatiquement les broches de processus avec ces pointeurs.
La plupart des clients s’intéressent aux membres Pin, Data, BytesAvailable, BytesUsed, Flags et Terminate. Les données peuvent être lues à partir du flux ou écrites dans le flux via le membre Data ; OctetsDisponible indique au client le nombre d’octets de données disponibles dans la trame de données (mémoire tampon) actuelle vers laquelle les données pointent. À mesure que le minidriver client lit ou écrit dans le flux, BytesUsed doit être mis à jour pour refléter le nombre d’octets de données qui ont été consommés. L’indicateur d’arrêt peut être défini si le minidriver est terminé avec l’image actuelle, malgré le fait que BytesUsed n’est pas égal à BytesAvailable. Une fois le minidriver sorti de la distribution de traitement, les pointeurs sont avancés et les images sont terminées comme il convient.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Microsoft Windows XP et les systèmes d’exploitation ultérieurs et dans Microsoft DirectX 8.0 et versions ultérieures. |
En-tête | ks.h (inclure Ks.h) |