Compartilhar via


KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION

A solicitação de propriedade KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION especifica a posição de gravação atual do buffer WaveRT em bytes. O driver de descarregamento pode usar essas informações de posição de gravação para saber a quantidade de dados válidos no buffer WaveRT.

Tabela de Resumo de Uso

Obter Definir Destino Tipo de descritor de propriedade Tipo de valor da propriedade

Não

Sim

Nó por meio da instância de fixação

KSP_NODE

ULONG

Valor retornado

A solicitação de propriedade KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION retorna STATUS_SUCCESS para indicar que foi concluída com êxito. Caso contrário, a solicitação retornará um erro apropriado status código.

Comentários

Para entender melhor como interpretar as informações fornecidas por essa solicitação de propriedade, suponha um buffer circular de tamanho n bytes. A posição de gravação inicial, antes de qualquer dado ser gravado, é 0. Os dados são gravados no buffer em partes que são um múltiplo de bytes WAVEFORMATEX.nBlockAlign .

Por exemplo, o buffer pode conter 20 ms de dados estéreo PCM de 16 bits, amostrados em 48000 Hz. Portanto, com base na descrição do membro nBlockAlign da estrutura WAVEFORMATEX , neste exemplo nBlockAlign = 2 * 16 / 8 = 4 bytes. Isso significa que o comprimento do buffer seria 48000 * 20 / 1000 = 960 quadros ou 960 * 4 = 3840 bytes.

A primeira solicitação Set especificará o número de bytes gravados no buffer. E como a "posição de gravação" é expressa em bytes, um valor de 1920 especificaria metade do tamanho do buffer, enquanto um valor de 3840 indicaria o tamanho total do buffer. Para determinar o número de novos bytes gravados, para fazer solicitações set subsequentes, o seguinte pseudocódigo mostra como o cálculo é executado:

if new write position > old write position:
     bytes written = new write position – old write position
if new write position < old write position, we’ve wrapped:
     bytes written = (new write position + buffer size) – old write position
if new write position = old write position, we’ve had a glitch
     log a "duplicate write position" glitch event

Requisitos

Versão

Windows 8

Cabeçalho

Ksmedia.h

Confira também

WAVEFORMATEX