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 .