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

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

בנוסף, התכונה הזו מספקת תמיכה בהתנהגות אופציונלית של מיקסר הפעלה מושלמת (bit-perfect) למכשירי USB. מצב bit-perfect מאפשר הפעלה של פורמטים מאומתים באיכות גבוהה (MQA) ופורמטים דיגיטליים של זרם ישיר (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.

אפשר לעיין בהטמעה לדוגמה של 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>

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

אימות

מריצים את בדיקות ה-CTS ב-PreferredMixerAttributesTestActivity.java כדי לאמת את התמיכה במאפייני מיקסר מועדפים למכשירי USB.

כדי לאמת את ההטמעה של מאפיין BIT_PERFECT, משתמשים בממירים דיגיטליים לאנלוגיים (DAC) של USB שתומכים ב-MQA וב-DSD בפורמטים של אודיו עם אפנון קוד-דופק (PCM).