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 com 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 fonte, e o fluxo reamostrado é chamado de sinal coletor.
Reamostradores são usados em vários lugares no Android. Por exemplo, um arquivo MP3 pode ser codificado com uma taxa de amostragem de 44,1 kHz, mas precisa ser reproduzido em um dispositivo Android com suporte interno para áudio de 48 kHz. Nesse caso, um reamostrador seria usado para aumentar a resolução do áudio de saída MP3 da taxa de amostragem da fonte de 44,1 kHz para uma taxa de amostragem do dissipador 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 às 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 origem 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 amplitude e largura de banda de frequência do sinal de origem (sujeito às 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, não existem reamostradores ideais, pois os reamostradores reais são um compromisso entre essas características. Por exemplo, metas de qualidade ideal entram em conflito com atrasos curtos 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 de reamostrador
As implementações de reamostradores disponíveis mudam frequentemente e podem ser personalizadas pelos OEMs. Os reamostradores padrão, em ordem decrescente de distorção do sinal e ordem crescente de complexidade computacional, incluem:
- linear
- cúbico
- sin com coeficientes originais
- sin com coeficientes revisados
Em geral, os reamostradores sinc são mais apropriados para reprodução de música de maior qualidade, e os outros reamostradores devem ser reservados para casos onde a qualidade é menos importante (um exemplo pode ser "cliques de tecla" ou similares).
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 .