מאפייני מיקסר מועדפים בהתקני USB

ב-Android 14 יש ממשקי API למפתחים שאפשר להשתמש בהם באפליקציות כדי לשלוח שאילתות ולהגדיר מאפייני מיקסר מועדפים להפעלת אודיו ב-USB. מאפייני המיקסר המועדפים האלה משפרים את חוויית ההפעלה של אודיו ב-USB, כי הם מאפשרים לאפליקציות להגדיר את פורמט האודיו, מסכת הערוצים, קצב הדגימה והתנהגות המיקסר. כשמשתמשים בממשקי ה-API המועדפים של המיקסר במכשירי USB נתמכים, המשתמשים יכולים ליהנות מהפעלת אודיו עם זמן אחזור קצר יותר ותוכן אודיו ברזולוציה גבוהה יותר.

התכונה הזו מספקת גם תמיכה בהתנהגות האופציונלית של מיקסר ההפעלה עם איכות ביט מושלמת במכשירי USB. המצב 'ביט-פרפקט' מאפשר הפעלה של פורמטים של אימות איכות מאסטר (MQA) ו-Direct Stream Digital (DSD) בממירים דיגיטליים לאנלוגיים (DAC) תואמים.

ממשק

מנהל מדיניות האודיו מטפל במאפייני המיקסר במסגרת. הכיתה AudioMixerAttributes מייצגת את המאפיינים של המיקסר. הכיתה AudioMixerAttributes כוללת אובייקט AudioFormat שמתאר את פורמט נתוני האודיו, מסכת הערוצים וקצב הדגימה של המיקסר. כברירת מחדל, המסגרת קובעת את התנהגות המיקסר, שמערבב את כל מקורות האודיו ומחילה פקדי עוצמת קול ואפקטים.

אם התנהגות המיקסר משתמשת במצב BIT_PERFECT, המערכת שולחת את תוכן האודיו ללא שינוי דרך מסגרת האודיו, HAL ואפשרות של מעבד אותות דיגיטלי (DSP), מה-API ועד למכשיר ה-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.

אפשר לעיין בהטמעת העזר של 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 DACs שתומכים ב-MQA וב-DSD בפורמטים של אודיו עם מודולציית קוד פולס (PCM).