ویژگی‌های میکسر ترجیحی در دستگاه‌های USB

Android 14 API های توسعه دهنده ای را ارائه می دهد که برنامه ها می توانند از آنها برای جستجو و پیکربندی ویژگی های میکسر ترجیحی برای پخش صدای USB استفاده کنند. این ویژگی‌های ترجیحی میکسر با اجازه دادن به برنامه‌ها برای تنظیم قالب صدا، ماسک کانال، نرخ نمونه و رفتار میکسر، تجربه پخش صدای USB را بهبود می‌بخشد. با استفاده از Mixer API های ترجیحی در دستگاه های USB پشتیبانی شده، کاربران می توانند پخش صوتی با تأخیر کمتر و محتوای صوتی با وضوح بالاتر را دریافت کنند.

این ویژگی همچنین از رفتار میکسر پخش بیت کامل اختیاری برای دستگاه های USB پشتیبانی می کند. حالت بیت کامل پخش را برای فرمت‌های تأیید شده با کیفیت اصلی (MQA) و جریان مستقیم دیجیتال (DSD) در مبدل‌های دیجیتال به آنالوگ (DAC) سازگار می‌سازد.

رابط

Audio Policy Manager ویژگی های میکسر را در چارچوب کنترل می کند. کلاس AudioMixerAttributes نشان دهنده ویژگی های میکسر است. کلاس AudioMixerAttributes شامل یک شی AudioFormat است که فرمت داده های صوتی، ماسک کانال و نرخ نمونه را برای میکسر توصیف می کند. به‌طور پیش‌فرض، چارچوب رفتار میکسر را تعیین می‌کند که تمام منابع صوتی را ترکیب می‌کند و کنترل صدا و افکت‌ها را اعمال می‌کند.

اگر رفتار میکسر از حالت BIT_PERFECT استفاده کند، سیستم محتوای صوتی را بدون تغییر از طریق چارچوب صوتی، HAL و پردازشگر سیگنال دیجیتال (DSP) از API به پایین به دستگاه USB ارسال می‌کند. حالت BIT_PERFECT از فرمت‌های رمزگذاری‌شده مانند MQA یا DSD پشتیبانی می‌کند، که در آن هر تغییر حجم یا ترکیب می‌تواند معنای داده‌ها را از بین ببرد.

وقتی برنامه‌ها ویژگی‌های میکسر را پیکربندی می‌کنند، چارچوب جریان خروجی را با ویژگی‌های جدید، در صورت نیاز، دوباره باز می‌کند. شکل زیر رابط بین برنامه، فریمورک و HAL را در هنگام تنظیم ویژگی های میکسر نشان می دهد:

preferred-mixer-attr

شکل 1. رابط بین برنامه، چارچوب و HAL.

پیاده سازی

اجرای ویژگی های میکسر ترجیحی، به غیر از ویژگی BIT_PERFECT ، برای صدای USB برای اندروید 14 اجباری است.

ویژگی های میکسر ترجیحی

برای پشتیبانی از ویژگی های میکسر ترجیحی، فروشندگان باید از مسیریابی دستگاه های USB به پورت مخلوط پویا به شرح زیر پشتیبانی کنند:

  1. پورت ترکیب پویا را در usb_audio_policy_configuration.xml تعریف کنید.

  2. توانایی مسیریابی دستگاه‌های USB به پورت‌های میکس پویا را در پیکربندی خط‌مشی صوتی یا در روش‌های getAudioPorts و getAudioRoutes AIDL اعلام کنید.

اجرای مرجع برای HAL صوتی USB را در hardware/libhardware/modules/usbaudio ببینید. نمونه ای از پورت ترکیب پویا را در frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml ببینید.

ویژگی پخش بیت کامل

ویژگی پخش بیت کامل اختیاری است و فقط در اجرای AIDL Audio HAL پشتیبانی می شود. برای پشتیبانی از پخش بیت کامل، فروشندگان باید پرچم خروجی بیت کامل AUDIO_OUTPUT_FLAG_BIT_PERFECT را به پورت ترکیب پویا که می‌تواند به دستگاه USB هدایت شود اضافه کنند.

نمونه کد زیر استفاده از پرچم AUDIO_OUTPUT_FLAG_BIT_PERFECT را در usb_audio_policy_configuration.xml نشان می دهد:

<module name="usb" halVersion="2.0">
    <mixPorts>
        <mixPort name="hifi_output"
                 role="source" flags="AUDIO_OUTPUT_FLAG_BIT_PERFECT">
        </mixPort>
    </mixPorts>
    <devicePorts>
        <devicePort tagName="USB Device Out"
                    type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
        </devicePort>
    </devicePorts>
    <routes>
        <route type="mix" sink="USB Device Out"
               sources="hifi_output"/>
    </routes>
</module>

اگر ویژگی پخش بیت کامل مشخص شده باشد، HAL باید اطمینان حاصل کند که جریان صوتی بدون هیچ گونه تغییری به دستگاه USB ارسال می‌شود، یعنی جریان صوتی نباید دارای مقیاس‌بندی حجم، تبدیل نرخ نمونه، یا اثرات پردازش صدا باشد. نباید در DSP مخلوط شود. در این مورد، سخت‌افزار صدا را کنترل می‌کند، زیرا فریم ورک هیچ نرم‌افزاری کنترل حجم صدا را ارائه نمی‌دهد.

اعتبار سنجی

آزمایشات CTS را در PreferredMixerAttributesTestActivity.java اجرا کنید تا پشتیبانی از ویژگی های میکسر ترجیحی برای دستگاه های USB را تأیید کنید.

برای تأیید اجرای ویژگی BIT_PERFECT ، از USB DAC استفاده کنید که از فرمت‌های صوتی MQA و DSD روی مدولاسیون کد پالس (PCM) پشتیبانی می‌کند.