Compartilhar via


estrutura KSRTAUDIO_HWREGISTER (ksmedia.h)

A estrutura KSRTAUDIO_HWREGISTER especifica o endereço e informações adicionais sobre um registro de hardware solicitado pelo cliente. Ele é preenchido pelo driver em resposta a uma solicitação de registro por meio de KSPROPERTY_RTAUDIO_POSITIONREGISTER e KSPROPERTY_RTAUDIO_CLOCKREGISTER.

Sintaxe

typedef struct {
  PVOID     Register;
  ULONG     Width;
  ULONGLONG Numerator;
  ULONGLONG Denominator;
  ULONG     Accuracy;
} KSRTAUDIO_HWREGISTER, *PKSRTAUDIO_HWREGISTER;

Membros

Register

Ponteiro para o registro. Esse membro especifica o endereço virtual no qual o registro é mapeado.

Width

Especifica a largura, em bits, do registro. O valor desse membro pode ser 32 ou 64.

Numerator

Especifica o numerador da frequência em que o relógio registra incrementos. Consulte os Comentários a seguir. seção.

Denominator

Especifica o denominador da frequência em que o relógio registra incrementos. Consulte os Comentários a seguir. seção.

Accuracy

Especifica a precisão do registro de relógio ou posição. Consulte a seção Comentários a seguir.

Comentários

Para solicitações de registro de posição de hardware por meio de KSPROPERTY_RTAUDIO_POSITIONREGISTER o driver preenche os membros Registrar, Largura e Precisão , pois os outros membros são específicos para registros de relógio. Para solicitações de registro de relógio de hardware por meio de KSPROPERTY_RTAUDIO_CLOCKREGISTER o driver preenche toda a estrutura.

Um registro de relógio é um contador que incrementa na frequência do relógio de hardware interno que conduz o barramento interno do dispositivo de áudio. O registro incrementa em um com cada tique do relógio. O registro começa a contar quando o dispositivo liga e continua a ser executado até que o dispositivo seja desligado. O registro de relógio é usado pelo software para sincronizar dois ou mais dispositivos com relógios de hardware independentes.

Os membros Numerador e Denominador juntos especificam a frequência com que o relógio registra incrementos. A frequência é calculada dividindo Numerador por Denominador.

O registro de relógio incrementa na frequência do relógio interno do dispositivo de áudio. Essa é a frequência que o dispositivo de áudio normalmente usa para marcar eventos em seu barramento interno ou no link do codec externo. O hardware deriva as frequências de exemplo de áudio dividindo a frequência do relógio interno.

O dispositivo de áudio pode derivar seu relógio interno de um oscilador de cristal no chip ou de um sinal de relógio externo. Por exemplo, se um dispositivo derivar um relógio interno de 16,5 MHz dividindo um relógio externo de 33 MHz por dois, o numerador e o denominador poderão ser especificados como 33.000.000 e 2, respectivamente.

O parâmetro Accuracy especifica o erro máximo em uma leitura de registro de posição ou relógio. Essa é essencialmente uma representação da taxa de atualização para o registro. Para registros de relógio, o parâmetro Precisão indica o número de tiques de relógio entre atualizações de registro. No exemplo anterior de um relógio interno de 16,5 MHz, se o registro do relógio for atualizado a cada 4 relógios, o parâmetro Precisão será definido como 4 porque o registro precisa representar a precisão do registro do relógio em unidades de tiques de relógio.

Para registros de posição, o parâmetro Accuracy representa a precisão do registro de posição em unidades de bytes. Por exemplo, o tamanho do quadro de áudio para um fluxo PCM de 2 canais e 16 bits é de 4 bytes. Se o registro de posição incrementar (em duas vezes o tamanho do quadro) uma vez a cada segundo tique do relógio de exemplo, o valor de precisão será de 8 bytes. Se o registro de posição for incrementado (em quatro vezes o tamanho do quadro) uma vez a cada quarto tique do relógio de exemplo, o valor de precisão será de 16 bytes e assim por diante.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e em sistemas operacionais Windows posteriores.
Cabeçalho ksmedia.h

Confira também

KSPROPERTY_RTAUDIO_CLOCKREGISTER

KSPROPERTY_RTAUDIO_POSITIONREGISTER

KSRTAUDIO_HWREGISTER_PROPERTY