مشخصه‌های میکسر ترجیحی در دستگاه‌های USB

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

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

میانا

«مدیر خط‌مشی صوتی» ویژگی‌های ترکیب‌کننده را در چارچوب مدیریت می‌کند. کلاس AudioMixerAttributes نشان‌دهنده مشخصه‌های میکسر است. کلاس AudioMixerAttributes شامل AudioFormat شیئی است که قالب داده‌های صوتی، ماسک کانال، و نرخ نمونه‌برداری را برای مخلوط‌کننده توصیف می‌کند. به‌طور پیش‌فرض، چارچوب رفتار میکسر را تعیین می‌کند که همه منابع صوتی را ترکیب می‌کند و کنترل میزان صدا و جلوه‌ها را اعمال می‌کند.

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

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

مشخصه مخلوط‌کن ترجیحی

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

پیاده‌سازی

پیاده‌سازی مشخصه‌های میکسر ترجیحی، به‌غیراز مشخصه BIT_PERFECT ، برای صدای USB در Android 14 الزامی است.

مشخصه‌های میکسر ترجیحی

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

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

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

پیاده‌سازی مرجع برای 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>

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

اعتبارسنجی

آزمایش‌های CTS را در PreferredMixerAttributesTestActivity.java اجرا کنید تا پشتیبانی از مشخصه‌های میکسر ترجیحی برای دستگاه‌های USB را اعتبارسنجی کنید.

برای اعتبارسنجی پیاده‌سازی مشخصه BIT_PERFECT، از «مبدل‌های دیجیتال به آنالوگ USB» که از قالب‌های صوتی MQA و DSD ازطریق مدولاسیون کد پالس (PCM) پشتیبانی می‌کنند استفاده کنید.