Share via


estructura KSAUDIO_POSITION (ksmedia.h)

La estructura KSAUDIO_POSITION especifica las posiciones actuales de los cursores de reproducción y escritura en el búfer de sonido para una secuencia de audio.

Sintaxis

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

Miembros

PlayOffset

Especifica la posición de juego actual como desplazamiento de bytes.

WriteOffset

Especifica la posición de escritura actual como desplazamiento de bytes.

Comentarios

Esta estructura se usa para obtener y establecer el valor de datos de la propiedad KSPROPERTY_AUDIO_POSITION .

Para un búfer de cliente en bucle (con el tipo de secuencia KSINTERFACE_STANDARD_LOOPED_STREAMING), PlayOffset y WriteOffset son desplazamientos de bytes en el búfer de cliente. Cuando cualquiera de los desplazamientos alcanza el final del búfer, se ajusta al inicio del búfer. Por lo tanto, ninguno de los desplazamientos supera el tamaño del búfer.

En el caso de un búfer de cliente noopado (con tipo de secuencia KSINTERFACE_STANDARD_STREAMING), PlayOffset y WriteOffset no se desplazan en ningún búfer físico que el controlador haya asignado o que haya asignado un cliente. En su lugar, estos desplazamientos son relativos a la secuencia y se pueden considerar como desplazamientos en un búfer idealizado que contiene toda la secuencia y es contiguo de principio a fin. Los desplazamientos internos que apuntan a los búferes físicos reales que contienen los datos deben mantenerse por separado.

Durante la reproducción, los valores PlayOffset y WriteOffset se interpretan de la siguiente manera:

  • PlayOffset es el desplazamiento del último byte del búfer que se ha reproducido. PlayOffset + 1 es el desplazamiento del siguiente byte que se reproducirá.
  • WriteOffset es el desplazamiento del último byte del búfer de reproducción.
Cuando un cliente envía otro búfer al dispositivo para su reproducción, WriteOffset aumentará al recibir ese búfer para indicar el nuevo valor WriteOffset , pero PlayOffset no cambia hasta después de que el dispositivo haya reproducido realmente ese búfer.

Durante la grabación, los valores PlayOffset y WriteOffset se interpretan de la siguiente manera:

  • PlayOffset es el desplazamiento del último byte del búfer que se ha capturado. PlayOffset + 1 es el desplazamiento del siguiente byte que se capturará.
  • WriteOffset es el desplazamiento del último byte del búfer de captura.
Cuando una aplicación envía otro búfer al dispositivo para la captura, el valor WriteOffset aumentará al recibir ese búfer. El valor playOffset no cambiará hasta que los datos se hayan capturado realmente en el búfer.

El espacio entre PlayOffset y WriteOffset se considera off-limits para el cliente, ya que representa la parte del búfer de cliente que ya se ha enviado al controlador y puede seguir siendo utilizado por el controlador.

Para obtener más información, vea Propiedad De posición de audio.

Requisitos

Requisito Valor
Header ksmedia.h (incluya Ksmedia.h)

Consulte también

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION