Na tej stronie opisano typowe metody pomiaru opóźnienia wejścia i wyjścia.
Zmierz opóźnienie wyjściowe
Dostępnych jest kilka technik pomiaru opóźnienia wyjściowego, o różnym stopniu dokładności i łatwości wykonania, opisanych poniżej. Zobacz także obwód testowy , aby zapoznać się z przykładowym środowiskiem testowym.
Test diod LED i oscyloskopu
Ten test mierzy opóźnienie w stosunku do wskaźnika LED urządzenia. Jeśli Twoje urządzenie produkcyjne nie jest wyposażone w diodę LED, możesz zainstalować diodę LED w prototypowym urządzeniu. Aby uzyskać jeszcze większą dokładność w prototypowych urządzeniach z odsłoniętymi obwodami, podłącz jedną sondę oscyloskopu bezpośrednio do diody LED, aby ominąć opóźnienie czujnika światła.
Jeśli nie możesz zainstalować diody LED ani na urządzeniu produkcyjnym, ani na urządzeniu prototypowym, wypróbuj następujące obejścia:
- W tym samym celu użyj pinów wejścia/wyjścia ogólnego przeznaczenia (GPIO).
- Użyj JTAG lub innego portu debugowania.
- Użyj podświetlenia ekranu. Może to być ryzykowne, ponieważ podświetlenie może mieć istotne opóźnienie i może przyczynić się do niedokładnego odczytu opóźnienia.
Aby przeprowadzić ten test:
- Uruchom aplikację, która okresowo pulsuje diodą LED i jednocześnie emituje dźwięk.
Uwaga: aby uzyskać przydatne wyniki, ważne jest, aby w aplikacji testowej używać odpowiednich interfejsów API, aby ćwiczyć szybką ścieżkę wyjściową audio. Zobacz Projekt, aby zapoznać się ze zmniejszonymi opóźnieniami w tle.
- Umieść czujnik światła obok diody LED.
- Podłącz sondy dwukanałowego oscyloskopu do przewodowego gniazda słuchawkowego (wyjście liniowe) i czujnika światła.
- Za pomocą oscyloskopu zmierzyć różnicę czasu pomiędzy obserwacją sygnału wyjściowego linii a sygnałem czujnika światła.
Różnica czasu to przybliżone opóźnienie wyjścia audio, przy założeniu, że opóźnienie diody LED i opóźnienie czujnika światła wynoszą zero. Zazwyczaj dioda LED i czujnik światła mają stosunkowo małe opóźnienie rzędu jednej milisekundy lub mniej, które jest wystarczająco małe, aby je zignorować.
Zmierz opóźnienie w obie strony
Opóźnienie w obie strony to suma opóźnienia wyjściowego i opóźnienia wejściowego.
Test Larsena
Jednym z najłatwiejszych testów opóźnienia jest test sprzężenia zwrotnego audio (efektu Larsena). Zapewnia to przybliżoną miarę łącznego opóźnienia wyjściowego i wejściowego poprzez synchronizację pętli odpowiedzi impulsowej. Test ten nie jest zbyt przydatny do szczegółowej analizy sam w sobie ze względu na charakter testu, ale może być przydatny do kalibracji innych testów i ustalenia górnej granicy.
Ta metoda nie rozkłada czasów komponentów, co jest ważne, gdy opóźnienie wyjściowe i opóźnienie wejściowe są niezależne. Dlatego ta metoda nie jest zalecana do pomiaru dokładnych opóźnień wyjściowych lub wartości opóźnień wejściowych w izolacji, ale może być użyteczna do ustalenia przybliżonych szacunków.
Opóźnienie wyjściowe do głośnika urządzenia może być znacznie większe niż opóźnienie wyjściowe do złącza zestawu słuchawkowego. Dzieje się tak dzięki korekcji i zabezpieczeniu głośników.
Aby przeprowadzić ten test:
- Uruchom aplikację, która przechwytuje dźwięk z mikrofonu i natychmiast odtwarza przechwycone dane z powrotem przez głośnik.
- Stwórz dźwięk zewnętrzny, na przykład stukając ołówkiem w mikrofon. Hałas ten generuje pętlę sprzężenia zwrotnego. Alternatywnie można wprowadzić impuls do pętli za pomocą oprogramowania.
- Zmierz czas pomiędzy impulsami sprzężenia zwrotnego, aby uzyskać sumę opóźnienia wyjściowego, opóźnienia wejściowego i obciążenia aplikacji.
Oto kilka zasobów, jak pobrać aplikację do testu Larsena:
- Aplikacja pętli zwrotnej Dr. Ricka O'Ranga to aplikacja na Androida służąca do testowania sprzężenia zwrotnego dźwięku. Możesz pobrać aplikację z Google Play lub uzyskać kod źródłowy z GitHub .
- Opublikowaliśmy także przykładową implementację w slesTestFeedback.cpp . Jest to aplikacja wiersza poleceń zbudowana przy użyciu środowiska kompilacji platformy; jednakże przyjęcie kodu dla innych środowisk powinno być proste. Będziesz także potrzebował nieblokującego kodu FIFO znajdującego się w bibliotece
audio_utils
.
Klucz zwrotny audio
Klucz zwrotny audio Dr. Ricka O'Ranga jest przydatny do pomiaru opóźnienia w obie strony przez złącze zestawu słuchawkowego. Poniższy obraz przedstawia wynik jednorazowego wstrzyknięcia impulsu do pętli, a następnie umożliwienia oscylacji pętli sprzężenia zwrotnego. Okres oscylacji to opóźnienie w obie strony. Nie określono tutaj konkretnego urządzenia, wersji oprogramowania ani warunków testowych. Przedstawionych wyników nie należy ekstrapolować.
![pomiar w obie strony](https://source.android.com/static/docs/core/audio/images/round_trip.png?authuser=0&hl=pl)
Rysunek 1. Pomiar w obie strony
Może być konieczne odłączenie kabla USB, aby zredukować hałas, i wyregulować poziom głośności, aby uzyskać stabilne oscylacje.
Zmierz opóźnienie wejściowe
Opóźnienie wejściowe jest trudniejsze do zmierzenia niż opóźnienie wyjściowe. Poniższe testy mogą pomóc.
Jednym z podejść jest najpierw określenie opóźnienia wyjściowego za pomocą metody LED i oscyloskopu, a następnie użycie testu sprzężenia zwrotnego audio (Larsena) w celu określenia sumy opóźnienia wyjściowego i opóźnienia wejściowego. Różnica między tymi dwoma pomiarami to opóźnienie wejściowe.
Inną techniką jest użycie pinu GPIO w urządzeniu prototypowym. Zewnętrznie, impulsuj wejście GPIO w tym samym czasie, gdy przekazujesz sygnał audio do urządzenia. Uruchom aplikację, która porównuje różnicę w czasach przybycia sygnału GPIO i danych audio.
Zmniejsz opóźnienia
Aby osiągnąć niskie opóźnienia dźwięku, należy zwrócić szczególną uwagę w całym systemie na planowanie, obsługę przerwań, zarządzanie energią i projekt sterowników urządzeń. Twoim celem jest uniemożliwienie jakiejkolwiek części platformy blokowania wątku audio SCHED_FIFO
na dłużej niż kilka milisekund. Przyjmując takie systematyczne podejście, możesz zmniejszyć opóźnienia dźwięku i uzyskać dodatkową korzyść w postaci bardziej przewidywalnej wydajności.
Jeśli występują niedociągnięcia sygnału audio, często można je wykryć tylko w określonych warunkach lub tylko w przejściach. Spróbuj obciążyć system, uruchamiając nowe aplikacje i szybko przewijając różne ekrany. Należy jednak pamiętać, że niektóre warunki testowe są tak stresujące, że wykraczają poza cele projektowe. Na przykład przyjęcie raportu o błędzie powoduje tak ogromne obciążenie systemu, że w takim przypadku akceptowalne może być niedopełnienie.
Podczas testowania pod kątem niedobiegów:
- Skonfiguruj dowolny procesor DSP po procesorze aplikacji, aby zapewnić minimalne opóźnienia.
- Przeprowadź testy w różnych warunkach, takich jak włączony lub wyłączony ekran, podłączony lub odłączony USB, włączona lub wyłączona Wi-Fi, włączona lub wyłączona Bluetooth oraz włączona lub wyłączona telefonia i radiotelefon.
- Wybierz stosunkowo cichą muzykę, którą dobrze znasz i w której łatwo usłyszeć niedociągnięcia.
- Aby uzyskać dodatkową czułość, użyj słuchawek przewodowych.
- Rób sobie przerwy, żeby nie doświadczyć „zmęczenia ucha”.
Po znalezieniu podstawowych przyczyn niedopełnień zmniejsz liczbę i rozmiary buforów, aby to wykorzystać. Ochocze podejście do zmniejszania liczby i rozmiarów buforów przed analizą niedopełnień i naprawieniem przyczyn niedomiarów powoduje jedynie frustrację.
Narzędzia
systrace
to doskonałe narzędzie ogólnego przeznaczenia do diagnozowania usterek w wydajności na poziomie systemu.
Dane wyjściowe dumpsys media.audio_flinger
zawierają również użyteczną sekcję zwaną „prostymi statystykami ruchomymi”. Zawiera podsumowanie zmienności czasów, które upłynęły dla każdego miksu audio i cyklu we/wy. W idealnym przypadku wszystkie pomiary czasu powinny być w przybliżeniu równe średniemu lub nominalnemu czasowi cyklu. Jeśli widzisz bardzo niskie minimum lub wysokie maksimum, oznacza to problem, prawdopodobnie duże opóźnienie w harmonogramie lub czas wyłączenia przerwań. Część końcowa wyniku jest szczególnie pomocna, ponieważ podkreśla zmienność przekraczającą +/- 3 odchylenia standardowe.