Konwersja częstotliwości próbkowania

W tym artykule opisano konwersję częstotliwości próbkowania, znaną również jako ponowne próbkowanie , w systemie Android. Terminologię związaną z konwersją częstotliwości próbkowania można znaleźć w sekcji Terminologia .

Konwersja częstotliwości próbkowania to proces zmiany strumienia dyskretnych próbek z jednej częstotliwości próbkowania na inny strumień o innej częstotliwości próbkowania. Konwerter częstotliwości próbkowania lub resampler to moduł implementujący konwersję częstotliwości próbkowania. W odniesieniu do resamplera oryginalny strumień nazywany jest sygnałem źródłowym, a ponownie próbkowany strumień nazywany jest sygnałem ujścia.

Resamplery są używane w kilku miejscach w Androidzie. Na przykład plik MP3 może być zakodowany z częstotliwością próbkowania 44,1 kHz, ale należy go odtworzyć na urządzeniu z systemem Android obsługującym wewnętrznie dźwięk 48 kHz. W takim przypadku do próbkowania wyjściowego dźwięku MP3 z częstotliwości próbkowania źródła 44,1 kHz do częstotliwości próbkowania ujścia 48 kHz stosowanej w urządzeniu z systemem Android zostanie użyty moduł resamplingu.

Charakterystykę modułu resamplera można wyrazić za pomocą metryk, w tym:

  • stopień zachowania całkowitej amplitudy sygnału
  • stopień zachowania pasma częstotliwości sygnału, z zastrzeżeniem ograniczeń częstotliwości próbkowania ujścia
  • ogólne opóźnienie przez moduł resamplera
  • spójne opóźnienie fazowe i grupowe w odniesieniu do częstotliwości
  • złożoność obliczeniowa wyrażona w cyklach procesora lub poborze mocy
  • dopuszczalne stosunki częstotliwości próbkowania źródła i ujścia
  • możliwość dynamicznej zmiany współczynników częstotliwości próbkowania
  • które formaty próbek dźwięku cyfrowego są obsługiwane

Idealny resampler dokładnie zachowywałby amplitudę i pasmo częstotliwości sygnału źródłowego (z zastrzeżeniem ograniczeń częstotliwości próbkowania ujścia), miał minimalne i stałe opóźnienie, miał minimalną złożoność obliczeniową, pozwalał na dowolne i dynamiczne współczynniki konwersji oraz obsługiwał wszystkie popularne formaty próbek dźwięku cyfrowego . W praktyce idealne resamplery nie istnieją, ponieważ rzeczywiste resamplery są kompromisem pomiędzy tymi cechami. Na przykład cele idealnej jakości kolidują z krótkim opóźnieniem i niską złożonością.

Android zawiera różnorodne narzędzia do resamplingu audio, dzięki czemu można pójść na odpowiedni kompromis w zależności od przypadku użycia i obciążenia aplikacji. Dostępne resamplery są wyjaśnione w implementacji Resamplera.

Implementacje resamplera

Dostępne implementacje resamplera często się zmieniają i mogą być dostosowywane przez producentów OEM. Domyślne resamplery, w kolejności malejącej zniekształceń sygnału i rosnącej złożoności obliczeniowej, obejmują:

  • liniowy
  • sześcienny
  • sinc z oryginalnymi współczynnikami
  • sinc ze skorygowanymi współczynnikami

Ogólnie rzecz biorąc, resamplery sinc są bardziej odpowiednie do odtwarzania muzyki o wyższej jakości, a inne resamplery powinny być zarezerwowane dla przypadków, gdy jakość jest mniej ważna (przykładem mogą być „kliknięcia klawiszy” lub podobne).

Wybrana konkretna implementacja resamplera zależy od przypadku użycia, obciążenia i wartości właściwości systemowej af.resampler.quality . Aby uzyskać szczegółowe informacje, zapoznaj się z kodem źródłowym resamplera audio w AudioFlinger .