แอตทริบิวต์มิกเซอร์ที่ต้องการในอุปกรณ์ USB

Android 14 มี API สําหรับนักพัฒนาแอป ที่แอปสามารถใช้ค้นหาและกำหนดค่าแอตทริบิวต์มิกเซอร์ที่ต้องการสำหรับ USB การเล่นเสียง แอตทริบิวต์เครื่องผสมที่ต้องการเหล่านี้ ปรับปรุงประสบการณ์การเล่นเสียงผ่าน USB โดยให้แอปตั้งค่ารูปแบบเสียง Channel Mask, อัตราการสุ่มตัวอย่าง และพฤติกรรมของการผสมผสาน ด้วยการใช้การตั้งค่า Mixer API ในอุปกรณ์ USB ที่รองรับ เพื่อให้ผู้ใช้เล่นเสียงที่มีเวลาในการตอบสนองต่ำได้ และเนื้อหาเสียงความละเอียดสูงขึ้น

ฟีเจอร์นี้ยังรองรับมิกเซอร์การเล่นที่เป็นตัวเลือกที่ยอดเยี่ยมอีกด้วย การทำงานของอุปกรณ์ USB โหมดบิตที่สมบูรณ์แบบช่วยให้เล่นต้นฉบับได้ เปิดรูปแบบการตรวจสอบสิทธิ์คุณภาพ (MQA) และสตรีมดิจิทัลโดยตรง (DSD) ตัวแปลงสัญญาณดิจิทัลเป็นแอนะล็อก (DAC) ได้

SDK โฆษณา B

เครื่องมือจัดการนโยบายเสียงจะจัดการแอตทริบิวต์มิกเซอร์ในเฟรมเวิร์ก AudioMixerAttributes จะแทนแอตทริบิวต์ของเครื่องผสม ชั้นเรียน AudioMixerAttributes ประกอบด้วย AudioFormat ที่อธิบายรูปแบบข้อมูลเสียง การกำบังช่องสัญญาณ และอัตราการสุ่มตัวอย่าง เครื่องผสมอาหาร โดยค่าเริ่มต้น เฟรมเวิร์กจะกำหนดลักษณะการทำงานของเครื่องผสม แหล่งที่มาของเสียงทั้งหมด รวมถึงใช้การควบคุมระดับเสียงและเอฟเฟกต์

หากมิกเซอร์ใช้โหมด BIT_PERFECT ระบบจะส่งเสียง เนื้อหาที่ไม่มีการปรับเปลี่ยนผ่านเฟรมเวิร์กเสียง, HAL และสามารถเลือกได้ ตัวประมวลผลสัญญาณดิจิทัล (DSP) ตั้งแต่ API ลงไปจนถึงอุปกรณ์ USB โหมด BIT_PERFECT รองรับรูปแบบที่เข้ารหัส เช่น MQA หรือ DSD ซึ่ง การปรับขนาดหรือการผสมปริมาณอาจทำลายความหมายของข้อมูลได้

เมื่อแอปกำหนดค่าแอตทริบิวต์มิกเซอร์ เฟรมเวิร์กจะเปิดสตรีมเอาต์พุตอีกครั้ง พร้อมแอตทริบิวต์ใหม่ หากจำเป็น รูปต่อไปนี้แสดงอินเทอร์เฟซระหว่าง แอป เฟรมเวิร์ก และ HAL เมื่อตั้งค่าแอตทริบิวต์มิกเซอร์

เครื่องผสมที่ต้องการ

รูปที่ 1 อินเทอร์เฟซระหว่างแอป เฟรมเวิร์ก และ HAL

การใช้งาน

การใช้แอตทริบิวต์เครื่องผสมอาหารที่ต้องการ นอกเหนือจาก BIT_PERFECT สำหรับเสียง USB จำเป็นสำหรับ Android 14

แอตทริบิวต์เครื่องผสมอาหารที่ต้องการ

ผู้ให้บริการต้องรองรับการกำหนดเส้นทางอุปกรณ์ USB เพื่อรองรับแอตทริบิวต์มิกเซอร์ที่ต้องการ ลงในพอร์ต Dynamic Mix ดังนี้

  1. กำหนดพอร์ตมิกซ์แบบไดนามิกใน usb_audio_policy_configuration.xml

  2. ประกาศความสามารถในการกำหนดเส้นทางอุปกรณ์ USB ไปยังพอร์ตมิกซ์แบบไดนามิกใน การกำหนดค่านโยบายเสียง หรือในเมธอด getAudioPorts และ getAudioRoutes AIDL

ดูการใช้งานข้อมูลอ้างอิงสำหรับ HAL ของเสียง USB ในส่วน hardware/libhardware/modules/usbaudio ดูตัวอย่างพอร์ตมิกซ์แบบไดนามิกใน frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml

แอตทริบิวต์การเล่นแบบ Bit-Perfect

แอตทริบิวต์การเล่นบิตสมบูรณ์แบบเป็นแอตทริบิวต์ที่ไม่บังคับและรองรับเฉพาะใน AIDL เท่านั้น การใช้ HAL ของเสียง ในการรองรับการเล่นบิตสมบูรณ์แบบ ผู้ให้บริการต้อง เพิ่มค่า Flag เอาต์พุตอย่างสมบูรณ์แบบ 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 DAC ที่ รองรับ MQA และ DSD ผ่านรูปแบบเสียงการกล้ำสัญญาณ Pule-code (PCM)