سمات الخلاط المفضّلة على أجهزة USB

يوفر Android 14 واجهات برمجة تطبيقات للمطوّرين يمكن للتطبيقات استخدامها للاستعلام عن سمات الخالط المفضّلة وضبطها لتشغيل الصوت عبر USB. تحسِّن سمات الخالط المفضّلة هذه تجربة تشغيل الصوت عبر USB من خلال السماح للتطبيقات بضبط تنسيق الصوت، وقناع القناة ومعدّل البيانات في الملف الصوتي وسلوك الخالط. باستخدام واجهات برمجة تطبيقات الخالط المفضّلة على أجهزة USB المتوافقة، يمكن للمستخدمين تشغيل الصوت بزمن انتقال أقل ومحتوى صوتي بدقة أعلى.

توفّر هذه الميزة أيضًا دعمًا لسلوك الخالط الاختياري لتشغيل الصوت بدون أي تعديل على أجهزة USB. يتيح وضع "بدون أي تعديل" تشغيل تنسيقات الصوت الموثّقة بجودة عالية (MQA) والصوت الرقمي المباشر (DSD) على محوّلات الصوت الرقمي إلى التناظري (DAC) المتوافقة.

واجهة البث المباشر

يدير مدير سياسة الصوت سمات الخالط في إطار العمل. يمثّل الصف AudioMixerAttributes سمات الخالط. يتضمّن الصف AudioMixerAttributes كائن AudioFormat يصف تنسيق البيانات الصوتية وقناع القناة ومعدّل البيانات في الملف الصوتي لـ الخالط. يحدّد إطار العمل تلقائيًا سلوك الخالط الذي يمزج جميع المصادر الصوتية ويطبّق التحكّم في مستوى الصوت والمؤثرات.

إذا كان سلوك الخالط يستخدم وضع BIT_PERFECT، يرسل النظام المحتوى الصوتي بدون تعديل من خلال إطار العمل الصوتي وHAL ومعالج الإشارات الرقمية (DSP) اختياريًا، من واجهة برمجة التطبيقات إلى جهاز USB. يتوافق وضع BIT_PERFECT مع التنسيقات المرمّزة، مثل MQA أو DSD، التي يمكن أن يؤدي فيها أي تغيير في مستوى الصوت أو مزج إلى إتلاف معنى البيانات.

عندما تضبط التطبيقات سمات الخالط، يعيد إطار العمل فتح دفق الإخراج بسمات جديدة، إذا لزم الأمر. يوضّح الشكل التالي الواجهة بين التطبيق وإطار العمل وHAL عند ضبط سمات الخالط:

preferred-mixer-attr

الشكل 1: الواجهة بين التطبيق وإطار العمل وHAL

التنفيذ

يجب تنفيذ سمات الخالط المفضّلة، باستثناء السمة BIT_PERFECT، للصوت عبر USB في Android 14.

سمات الخالط المفضّلة

لدعم سمات الخالط المفضّلة، على البائعين دعم توجيه أجهزة USB إلى منفذ المزيج الديناميكي، على النحو التالي:

  1. تحديد منفذ المزيج الديناميكي في usb_audio_policy_configuration.xml.

  2. التعريف بإمكانية توجيه أجهزة USB إلى منافذ المزيج الديناميكي إما في إعدادات سياسة الصوت أو في طريقتَي AIDL ‏getAudioPorts وgetAudioRoutes.

يمكنك الاطّلاع على التنفيذ المرجعي لـ USB audio HAL ضِمن 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 بدون أي تعديل، أي يجب ألا يتضمّن دفق الصوت أي تغيير في مستوى الصوت أو تحويل لمعدّل البيانات في الملف الصوتي أو مؤثرات معالجة الصوت، ويجب ألا يتم مزجه في معالج الإشارات الرقمية. في هذه الحالة، تتحكّم الأجهزة في مستوى الصوت لأنّ إطار العمل لا يوفّر أي تحكّم في مستوى الصوت للبرامج.

التحقق من صحة البيانات

يمكنك تشغيل اختبارات CTS في PreferredMixerAttributesTestActivity.java للتحقق من دعم سمات الخالط المفضّلة لأجهزة USB.

للتحقق من صحة تنفيذ السمة BIT_PERFECT، استخدِم محوّلات الصوت الرقمي إلى التناظري عبر USB التي تتوافق مع MQA وDSD عبر تنسيقات الصوت بتعديل رمز النبضة (PCM).