Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Rozgrzewka dźwiękowa
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
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:
- Upewnij się, że FastMixer jest włączony.
- Aby włączyć dźwięki dotyku, wybierz Ustawienia > Dźwięk > Dźwięki dotyku na urządzeniu.
- 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.
- Naciśnij przycisk Home. Powinieneś usłyszeć dźwięk kliknięcia.
- 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.
-
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ść.
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.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-03-26 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-03-26 UTC."],[],[],null,["# Audio warmup is the time it takes for the audio amplifier circuit in your device to\nbe fully powered and reach its normal operation state. The major contributors\nto audio warmup time are power management and any \"de-pop\" logic to stabilize\nthe circuit.\n\nThis document describes how to measure audio warmup time and possible ways to decrease\nwarmup time.\n\nMeasure output warmup\n---------------------\n\n\nAudioFlinger's FastMixer thread automatically measures output warmup\nand reports it as part of the output of the `dumpsys media.audio_flinger` command.\nAt warmup, FastMixer calls `write()`\nrepeatedly until the time between two `write()`s is the amount expected.\nFastMixer determines audio warmup by seeing how long a Hardware Abstraction\nLayer (HAL) `write()` takes to stabilize.\n\nTo measure audio warmup, follow these steps for the built-in speaker and wired headphones\nand at different times after booting. Warmup times are usually different for each output device\nand right after booting the device:\n\n1. Ensure that FastMixer is enabled.\n2. Enable touch sounds by selecting **Settings \\\u003e Sound \\\u003e Touch sounds** on the device.\n3. Ensure that audio has been off for at least three seconds. Five seconds or more is better, because the hardware itself might have its own power logic beyond the three seconds that AudioFlinger has.\n4. Press Home, and you should hear a click sound.\n5. Run the following command to receive the measured warmup: \n\n ```\n adb shell dumpsys media.audio_flinger | grep measuredWarmup\n ```\n\n\n You should see output like this: \n\n ```\n sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X\n ```\n\n\n The `measuredWarmup=X` is X number of milliseconds\n it took for the first set of HAL `write()`s to complete.\n\n\n The `warmupCycles=X` is how many HAL write requests it took\n until the execution time of `write()` matches what is expected.\n6. Take five measurements and record them all, as well as the mean. If they are not all approximately the same, then it's likely that a measurement is incorrect. For example, if you don't wait long enough after the audio has been off, you will see a lower warmup time than the mean value.\n\nMeasure input warmup\n--------------------\n\n\nThere are currently no tools provided for measuring audio input warmup.\nHowever, input warmup time can be estimated by observing\nthe time required for [startRecording()](http://developer.android.com/reference/android/media/AudioRecord.html#startRecording())\nto return.\n\nReduce warmup time\n------------------\n\n\nWarmup time can usually be reduced by a combination of:\n\n- Good circuit design\n- Accurate time delays in kernel device driver\n- Performing independent warmup operations concurrently rather than sequentially\n- Leaving circuits powered on or not reconfiguring clocks (increases idle power consumption)\n- Caching computed parameters\n\n\nHowever, beware of excessive optimization. You may find that you\nneed to tradeoff between low warmup time versus\nlack of popping at power transitions."]]