اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release
بدلاً من aosp-main
لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
صوت بدقة عالية
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يتضمّن إصدار Android 10 التحسينات التالية
على الصوت بدقة عالية:
- الأرقام العائمة: تم تعديل برامج ترميز وأدوات استخراج تنسيقَي WAV وFLAC لتتوافق مع الأرقام العائمة
(أكثر من 24 بت من الدقة بدون فقدان البيانات). تم تعديل تأثيرَي "تقليل الحجم" و"الصوت الافتراضي" ليصبحا متغيرَين.
يسمح MediaPlayer (NuPlayer) بدقة معدَّلة.
- التردد العالي: تم تعديل برامج ترميز WAV وFLAC وأدوات استخراج الصوت لتتوافق مع 192 كيلوهرتز.
يتم اختبار التأثيرات التلقائية التي يوفّرها Android للتأكّد من توافقها مع تردد 192 kHz عند الترددات العادية.
وتشمل التردّدات العادية المسموح بها 88.2 كيلوهرتز و96 كيلوهرتز و176.4 كيلوهرتز و
192 كيلوهرتز.
- القنوات المتعددة: تم اختبار تأثيرات التشغيل التلقائية على Android للتأكد من إمكانية استخدام قنوات متعددة وحتى ثماني قنوات.
- التوقيت: يتم تضمين معلومات التوقيت في إطار العمل
الصوتي.
اعتبارًا من Android 9، لن تتطلّب التحسينات التالية
أيّ تنفيذ من الشركاء:
- تم زيادة عدد مسارات الإخراج المتزامنة للعملاء من 14
إلى 40، لأنّ النُسخ المحدودة من
AudioTrack
كانت مشكلة في
التطبيقات التي تعمل بنظام التشغيل Android 8.x.
- تم زيادة الحد الأقصى لذاكرة العميل/الخادم من 4 ميغابايت إلى 32 ميغابايت (حسب
إجمالي ذاكرة الجهاز) للسماح بتشغيل المزيد من مقاطع الموسيقى المتزامنة العالية الدقة.
- تم زيادة إجمالي عدد المسارات المختلطة من 32 إلى 256 لمنع تعارض موارد
التطبيقات مع واجهة مستخدم النظام.
تغييرات تأثير الإخراج
اطّلِع على التأثيرات
الصوتية لمعرفة التغييرات في إصدار Android 11.
قبل إصدار Android 9، كانت معالجة سلسلة التأثيرات تتم باستخدام تنسيق نموذج int16 الاستيريو. وكان لهذا الإجراء عدة قيود:
- تفرض جميع تأثيرات الإخراج التحويل من بيانات الصوت ذات النقطة العائمة إلى
int16، ما يؤدي إلى فقدان الدقة.
- تم رفض تأثيرات الإخراج من مصادر الإخراج التي تضم عدد قنوات
أكبر من قناتين.
في الإصدار 9 من Android، تمت ترقية مسار معالجة سلسلتَي التأثير
ليتيح استخدام تنسيق "القنوات المتعددة بتنسيق float". النقاط الرئيسية:
- سبق أن تم نقل تأثيرات برامج Android إلى صورة عائمة استيريو.
- تتوفّر التأثيرات القديمة مع محوّلات التنسيقات التي تحوّل float
إلى int16 حسب الحاجة.
تنفيذ تأثيرات الإخراج
يتوفّر تنفيذ مرجعي لتأثيرات الإخراج ضمن
frameworks/av/media/libeffects
.
على الشركاء الذين ينفّذون تأثيرات الإخراج المخصّصة الخاصة بهم اتّباع الخطوات التالية لإصدار Android 10:
- عدِّل تأثيرات الإخراج لتتوافق مع تنسيق "القنوات المتعددة العائمة":
- لم يعُد مطلوبًا توفُّر معالجة Int16.
- أن تتيح عدد قنوات الإخراج من 2 إلى 8 (للتوافق المستقبلي،
يجب أن يتراوح العدد بين 1 و30)
- أن تتطابق أعداد قنوات الإدخال مع أعداد قنوات الإخراج لأجل
إدراج التأثيرات تستمر التأثيرات المساعِدة في عرض عدد قنوات إدخال
واحد (صوت أحادي).
- أن تتيح استخدام أقنعة مواضع القنوات (الأساسية) وأقنعة
(1 << n) - 1
لفهرس القنوات
- إذا كان عليك مواصلة توفير تأثيرات الإخراج القديمة للمورّدين وتعذّر
تعديلها، عليك التحقّق من الرمز القديم على النحو التالي:
- يجب أن ترفض
المؤثرات القديمة للإخراج (الإدراج) الإعدادات غير المتوافقة في
EFFECT_CMD_SET_CONFIG
.
- تأكَّد من أنّ التنسيق هو int16.
- تأكَّد من أنّ قناتَي الإدخال والإخراج ثنائيتا الصوت.
- إذا تعذّر إجراء أي من التحقّقَين، أعِد القيمة
-EINVAL
.
- يتم ضبط المؤثرات الصوتية القديمة (المساعدة) من خلال AudioFlinger
باستخدام قناع قناة إدخال أحادي الصوت وقناع قناة إخراج
متعدد القنوات، وذلك استنادًا إلى ما إذا كان مسار الإخراج متعدد القنوات.
يجب رفض الإعدادات غير المتوافقة في
EFFECT_CMD_SET_CONFIG
.
- تأكَّد من أنّ التنسيق هو int16.
- تأكَّد من أنّ قناع قناة الإدخال أحادي الصوت وأنّ قناع قناة المخرج
ستيريو.
- إذا تعذّر إجراء أي من التحقّقَين، أعِد القيمة
-EINVAL
.
- التحقّق من الرمز القديم لا تفترض أنّه يعمل.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-27 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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!"]]