Android 14 מספק ממשקי API למפתחים שאפליקציות יכולות להשתמש בהם כדי לשלוח שאילתות ולהגדיר מאפיינים מועדפים של מיקסר להפעלת אודיו ב-USB. מאפייני המיקסר המועדפים האלה משפרים את חוויית ההפעלה של אודיו ב-USB, כי הם מאפשרים לאפליקציות להגדיר את פורמט האודיו, את מסכת הערוצים, את קצב הדגימה ואת התנהגות המיקסר. באמצעות ממשקי ה-API המועדפים של המיקסר במכשירי USB נתמכים, המשתמשים יכולים ליהנות מהשמעת אודיו עם זמן אחזור נמוך יותר ומתוכן אודיו ברזולוציה גבוהה יותר.
בנוסף, התכונה הזו מספקת תמיכה בהתנהגות אופציונלית של מיקסר הפעלה מושלמת (bit-perfect) למכשירי USB. מצב bit-perfect מאפשר הפעלה של פורמטים מאומתים באיכות גבוהה (MQA) ופורמטים דיגיטליים של זרם ישיר (DSD) בממירים דיגיטליים לאנלוגיים (DAC) תואמים.
ממשק
מרכז המדיניות בנושא אודיו מטפל במאפייני המיקסר במסגרת. המחלקות AudioMixerAttributes מייצגות את המאפיינים של המיקסר. המחלקות AudioMixerAttributes כוללות אובייקט AudioFormat שמתאר את פורמט נתוני האודיו, מסכת הערוצים ותדירות הדגימה של המיקסר. כברירת מחדל, המסגרת קובעת את התנהגות המיקסר, שמערבב את כל מקורות האודיו ומחיל עליהם את בקרת עוצמת הקול והאפקטים.
אם התנהגות המיקסר היא במצב BIT_PERFECT, המערכת שולחת את תוכן האודיו ללא שינוי דרך framework האודיו, HAL ומעבד אותות ספרתיים (DSP) האופציונלי, מה-API ועד להתקן ה-USB. מצב BIT_PERFECT תומך בפורמטים מקודדים, כמו MQA או DSD, שבהם כל שינוי בעוצמת הקול או ערבוב יכולים להרוס את המשמעות של הנתונים.
כשמגדירים מאפיינים של מיקסר באפליקציות, המסגרת פותחת מחדש את זרם הפלט עם מאפיינים חדשים, אם צריך. באיור הבא מוצג הממשק בין האפליקציה, המסגרת ו-HAL כשמגדירים מאפיינים של מיקסר:
איור 1. ממשק בין האפליקציה, המסגרת ו-HAL.
הטמעה
הטמעה של מאפייני מיקסר מועדפים, מלבד המאפיין BIT_PERFECT, לאודיו USB היא חובה ב-Android 14.
מאפיינים מועדפים של מיקסר
כדי לתמוך במאפייני מיקסר מועדפים, הספקים צריכים לתמוך בהפניית מכשירי USB ליציאת המיקס הדינמי, באופן הבא:
מגדירים את יציאת התמהיל הדינמי ב-
usb_audio_policy_configuration.xml.מצהירים על היכולת לנתב התקני 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).