Este artigo descreve a conversão da taxa de amostragem, também conhecida como reamostragem , no Android. Para terminologia relacionada à conversão de taxa de amostragem, consulte Terminologia .
A conversão da taxa de amostragem é o processo de alterar um fluxo de amostras discretas de uma taxa de amostragem para outro fluxo em uma taxa de amostragem diferente. Um conversor de taxa de amostragem, ou reamostrador, é um módulo que implementa a conversão de taxa de amostragem. Com relação ao reamostrador, o fluxo original é chamado de sinal de origem e o fluxo reamostrado é chamado de sinal de dreno.
Os reamostradores são usados em vários lugares no Android. Por exemplo, um arquivo MP3 pode ser codificado em uma taxa de amostragem de 44,1 kHz, mas precisa ser reproduzido em um dispositivo Android que suporte áudio de 48 kHz internamente. Nesse caso, um reamostrador seria usado para aumentar a amostragem do áudio de saída MP3 de uma taxa de amostragem de origem de 44,1 kHz para uma taxa de amostragem de coletor de 48 kHz usada no dispositivo Android.
As características de um reamostrador podem ser expressas usando métricas, incluindo:
- grau de preservação da amplitude geral do sinal
- grau de preservação da largura de banda de frequência do sinal, sujeito a limitações da taxa de amostragem do coletor
- latência geral através do reamostrador
- fase consistente e atraso de grupo em relação à frequência
- complexidade computacional, expressa em ciclos de CPU ou consumo de energia
- proporções permitidas de taxas de amostragem de fonte e coletor
- capacidade de alterar dinamicamente as taxas de amostragem
- quais formatos de amostra de áudio digital são suportados
O reamostrador ideal preservaria exatamente a largura de banda de amplitude e frequência do sinal de origem (sujeito a limitações da taxa de amostragem do coletor), teria atraso mínimo e consistente, teria complexidade computacional mínima, permitiria taxas de conversão arbitrárias e dinâmicas e suportaria todos os formatos comuns de amostra de áudio digital . Na prática, reamostradores ideais não existem, pois reamostradores reais são um compromisso entre essas características. Por exemplo, metas de qualidade ideal entram em conflito com atraso curto e baixa complexidade.
O Android inclui uma variedade de reamostradores de áudio, para que os compromissos apropriados possam ser feitos dependendo do caso de uso e da carga do aplicativo. Os reamostradores disponíveis são explicados em Implementação do reamostrador.
Implementações do reamostrador
As implementações de reamostradores disponíveis mudam com frequência e podem ser personalizadas pelos OEMs. Os reamostradores padrão, em ordem decrescente de distorção de sinal e ordem crescente de complexidade computacional, incluem:
- linear
- cúbico
- sinc com coeficientes originais
- sinc com coeficientes revisados
Em geral, os reamostradores sinc são mais apropriados para reprodução de música de alta qualidade, e os outros reamostradores devem ser reservados para casos em que a qualidade é menos importante (um exemplo pode ser "cliques de tecla" ou similar).
A implementação específica do reamostrador selecionada depende do caso de uso, da carga e do valor da propriedade do sistema af.resampler.quality
. Para obter detalhes, consulte o código-fonte do reamostrador de áudio em AudioFlinger .