صدای با وضوح بالا

نسخه اندروید ۱۰ شامل بهبودهای زیر برای صدای با وضوح بالا است:

  • شناوری: کدک‌ها و استخراج‌کننده‌های WAV، FLAC برای پشتیبانی از شناوری (۲۴+ بیت دقت بدون افت کیفیت) به‌روزرسانی شده‌اند. افکت‌های Downmix و Virtualizer برای شناوری به‌روزرسانی شده‌اند. دقت به‌روزرسانی‌شده توسط MediaPlayer (NuPlayer) مجاز است.
  • فرکانس بالا: کدک‌ها و استخراج‌کننده‌های WAV، FLAC برای پشتیبانی از ۱۹۲ کیلوهرتز به‌روزرسانی شده‌اند. افکت‌های پیش‌فرض اندروید برای پشتیبانی از ۱۹۲ کیلوهرتز در فرکانس‌های استاندارد آزمایش شده‌اند. فرکانس‌های استاندارد مجاز ۸۸.۲ کیلوهرتز، ۹۶ کیلوهرتز، ۱۷۶.۴ کیلوهرتز و ۱۹۲ کیلوهرتز هستند.
  • چندکاناله: جلوه‌های پخش پیش‌فرض اندروید برای پشتیبانی چندکاناله تا هشت کانال آزمایش شده‌اند.
  • زمان‌بندی: اطلاعات زمان‌بندی در سراسر چارچوب صوتی گنجانده شده است.

با شروع از اندروید ۹، بهبودهای زیر نیازی به پیاده‌سازی توسط هیچ شریکی ندارند:

  • تعداد ترک‌های خروجی همزمان کلاینت از ۱۴ به ۴۰ افزایش می‌یابد، زیرا نمونه‌های محدود کلاینت AudioTrack برای برنامه‌ها در اندروید ۸.x مشکل‌ساز بوده است.
  • حداکثر حافظه کلاینت/سرور از ۴ مگابایت به ۳۲ مگابایت (بسته به کل حافظه دستگاه) افزایش می‌یابد تا امکان پخش همزمان تعداد بیشتری از آهنگ‌های صوتی با وضوح بالا فراهم شود.
  • تعداد کل آهنگ‌های ترکیبی از ۳۲ به ۲۵۶ افزایش یافته است تا از تداخل منابع بین برنامه‌ها و رابط کاربری سیستم جلوگیری شود.

تغییرات افکت خروجی

برای تغییرات نسخه اندروید ۱۱، به بخش جلوه‌های صوتی مراجعه کنید.

قبل از انتشار اندروید ۹، پردازش زنجیره افکت با فرمت نمونه استریو int16 پیاده‌سازی می‌شد. این امر چندین محدودیت داشت:

  • تمام جلوه‌های خروجی، تبدیل اجباری از داده‌های صوتی ممیز شناور به int16 را به دنبال داشتند که باعث از دست رفتن دقت می‌شد.
  • اثرات خروجی از چاهک‌های خروجی با تعداد کانال بیشتر از دو رد شدند.

در نسخه اندروید ۹، خط لوله پردازش زنجیره افکت ارتقا یافته تا از فرمت float چند کاناله پشتیبانی کند. نکات کلیدی:

  • جلوه‌های نرم‌افزاری اندروید از قبل به حالت شناور استریو منتقل شده‌اند.
  • افکت‌های قدیمی با آداپتورهای فرمت پشتیبانی می‌شوند که در صورت نیاز، نوع داده float را به int16 تبدیل می‌کنند.

پیاده‌سازی جلوه‌های خروجی

یک پیاده‌سازی مرجع برای جلوه‌های خروجی در مسیر frameworks/av/media/libeffects موجود است.

شرکایی که افکت‌های خروجی سفارشی خود را پیاده‌سازی می‌کنند، باید موارد زیر را برای نسخه اندروید ۱۰ انجام دهند:

  • به‌روزرسانی جلوه‌های خروجی برای پشتیبانی از قالب شناور چندکاناله:
    • پشتیبانی از پردازش Int16 دیگر مورد نیاز نیست.
    • پشتیبانی از تعداد کانال‌های خروجی از ۲ تا ۸ (برای سازگاری‌های بعدی، تعداد کانال‌های خروجی از ۱ تا ۳۰ را در نظر بگیرید).
    • پشتیبانی از تعداد کانال‌های ورودی مطابق با تعداد کانال‌های خروجی برای افکت‌های اینسرت. افکت‌های کمکی همچنان تعداد کانال‌های ورودی ۱ (مونو) را نشان می‌دهند.
    • از هر دو ماسک موقعیت کانال (متعارف) و ماسک شاخص کانال (1 << n) - 1 پشتیبانی کنید.
  • اگر باید به پشتیبانی از جلوه‌های خروجی قدیمی فروشندگان ادامه دهید و نمی‌توانید آنها را به‌روزرسانی کنید، کد قدیمی را به صورت زیر تأیید کنید:
    • افکت‌های خروجی قدیمی (درج) باید پیکربندی‌های پشتیبانی نشده در EFFECT_CMD_SET_CONFIG را رد کنند.
      • بررسی کنید که فرمت int16 باشد.
      • بررسی کنید که ماسک‌های کانال ورودی و خروجی استریو باشند.
      • اگر هر یک از بررسی‌ها ناموفق بود، -EINVAL برمی‌گرداند.
    • جلوه‌های خروجی قدیمی (کمکی) توسط AudioFlinger با یک ماسک کانال ورودی تک کاناله و ماسک‌های کانال خروجی بالقوه چند کاناله، بسته به اینکه آیا چاهک خروجی چند کاناله است یا خیر، پیکربندی می‌شوند. آن‌ها باید پیکربندی‌های پشتیبانی نشده در EFFECT_CMD_SET_CONFIG را رد کنند.
      • بررسی کنید که فرمت int16 باشد.
      • بررسی کنید که ماسک کانال ورودی مونو و ماسک کانال خروجی استریو باشد.
      • اگر هر یک از بررسی‌ها ناموفق بود، -EINVAL برمی‌گرداند.
    • کد قدیمی را تأیید کنید. فرض نکنید که کار می‌کند!