Rozgrzewka dźwiękowa

Nagrzewanie dźwięku to czas potrzebny do pełnego zasilania obwodu wzmacniacza audio w urządzeniu i osiągnięcia normalnego stanu działania. Głównymi czynnikami wpływającymi na czas nagrzewania dźwięku są zarządzanie energią i logika „de-pop” w celu stabilizacji obwodu.

W tym dokumencie opisano, jak mierzyć czas nagrzewania dźwięku i możliwe sposoby skrócenia czasu nagrzewania.

Zmierz nagrzewanie wyjścia

Wątek FastMixer AudioFlingera automatycznie mierzy nagrzewanie sygnału wyjściowego i raportuje je jako część danych wyjściowych polecenia dumpsys media.audio_flinger . Podczas rozgrzewania FastMixer wielokrotnie wywołuje funkcję write() , aż czas między dwoma write() osiągnie oczekiwaną wartość. FastMixer określa rozgrzewanie dźwięku, sprawdzając, ile czasu zajmuje write() warstwy abstrakcji sprzętu (HAL) do stabilizacji.

Aby zmierzyć nagrzewanie dźwięku, wykonaj poniższe kroki dla wbudowanego głośnika i słuchawek przewodowych oraz w różnych momentach po uruchomieniu. Czasy nagrzewania są zwykle różne dla każdego urządzenia wyjściowego i zaraz po uruchomieniu urządzenia:

  1. Upewnij się, że FastMixer jest włączony.
  2. Włącz dźwięki dotyku, wybierając Ustawienia > Dźwięk > Dźwięki dotyku na urządzeniu.
  3. Upewnij się, że dźwięk jest wyłączony przez co najmniej trzy sekundy. Lepiej jest pięć sekund lub więcej, ponieważ sam sprzęt może mieć własną logikę zasilania wykraczającą poza trzy sekundy, jakie ma AudioFlinger.
  4. Naciśnij przycisk Home i powinieneś usłyszeć dźwięk kliknięcia.
  5. Uruchom następującą komendę, aby otrzymać zmierzony rozgrzewkę:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    Powinieneś zobaczyć takie dane wyjściowe:

    sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
    

    measuredWarmup=X to X liczba milisekund potrzebnych do zakończenia pierwszego zestawu write() .

    warmupCycles=X określa liczbę żądań zapisu HAL potrzebnych do czasu wykonania funkcji write() zgodnego z oczekiwaniami.

  6. Wykonaj pięć pomiarów i zapisz je wszystkie, a także średnią. Jeśli nie wszystkie są w przybliżeniu takie same, prawdopodobnie pomiar jest nieprawidłowy. Na przykład, jeśli nie odczekasz wystarczająco długo po wyłączeniu dźwięku, czas nagrzewania będzie krótszy niż wartość średnia.

Zmierz rozgrzewanie wejścia

Obecnie nie są dostępne żadne narzędzia do pomiaru nagrzewania wejścia audio. Jednakże czas nagrzewania wejścia można oszacować, obserwując czas potrzebny na powrót funkcji startRecording() .

Skróć czas nagrzewania

Czas nagrzewania można zwykle skrócić, łącząc:

  • Dobry projekt obwodu
  • Dokładne opóźnienia czasowe w sterowniku urządzenia jądra
  • Wykonywanie niezależnych operacji rozgrzewki jednocześnie, a nie sekwencyjnie
  • Pozostawianie włączonych obwodów lub brak ponownej konfiguracji zegarów (zwiększa zużycie energii w stanie bezczynności)
  • Buforowanie obliczonych parametrów

Uważaj jednak na nadmierną optymalizację. Może się okazać, że będziesz musiał znaleźć kompromis pomiędzy krótkim czasem nagrzewania a brakiem trzasków przy zmianach zasilania.