Partilhar 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.

Observações

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

Para um buffer de cliente em loop (com KSINTERFACE_STANDARD_LOOPED_STREAMINGde tipo de fluxo), do PlayOffset e WriteOffset são deslocamentos de bytes para o buffer do cliente. Quando um dos deslocamentos 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 acamado (com KSINTERFACE_STANDARD_STREAMINGde tipo de fluxo), do PlayOffset e WriteOffset não são deslocados para nenhum buffer físico que o driver alocou ou um cliente alocou. 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 do PlayOffset e WriteOffset são interpretados da seguinte maneira:

  • do 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 playOffset não será alterado até que esse buffer tenha sido reproduzido pelo dispositivo.

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

  • do 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 do PlayOffset e WriteOffset é considerado fora dos limites para o cliente porque representa a parte do buffer do cliente que já foi enviada ao driver e ainda pode estar em uso pelo driver.

Para obter mais informações, consulte de propriedade de posição de áudio.

Requisitos

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

Consulte também

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION