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

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

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

ממשק

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

אם התנהגות המיקסר משתמשת במצב BIT_PERFECT, המערכת שולחת את האודיו ללא שינוי באמצעות ה-framework של האודיו, HAL ואופציונלי מעבד אותות דיגיטליים (DSP), מה-API ועד להתקן USB. מצב BIT_PERFECT תומך בפורמטים מקודדים כמו MQA או DSD, שבהם שילוב או התאמה של נפח אחסון יכול להרוס את משמעות הנתונים.

כשאפליקציות מגדירות מאפייני מיקסר, ה-framework פותח מחדש את זרם הפלט במאפיינים חדשים, לפי הצורך. האיור הבא מציג את הממשק בין האפליקציה, ה-framework וה-HAL כשמוגדרים מאפייני מיקסר:

מיקסר-העדפה

איור 1. ממשק בין האפליקציה, framework ו-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. במקרה כזה, החומרה שולטת בעוצמת הקול כי ה-framework לא מספק כל בקרת עוצמת קול של תוכנה.

אימות

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

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