KSPROPERTY_RTAUDIO_POSITIONREGISTER
A propriedade KSPROPERTY_RTAUDIO_POSITIONREGISTER mapeia o registro de posição de um dispositivo de áudio para um fluxo específico em um local de memória virtual que o cliente pode acessar.
A tabela a seguir resume os recursos dessa propriedade.
Tabela de Resumo de Uso
Obter | Definir | Destino | Tipo de descritor de propriedade | Tipo de valor da propriedade |
---|---|---|---|---|
Sim |
Não |
Pin |
O descritor de propriedade (dados da instância) é uma estrutura KSRTAUDIO_HWREGISTER_PROPERTY, que contém uma estrutura KSPROPERTY . Antes de enviar a solicitação, o cliente carrega a estrutura com valores que indicam o endereço base preferencial para o registro.
O valor da propriedade (dados de operação) é uma estrutura KSRTAUDIO_HWREGISTER na qual o manipulador de propriedades grava o endereço virtual no qual mapeou o registro de posição de hardware. O cliente pode ler diretamente o registro desse endereço. A estrutura KSRTAUDIO_HWREGISTER também especifica a taxa na qual o registro de posição se incrementa.
Valor retornado
Uma solicitação de propriedade KSPROPERTY_RTAUDIO_POSITIONREGISTER retorna STATUS_SUCCESS para indicar que foi concluída com êxito. Caso contrário, a solicitação retornará uma falha apropriada status código.
Comentários
Normalmente, os aplicativos de áudio devem monitorar a posição atual de um fluxo de áudio. Essa posição é especificada como um deslocamento de bytes desde o início do fluxo:
No caso de um fluxo de renderização, a posição do fluxo é o deslocamento de bytes do quadro de áudio que está sendo reproduzido atualmente por meio dos DACs (conversores digitais para analógicos).
No caso de um fluxo de captura, a posição do fluxo é o deslocamento de bytes do quadro de áudio que está sendo gravado atualmente por meio dos ADCs (conversores analógicos para digitais).
Alguns dispositivos de áudio contêm registros de posição que incrementam continuamente enquanto o fluxo está em execução. Para um dispositivo de áudio que incorpora todas as funções digitais e analógicas em um único chip, o registro de posição normalmente indica a posição do fluxo atual diretamente.
No entanto, para um chipset que divide funções digitais e analógicas em chips separados de controlador de barramento e codec, o registro de posição normalmente está localizado no chip do controlador de barramento e indica o seguinte:
No caso de um fluxo de renderização, o registro de posição indica o deslocamento de bytes do último quadro de áudio que o controlador de barramento escreveu no codec.
No caso de um fluxo de captura, o registro de posição indica o deslocamento de bytes do último quadro de áudio que o controlador de barramento leu do codec.
Em ambos os casos, o valor do registro de posição não inclui o atraso por meio do codec. Se o cliente tiver determinado o atraso do codec, ele poderá adicionar esse atraso ao valor de registro de posição para estimar a posição do fluxo verdadeiro (nos DACs ou ADCs). Para um valor CodecDelay que especifica o atraso de pior caso por meio do codec, você pode consultar a propriedade KSPROPERTY_RTAUDIO_HWLATENCY .
Se bem-sucedida, uma solicitação de propriedade KSPROPERTY_RTAUDIO_POSITIONREGISTER mapeia o registro de posição para um endereço de memória virtual acessível ao cliente do modo de usuário ou do modo kernel, conforme especificado pelo cliente. Depois disso, o cliente lê desse endereço para obter o valor atual do registro de posição.
A solicitação de propriedade falhará se o hardware de áudio não der suporte a um registro de posição que possa ser mapeado para um endereço virtual. Nesse caso, o cliente deve determinar a posição da propriedade KSPROPERTY_AUDIO_POSITION .
O mapeamento do registro de posição é destruído quando o pino é fechado. O cliente pode mapear o registro apenas uma vez no tempo de vida de um pino aberto e qualquer chamada subsequente para remapear o registro de posição para o pin falha.
Normalmente, é mais rápido ler o registro de posição do que enviar uma solicitação KSPROPERTY_AUDIO_POSITION, o que requer transições entre o modo de usuário e o modo kernel para clientes do modo de usuário.
Requisitos
Versão |
Disponível no Windows Vista e em sistemas operacionais Windows posteriores. |
Cabeçalho |
Ksmedia.h |