O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Conversão de taxa de amostragem

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 resampler, é 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 sink.

Os reamostradores são usados ​​em vários lugares no Android. Por exemplo, um arquivo MP3 pode ser codificado na taxa de amostragem de 44,1 kHz, mas precisa ser reproduzido em um dispositivo Android com suporte para á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 fonte 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 às limitações da taxa de amostragem de 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
  • taxas permitidas de taxas de amostragem de fonte e sumidouro
  • capacidade de alterar dinamicamente as taxas de taxa de amostragem
  • quais formatos de amostra de áudio digital são suportados

O reamostrador ideal preservaria exatamente a amplitude do sinal de origem e largura de banda de frequência (sujeito às limitações da taxa de amostragem de coletor), teria atraso mínimo e consistente, teria complexidade computacional mínima, permitiria taxas de conversão dinâmica e arbitrária e suportaria todos os formatos de amostra de áudio digital comum . Na prática, os reamostradores ideais não existem, pois os reamostradores reais são um compromisso entre essas características. Por exemplo, objetivos de qualidade ideal entram em conflito com curto atraso e baixa complexidade.

O Android inclui uma variedade de resamplers de áudio, para que os compromissos apropriados possam ser feitos dependendo do caso de uso do aplicativo e da carga. Os reamostradores disponíveis são explicados em Implementação do reamostrador .

Implementações de reamostragem

As implementações de reamostragem disponíveis mudam com frequência e podem ser personalizadas por 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 principais" ou semelhante).

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 no AudioFlinger .