„Rozgrzewka audio” to czas potrzebny na to, by obwód wzmacniacza dźwięku w urządzeniu być w pełni naładowane i osiągnąć normalny stan działania. Główni współtwórcy czas na rozgrzewkę audio to zarządzanie zasilaniem logika ustabilizowania obwodem dróg.
Z tego dokumentu dowiesz się, jak mierzyć czas rozgrzewania się dźwięku i jak go skrócić.
Pomiar rozgrzewki danych wyjściowych
Wątek FastMixer AudioFlinger automatycznie mierzy rozgrzewkę
i uwzględnia je w 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ę audio, sprawdzając, jak długo trwa abstrakcja sprzętowa
Warstwa (HAL) write()
potrzebuje stabilizacji.
Aby zmierzyć rozgrzewkę audio, wykonaj te czynności w przypadku wbudowanego głośnika i słuchawek przewodowych i w różnych momentach po uruchomieniu. Czasy nagrzewania są zwykle inne dla każdego urządzenia wyjściowego i zaraz po uruchomieniu urządzenia:
- Upewnij się, że FastMixer jest włączony.
- Włącz dźwięki przy dotknięciu, wybierając Ustawienia > Dźwięk > Dźwięki przy dotknięciu na urządzeniu.
- Upewnij się, że dźwięk był wyłączony przez co najmniej 3 sekundy. Czas trwania co najmniej 5 sekund jest lepszy, ponieważ sam sprzęt może mieć własną logikę zasilania, która przekracza limit 3 sekund, jaką dysponuje AudioFlinger.
- Naciśnij Home. Powinno być słychać dźwięk kliknięcia.
- Uruchom następujące polecenie, aby otrzymać zmierzone dane rozruchowe:
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ść w polu
measuredWarmup=X
to X milisekund zajęło wykonanie pierwszego zestawu HALwrite()
.warmupCycles=X
to liczba wysłanych żądań zapisu HAL aż czas wykonaniawrite()
będzie zgodny z oczekiwaniami. - Wykonaj 5 pomiarów i zapisz je wszystkie, a także wartość średnią. Jeśli nie są mniej więcej takie same, wtedy pomiar jest prawdopodobnie 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 rozgrzewki danych wejściowych
Obecnie nie są dostępne żadne narzędzia do pomiaru rozgrzewki wejściowego sygnału dźwiękowego. Jednak czas rozgrzewania danych wejściowych można oszacować, obserwując czas wymagany przez startRecording() zwrócić.
Skrócenie czasu rozgrzewania
Czas na rozgrzewkę można zazwyczaj skrócić na podstawie:
- Dobry projekt obwodu
- Dokładne opóźnienia w sterowniku urządzenia jądra
- Przeprowadzanie niezależnych operacji rozgrzewania równocześnie, a nie sekwencyjnie
- Pozostawienie włączonego obwodów i ponowne konfigurowanie zegarów (zwiększa zużycie energii podczas bezczynności)
- Obliczone parametry w pamięci podręcznej
Uważaj jednak na nadmierną optymalizację. Może się okazać, że muszą znaleźć kompromis między krótkim czasem rozgrzewki i brak strzelania w przejściach zasilających.