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 sonore pour 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 sous la forme d’un décalage d’octet.

WriteOffset

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

Remarques

Cette structure est utilisée pour obtenir et définir la valeur de données de 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 du client. Lorsque l’un des décalages atteint la fin de la mémoire tampon, il s’encapsule au début de la mémoire tampon. Par conséquent, aucun décalage ne dépasse jamais la taille de la mémoire tampon.

Pour une mémoire tampon cliente nonloop (avec un 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 un client. Au lieu de cela, ces décalages sont relatifs aux 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ë de début à 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 dans la mémoire tampon qui a été lue. PlayOffset + 1 correspond au décalage de l’octet suivant qui sera joué.
  • WriteOffset correspond au décalage du dernier octet dans la mémoire tampon de lecture.
Lorsqu’un client envoie une autre mémoire tampon à l’appareil à des fins de lecture, s’incrémente à la réception de cette mémoire tampon pour indiquer la nouvelle valeur WriteOffset, mais PlayOffset ne change pas tant qu’une fois cette mémoire tampon réellement jouée par l’appareil.

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

  • PlayOffset correspond au décalage du dernier octet dans la mémoire tampon capturée. PlayOffset + 1 correspond au décalage de l’octet suivant qui sera capturé.
  • writeOffset correspond au 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 incrémente à la réception de cette mémoire tampon. La valeur PlayOffset ne changera pas tant que les données n’ont pas été capturées dans la mémoire tampon.

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

Pour plus d’informations, consultez propriété de position audio.

Exigences

Exigence Valeur
d’en-tête ksmedia.h (include Ksmedia.h)

Voir aussi

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION