Freigeben über


KSAUDIO_POSITION-Struktur (ksmedia.h)

Die KSAUDIO_POSITION-Struktur gibt die aktuelle Position der Wiedergabe- und Schreibcursoren im Soundpuffer für einen Audiostream an.

Syntax

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

Member

PlayOffset

Gibt die aktuelle Wiedergabeposition als Byteoffset an.

WriteOffset

Gibt die aktuelle Schreibposition als Byteoffset an.

Hinweise

Diese Struktur wird verwendet, um den Datenwert für die eigenschaft KSPROPERTY_AUDIO_POSITION abzurufen und festzulegen.

Für einen Clientpuffer mit Schleifen (mit Streamtyp KSINTERFACE_STANDARD_LOOPED_STREAMING) sind PlayOffset und WriteOffset Byte-Offsets im Clientpuffer. Wenn ein Offset das Ende des Puffers erreicht, wird er bis zum Anfang des Puffers umschließen. Daher überschreitet kein Offset jemals die Puffergröße.

Für einen nicht geschleifeten Clientpuffer (mit Streamtyp KSINTERFACE_STANDARD_STREAMING) sind PlayOffset und WriteOffset keine Offsets in einen physischen Puffer, den Ihr Treiber zugewiesen oder ein Client zugewiesen hat. Stattdessen sind diese Offsets streamrelativ und können als Offsets in einen idealisierten Puffer betrachtet werden, der den gesamten Datenstrom enthält und von Anfang bis Ende zusammenhängend ist. Alle internen Offsets, die auf die tatsächlichen physischen Puffer zeigen, die die Daten enthalten, müssen separat verwaltet werden.

Während der Wiedergabe werden die PlayOffset- und WriteOffset-Werte wie folgt interpretiert:

  • PlayOffset ist der Offset des letzten Byte im Puffer, der wiedergegeben wurde. PlayOffset + 1 ist der Offset des nächsten Byte, das wiedergegeben wird.
  • WriteOffset ist der Offset des letzten Byte im Wiedergabepuffer.
Wenn ein Client einen anderen Puffer zur Wiedergabe an das Gerät sendet, wird WriteOffset nach Erhalt dieses Puffers inkrementiert, um den neuen WriteOffset-Wert anzugeben. PlayOffset ändert sich jedoch erst, nachdem dieser Puffer tatsächlich vom Gerät wiedergegeben wurde.

Während der Aufzeichnung werden die PlayOffset- und WriteOffset-Werte wie folgt interpretiert:

  • PlayOffset ist der Offset des letzten Byte im Puffer, der erfasst wurde. PlayOffset + 1 ist der Offset des nächsten Byte, das erfasst wird.
  • WriteOffset ist der Offset des letzten Byte im Erfassungspuffer.
Wenn eine Anwendung einen weiteren Puffer zur Erfassung an das Gerät sendet, wird der Wert WriteOffset nach Erhalt dieses Puffers inkrementiert. Der PlayOffset-Wert ändert sich erst, wenn Daten tatsächlich im Puffer erfasst wurden.

Der Speicherplatz zwischen PlayOffset und WriteOffset gilt als nicht für den Client, da er den Teil des Clientpuffers darstellt, der bereits an den Treiber gesendet wurde und möglicherweise noch vom Treiber verwendet wird.

Weitere Informationen finden Sie unter Eigenschaft "Audioposition".

Anforderungen

Anforderung Wert
Header ksmedia.h (include Ksmedia.h)

Weitere Informationen

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION