Rozgrzewka dźwiękowa

Rozgrzewa się dźwięk to czas potrzebny na pełne zasilenie obwodu wzmacniacza dźwięku na urządzeniu i osiągnięcie przez niego normalnego stanu pracy. Główne czynniki wpływające na czas rozgrzewania dźwięku to zarządzanie zasilaniem i logika „de-pop” służąca do stabilizacji obwodu.

Z tego dokumentu dowiesz się, jak mierzyć czas rozgrzewania się dźwięku i jak go skrócić.

Pomiar rozgrzewania się

Wątek FastMixer w AudioFlinger automatycznie mierzy czas rozgrzewania wyjścia i zgłasza go jako część danych wyjściowych polecenia dumpsys media.audio_flinger. Podczas rozgrzewania FastMixer wywołuje funkcję write() wielokrotnie, aż czas między dwoma wywołaniami funkcji write() będzie równy oczekiwanej wartości. FastMixer określa rozgrzewkę dźwięku na podstawie czasu, jaki zajmuje warstwie sprzętowej (HAL) write() stabilizacja.

Aby zmierzyć czas rozgrzewania dźwięku, wykonaj te czynności w przypadku wbudowanego głośnika i słuchawek przewodowych w różnych momentach po uruchomieniu. Czas rozgrzewania jest zwykle inny w przypadku różnych urządzeń wyjściowych. Po uruchomieniu urządzenia:

  1. Upewnij się, że FastMixer jest włączony.
  2. Aby włączyć dźwięki dotyku, wybierz Ustawienia > Dźwięk > Dźwięki dotyku na urządzeniu.
  3. Upewnij się, że dźwięk był wyłączony przez co najmniej 3 sekundy. Lepiej jest ustawić 5 sekund lub więcej, ponieważ samo urządzenie może mieć własną logikę zasilania, która wykracza poza 3 sekundy, które uwzględnia AudioFlinger.
  4. Naciśnij przycisk Home. Powinieneś usłyszeć dźwięk kliknięcia.
  5. Aby uzyskać pomiar rozgrzewania, uruchom to polecenie:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    Powinny się wyświetlić dane wyjściowe podobne do tych:

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

    Wartość measuredWarmup=X to liczba milisekund, jaka była potrzebna do wykonania pierwszego zestawu zapytań HAL write().

    Wartość warmupCycles=X wskazuje, ile razy HAL musiał wysłać żądanie zapisu, aby czas wykonania funkcji write() był zgodny z oczekiwanym.

  6. Wykonaj 5 pomiarów i zapisz je wszystkie, a także wartość średnią. Jeśli nie są one mniej więcej takie same, prawdopodobnie pomiar jest nieprawidłowy. Jeśli np. nie zaczekasz wystarczająco długo po wyłączeniu dźwięku, zobaczysz krótszy czas rozgrzewania niż średnia wartość.

Pomiar rozgrzewania danych wejściowych

Obecnie nie ma żadnych narzędzi do pomiaru rozgrzewania się wejścia audio. Czas rozgrzewania wejścia można jednak oszacować, obserwując czas potrzebny do powrotu funkcji startRecording().

Skrócenie czasu rozgrzewania

Czas rozgrzewania można zwykle skrócić, stosując kombinację tych rozwiązań:

  • Dobry projekt obwodu
  • dokładne opóźnienia czasowe w sterowniku urządzenia jądra;
  • równoczesne, a nie po kolei wykonywanie niezależnych operacji rozgrzewania;
  • pozostawianie włączonych obwodów lub niekonfigurowanie zegarów (zwiększa zużycie energii w stanie bezczynności);
  • Buforowanie obliczonych parametrów

Uważaj jednak na nadmierną optymalizację. Możesz zauważyć, że musisz dokonać wyboru pomiędzy krótkim czasem rozgrzewania a brakiem dźwięku przy przełączaniu mocy.