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.
Dźwięk w wysokiej rozdzielczości
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Wersja Android 10 zawiera te ulepszenia dotyczące dźwięku w wysokiej rozdzielczości:
- Float: kodery i ekstraktory WAV i FLAC zostały zaktualizowane, aby obsługiwać liczby zmiennoprzecinkowe (24 i więcej bitów bezstratnej precyzji). Efekty downmix i Virtualizer zostały zaktualizowane do typu float.
Zaktualizowana dokładność jest dozwolona przez MediaPlayer (NuPlayer).
- Wysoka częstotliwość: kodery i ekstraktory WAV i FLAC zostały zaktualizowane, aby obsługiwać 192 kHz.
Domyślne efekty dostarczane przez Androida są testowane pod kątem obsługi 192 kHz przy standardowych częstotliwościach.
Dozwolone standardowe częstotliwości to 88,2 kHz, 96 kHz, 176,4 kHz i 192 kHz.
- Wielokanałowy: domyślne efekty odtwarzania na Androidzie są testowane pod kątem obsługi wielu kanałów do 8 kanałów.
- Timing: informacje o czasie trwania są zawarte w ramach audio.
Od Androida 9 te ulepszenia nie wymagają implementacji przez partnera:
- Liczba jednoczesnych ścieżek wyjściowych klienta zwiększa się z 14 do 40, ponieważ ograniczone instancje klienta
AudioTrack
stanowiły problem w przypadku aplikacji na Androida 8.x.
- Maksymalna pamięć klienta/serwera zwiększa się z 4 MB do 32 MB (w zależności od łącznej pamięci urządzenia), aby umożliwić odtwarzanie większej liczby ścieżek audio w wysokiej rozdzielczości.
- Zwiększenie łącznej liczby ścieżek mieszanych z 32 do 256, aby zapobiec rywalizacji o zasoby między aplikacjami a interfejsem systemu.
Zmiany efektu wyjściowego
Informacje o zmianach w Androidzie 11 znajdziesz w artykule Efekty dźwiękowe.
Przed wydaniem Androida 9 przetwarzanie łańcucha efektów było realizowane w formacie stereo int16. Ta metoda miała kilka ograniczeń:
- Wszystkie efekty wyjściowe wymuszają konwersję danych audio o pływającej przecinku na int16, co powoduje utratę dokładności.
- Efekty wyjściowe zostały odrzucone przez wyjściowe złącza z większą niż 2 liczbą kanałów.
W wersji Androida 9 ulepszony został przetwarzający łańcuch efektów, aby obsługiwał format wielokanałowej liczby zmiennoprzecinkowej. Najważniejsze kwestie:
- Efekty oprogramowania na Androida zostały już przeniesione do formatu stereo float.
- Starsze efekty są obsługiwane przez adaptery formatów, które w razie potrzeby konwertują wartości zmiennoprzecinkowe na zmiennoprzecinkowe 16-bitowe.
Implementowanie efektów wyjściowych
Referencyjna implementacja efektów wyjściowych jest dostępna na stronie frameworks/av/media/libeffects
.
Partnerzy implementujący własne niestandardowe efekty wyjściowe powinni wykonać te czynności w przypadku wersji Androida 10:
- Zaktualizuj efekty wyjściowe, aby obsługiwały format wielokanałowej liczby zmiennoprzecinkowej:
- Obsługa typu Int16 nie jest już wymagana.
- Obsługuje liczbę kanałów wyjściowych od 2 do 8 (w celu zapewnienia zgodności w przyszłości rozważ liczbę od 1 do 30).
- Obsługa liczby kanałów wejściowych odpowiadających liczbie kanałów wyjściowych w przypadku efektów wstawiania. Efekty pomocnicze nadal będą widzieć kanał wejściowy z liczbą 1 (mono).
- Obsługuje zarówno maski pozycji kanału (kanoniczne), jak i maski indeksu kanału
(1 << n) - 1
.
- Jeśli musisz nadal obsługiwać starsze efekty wyjściowe dostawcy i nie możesz ich zaktualizować, zweryfikuj starszy kod w ten sposób:
- Starsze efekty wyjściowe (wstawianie) muszą odrzucać nieobsługiwane konfiguracje w
EFFECT_CMD_SET_CONFIG
.
- Sprawdź, czy format jest int16.
- Sprawdź, czy maski kanałów wejściowych i wyjściowych są stereo.
- Jeśli którykolwiek z testów się nie powiedzie, zwracaj
-EINVAL
.
- Starsze efekty wyjściowe (pomocnicze) są konfigurowane przez AudioFlingera za pomocą maski mono kanału wejściowego i potencjalnie wielokanałowych masek kanałów wyjściowych, w zależności od tego, czy odbiornik wyjściowy jest wielokanałowy.
Musi odrzucić nieobsługiwane konfiguracje w
EFFECT_CMD_SET_CONFIG
.
- Sprawdź, czy format jest int16.
- Sprawdź, czy maska kanału wejściowego jest mono, a maska kanału wyjściowego stereo.
- Jeśli którykolwiek z testów się nie powiedzie, zwracaj
-EINVAL
.
- Weryfikuj starszy kod. Nie zakładaj, że wszystko działa.
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-07-27 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-07-27 UTC."],[],[],null,["# High-resolution audio\n\nThe Android 10 release includes the following\nimprovements for high-resolution audio:\n\n- **Float:** WAV, FLAC codecs, and extractors are updated to support float (24+ bits of lossless precision). Downmix and Virtualizer effects are updated to float. Updated precision is allowed by MediaPlayer (NuPlayer).\n- **High-frequency:** WAV, FLAC codecs, and extractors are updated to support 192 kHz. The default Android supplied effects are tested for 192 kHz support at standard frequencies. The standard frequencies permitted are 88.2 kHz, 96 kHz, 176.4 kHz, and 192 kHz.\n- **Multichannel:** Default Android playback effects are tested for multichannel support to eight channels.\n- **Timing:** Timing information is included throughout the audio framework.\n\nStarting in Android 9, the following improvements\ndon't require any partner implementation:\n\n- The number of simultaneous client output tracks increases from 14 to 40, as limited client instances of `AudioTrack` have been an issue for apps in Android 8.x.\n- Maximum client/server memory increases from 4 MB to 32 MB (depending on total device memory) to allow more simultaneous high-resolution audio tracks.\n- Total mixed tracks increases from 32 to 256 to prevent resource contention between apps and the System UI.\n\nOutput effect changes\n---------------------\n\nSee [Audio\neffects](/docs/core/audio/audio-effects) for Android 11 release changes.\n\nPrior to the Android 9 release, effect chain processing\nwas implemented in stereo int16 sample format. This had several limitations:\n\n- All output effects forced conversion from floating point audio data to int16, causing loss of precision.\n- Output effects were rejected from output sinks with a channel count greater than two.\n\nIn the Android 9 release, the effect chain processing\npipeline is upgraded to support the multichannel float format. Key points:\n\n- Android software effects are already migrated to stereo float.\n- Legacy effects are supported with format adapters, which convert float to int16 as needed.\n\nImplement output effects\n------------------------\n\nA reference implementation for output effects is available under\n`frameworks/av/media/libeffects`.\n\nPartners implementing their own custom output effects should do the\nfollowing for the Android 10 release:\n\n- Update output effects to support the multichannel float format:\n - Int16 processing support is no longer required.\n - Support output channel counts from 2--8 (for future compatibility consider counts from 1--30).\n - Support input channel counts matching output channel counts for insert effects. Auxiliary effects continue to see an input channel count of 1 (mono).\n - Support both channel position masks (canonical) and channel index masks of `(1 \u003c\u003c n) - 1`.\n- If you must continue to support legacy vendor output effects and can't update them, then verify legacy code as follows:\n - Legacy output (insert) effects **must reject** unsupported configurations in `EFFECT_CMD_SET_CONFIG`.\n - Check that the format is int16.\n - Check that the input and output channel masks are stereo.\n - If either check fails, return `-EINVAL`.\n - Legacy output (auxiliary) effects are configured by AudioFlinger with a mono input channel mask and potentially multichannel output channel masks, depending on whether the output sink is multichannel. They **must reject** unsupported configurations in `\n EFFECT_CMD_SET_CONFIG`.\n - Check that the format is int16.\n - Check that the input channel mask is mono and the output channel mask is stereo.\n - If either check fails, return `-EINVAL`.\n - Verify legacy code. Don't assume that it works!"]]