Partager via


structure KSAUDIO_POSITION (ksmedia.h)

La structure KSAUDIO_POSITION spécifie les positions actuelles des curseurs de lecture et d’écriture dans la mémoire tampon audio d’un flux audio.

Syntaxe

typedef struct {
#if ...
  ULONGLONG PlayOffset;
#if ...
  ULONGLONG WriteOffset;
#else
  DWORDLONG PlayOffset;
#endif
#else
  DWORDLONG WriteOffset;
#endif
} KSAUDIO_POSITION, *PKSAUDIO_POSITION;

Membres

PlayOffset

Spécifie la position de lecture actuelle en tant que décalage d’octet.

WriteOffset

Spécifie la position d’écriture actuelle en tant que décalage d’octet.

Remarques

Cette structure permet d’obtenir et de définir la valeur des données pour la propriété KSPROPERTY_AUDIO_POSITION .

Pour une mémoire tampon cliente en boucle (avec le type de flux KSINTERFACE_STANDARD_LOOPED_STREAMING), PlayOffset et WriteOffset sont des décalages d’octets dans la mémoire tampon cliente. Lorsque l’un des décalages atteint la fin de la mémoire tampon, il est encapsulé au début de la mémoire tampon. Par conséquent, aucun décalage ne dépasse la taille de la mémoire tampon.

Pour une mémoire tampon de client non-commande (avec le type de flux KSINTERFACE_STANDARD_STREAMING), PlayOffset et WriteOffset ne sont pas des décalages dans une mémoire tampon physique que votre pilote a allouée ou qu’un client a allouée. Au lieu de cela, ces décalages sont relatifs au flux et peuvent être considérés comme des décalages dans une mémoire tampon idéalisée qui contient l’ensemble du flux et qui est contiguë du début à la fin. Tous les décalages internes qui pointent vers les mémoires tampons physiques réelles qui contiennent les données doivent être conservés séparément.

Pendant la lecture, les valeurs PlayOffset et WriteOffset sont interprétées comme suit :

  • PlayOffset est le décalage du dernier octet de la mémoire tampon qui a été lu. PlayOffset + 1 est le décalage de l’octet suivant qui sera lu.
  • WriteOffset est le décalage du dernier octet dans la mémoire tampon de lecture.
Lorsqu’un client envoie une autre mémoire tampon à l’appareil pour la lecture, WriteOffset incrémente à la réception de cette mémoire tampon pour indiquer la nouvelle valeur WriteOffset , mais PlayOffset ne change pas tant que cette mémoire tampon n’a pas été réellement lue par l’appareil.

Pendant l’enregistrement, les valeurs PlayOffset et WriteOffset sont interprétées comme suit :

  • PlayOffset est le décalage du dernier octet de la mémoire tampon capturée. PlayOffset + 1 est le décalage de l’octet suivant qui sera capturé.
  • WriteOffset est le décalage du dernier octet dans la mémoire tampon de capture.
Lorsqu’une application envoie une autre mémoire tampon à l’appareil pour la capture, la valeur WriteOffset est incrémentée à la réception de cette mémoire tampon. La valeur PlayOffset ne change pas tant que les données n’auront pas été capturées dans la mémoire tampon.

L’espace entre PlayOffset et WriteOffset est considéré comme étant interdit au client, car il représente la partie de la mémoire tampon du client qui a déjà été envoyée au pilote et qui peut toujours être utilisée par le pilote.

Pour plus d’informations, consultez Audio Position Property.

Configuration requise

Condition requise Valeur
En-tête ksmedia.h (inclure Ksmedia.h)

Voir aussi

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION