Compartilhar via


estrutura KSAUDIO_POSITION (ksmedia.h)

A estrutura KSAUDIO_POSITION especifica as posições atuais dos cursores de reprodução e gravação no buffer de som para um fluxo de áudio.

Sintaxe

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

Membros

PlayOffset

Especifica a posição de jogo atual como um deslocamento de bytes.

WriteOffset

Especifica a posição de gravação atual como um deslocamento de bytes.

Comentários

Essa estrutura é usada para obter e definir o valor de dados para a propriedade KSPROPERTY_AUDIO_POSITION .

Para um buffer de cliente em loop (com tipo de fluxo KSINTERFACE_STANDARD_LOOPED_STREAMING), PlayOffset e WriteOffset são deslocamentos de bytes para o buffer do cliente. Quando qualquer deslocamento atinge o final do buffer, ele é encapsulado até o início do buffer. Portanto, nenhum deslocamento excede o tamanho do buffer.

Para um buffer de cliente não comloop (com o tipo de fluxo KSINTERFACE_STANDARD_STREAMING), PlayOffset e WriteOffset não são deslocados para um buffer físico alocado pelo driver ou um cliente. Em vez disso, esses deslocamentos são relativos ao fluxo e podem ser considerados como deslocamentos para um buffer idealizado que contém todo o fluxo e é contíguo do início ao fim. Quaisquer deslocamentos internos que apontem para os buffers físicos reais que contêm os dados precisam ser mantidos separadamente.

Durante a reprodução, os valores PlayOffset e WriteOffset são interpretados da seguinte maneira:

  • PlayOffset é o deslocamento do último byte no buffer que foi reproduzido. PlayOffset + 1 é o deslocamento do próximo byte que será reproduzido.
  • WriteOffset é o deslocamento do último byte no buffer de reprodução.
Quando um cliente envia outro buffer para o dispositivo para reprodução, WriteOffset será incrementado após o recebimento desse buffer para indicar o novo valor WriteOffset , mas o PlayOffset não será alterado até que esse buffer seja realmente reproduzido pelo dispositivo.

Durante a gravação, os valores PlayOffset e WriteOffset são interpretados da seguinte maneira:

  • PlayOffset é o deslocamento do último byte no buffer que foi capturado. PlayOffset + 1 é o deslocamento do próximo byte que será capturado.
  • WriteOffset é o deslocamento do último byte no buffer de captura.
Quando um aplicativo envia outro buffer para o dispositivo para captura, o valor WriteOffset será incrementado após o recebimento desse buffer. O valor do PlayOffset não será alterado até que os dados sejam realmente capturados no buffer.

O espaço entre PlayOffset e WriteOffset é considerado fora dos limites para o cliente porque representa a parte do buffer do cliente que já foi enviada para o driver e ainda pode estar em uso pelo driver.

Para obter mais informações, consulte Propriedade Audio Position.

Requisitos

Requisito Valor
Cabeçalho ksmedia.h (inclua Ksmedia.h)

Confira também

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION