نسخه Android 10 شامل بهبودهای زیر برای صدای وضوح بالا است:
- نقطه شناور: کدکها و استخراجکنندههای WAV و FLAC بهروزرسانی میشوند تا از نقطه شناور (دقت بیاتلاف ۲۴+ بیت) پشتیبانی کنند. جلوههای Downmix و Virtualizer به float بهروزرسانی شدهاند. دقت بهروزشده توسط MediaPlayer (NuPlayer) مجاز است.
- فرکانس بالا: کدکها و استخراجکنندههای WAV و FLAC برای پشتیبانی از ۱۹۲ کیلوهرتز بهروزرسانی میشوند. جلوههای پیشفرض ارائهشده در Android برای پشتیبانی از ۱۹۲ کیلوهرتز در بسامدهای استاندارد آزمایش میشوند. فرکانسهای استاندارد مجاز عبارتاند از ۸۸٫۲ کیلوهرتز، ۹۶ کیلوهرتز، ۱۷۶٫۴ کیلوهرتز، و ۱۹۲ کیلوهرتز.
- چندکاناله: جلوههای بازپخش پیشفرض Android برای پشتیبانی چندکاناله تا هشت کانال آزمایش میشوند.
- Timing: اطلاعات زمانبندی در سراسر چارچوب صوتی گنجانده شده است.
از Android 9 به بعد، بهبودهای زیر به هیچگونه پیادهسازی شریک نیاز ندارند:
- تعداد مسیرهای خروجی همزمان کارخواه از ۱۴ به ۴۰ افزایش مییابد، زیرا نمونههای کارخواه محدود
AudioTrackبرای برنامهها در Android نسخه ۸.x مشکلساز بوده است. - حداکثر حافظه کارخواه/کارساز از ۴ مگابایت به ۳۲ مگابایت افزایش مییابد (بسته به کل حافظه دستگاه) تا امکان پخش همزمان قطعههای صوتی با وضوح بالا فراهم شود.
- تعداد کل قطعههای مختلط از ۳۲ به ۲۵۶ افزایش مییابد تا از رقابت منابع بین برنامهها و «میانای کاربری سیستم» جلوگیری شود.
تغییرات جلوه برونداد
برای تغییرات نسخه پخش Android 11، به جلوههای صوتی مراجعه کنید.
پیشاز انتشار Android 9، پردازش زنجیره جلوه در قالب نمونه int16 استریو پیادهسازی شده بود. این روش چندین محدودیت داشت:
- همه جلوههای برونداد تبدیل اجباری از دادههای صوتی ممیز شناور به int16 را ایجاد میکنند که باعث ازدست رفتن دقت میشود.
- جلوههای خروجی از سینکهای خروجی با تعداد کانال بیشتر از دو رد شدند.
در نسخه Android 9، خط لوله پردازش زنجیره جلوه برای پشتیبانی از قالب شناور چندکاناله ارتقا مییابد. نکات کلیدی:
- جلوههای نرمافزاری Android ازقبل به شناور استریو منتقل شدهاند.
- جلوههای قدیمی با آداپتورهای قالب پشتیبانی میشوند که درصورت نیاز، float را به int16 تبدیل میکنند.
پیادهسازی جلوههای برونداد
پیادهسازی مرجع برای جلوههای برونداد در
frameworks/av/media/libeffects دردسترس است.
شرکایی که جلوههای برونداد سفارشی خود را پیادهسازی میکنند باید موارد زیر را برای نسخه Android 10 انجام دهند:
- جلوههای برونداد را بهروز کنید تا از قالب شناور چندکاناله پشتیبانی کند:
- دیگر نیازی به پشتیبانی پردازش Int16 نیست.
- از تعداد کانال خروجی از ۲ تا ۸ پشتیبانی میکند (برای سازگاری در آینده، تعداد ۱ تا ۳۰ را درنظر بگیرید).
- از تعداد کانالهای ورودی که با تعداد کانالهای خروجی برای افکتهای درجشده مطابقت دارند پشتیبانی میکند. جلوههای کمکی همچنان تعداد کانال ورودی ۱ (مونو) را میبینند.
- از هر دو ماسک موقعیت کانال (متعارف) و ماسکهای نمایه کانال
(1 << n) - 1پشتیبانی میکند.
- اگر باید همچنان از جلوههای خروجی فروشنده قدیمی پشتیبانی کنید و نمیتوانید
آنها را بهروز کنید، کد قدیمی را بهصورت زیر تأیید کنید:
- جلوههای برونداد قدیمی (درج) باید پیکربندیهای پشتیبانینشده در
EFFECT_CMD_SET_CONFIGرا رد کنند.- بررسی کنید که قالب int16 باشد.
- بررسی کنید که ماسکهای کانال ورودی و خروجی استریو باشند.
- اگر هریک از این بررسیها ناموفق باشد،
-EINVALبرگردانده میشود.
- جلوههای خروجی قدیمی (کمکی) توسط AudioFlinger با ماسک کانال ورودی مونو و احتمالاً ماسکهای کانال خروجی چندکاناله، بسته به اینکه آیا سینک خروجی چندکاناله است یا نه، پیکربندی میشوند.
باید پیکربندیهای پشتیبانینشده را در
EFFECT_CMD_SET_CONFIGرد کند.- بررسی کنید که قالب int16 باشد.
- بررسی کنید که ماسک کانال ورودی مونو و ماسک کانال خروجی استریو باشد.
- اگر هرکدام از بررسیها ناموفق بود،
-EINVALرا برگردانید.
- کد قدیمی را درستیسنجی کنید. فرض نکنید که کار میکند!
- جلوههای برونداد قدیمی (درج) باید پیکربندیهای پشتیبانینشده در