Các thuộc tính máy trộn ưu tiên trên thiết bị USB

Android 14 cung cấp các API cho nhà phát triển mà ứng dụng có thể dùng để truy vấn và định cấu hình các thuộc tính bộ trộn ưu tiên cho USB phát âm thanh. Các thuộc tính trình trộn ưu tiên này cải thiện trải nghiệm phát âm thanh qua USB bằng cách cho phép các ứng dụng đặt định dạng âm thanh, mặt nạ kênh, tốc độ lấy mẫu và hành vi của bộ trộn. Với việc sử dụng ưu tiên trên thiết bị USB được hỗ trợ, người dùng có thể phát lại âm thanh với độ trễ thấp hơn và nội dung âm thanh có độ phân giải cao hơn.

Tính năng này cũng hỗ trợ bộ trộn phát hoàn hảo một chút tuỳ chọn đối với thiết bị USB. Chế độ bit hoàn hảo cho phép phát lại trên các định dạng được xác thực chất lượng (MQA) và kỹ thuật số phát trực tiếp (DSD) bộ chuyển đổi kỹ thuật số sang tương tự (DAC) tương thích.

Giao diện

Trình quản lý chính sách âm thanh xử lý các thuộc tính bộ trộn trong khung. Chiến lược phát hành đĩa đơn AudioMixerAttributes đại diện cho các thuộc tính của bộ trộn. Lớp AudioMixerAttributes bao gồm một AudioFormat mô tả định dạng dữ liệu âm thanh, mặt nạ kênh và tốc độ lấy mẫu cho máy trộn. Theo mặc định, khung này xác định hành vi của trình kết hợp, sẽ kết hợp tất cả các nguồn âm thanh, đồng thời áp dụng các hiệu ứng và điều chỉnh âm lượng.

Nếu hành vi của bộ trộn sử dụng chế độ BIT_PERFECT, hệ thống sẽ gửi âm thanh mà không cần sửa đổi thông qua khung âm thanh, lớp trừu tượng phần cứng (HAL) và không bắt buộc bộ xử lý tín hiệu kỹ thuật số (DSP), từ API đến thiết bị USB. Chiến lược phát hành đĩa đơn Chế độ BIT_PERFECT hỗ trợ các định dạng mã hoá, chẳng hạn như MQA hoặc DSD, trong đó bất kỳ điều chỉnh theo tỷ lệ hoặc kết hợp âm lượng có thể làm mất ý nghĩa của dữ liệu.

Khi ứng dụng định cấu hình các thuộc tính trình kết hợp, khung sẽ mở lại luồng đầu ra cùng với các thuộc tính mới (nếu cần). Hình dưới đây cho thấy giao diện giữa ứng dụng, khung và HAL khi đã đặt thuộc tính của bộ kết hợp:

ưa-trộn-attr

Hình 1. Giao diện giữa ứng dụng, khung và HAL.

Triển khai

Triển khai các thuộc tính trình kết hợp ưu tiên, ngoài BIT_PERFECT Đối với âm thanh USB là thuộc tính bắt buộc đối với Android 14.

Thuộc tính máy trộn ưu tiên

Để hỗ trợ các thuộc tính ưu tiên của bộ trộn, nhà cung cấp phải hỗ trợ định tuyến thiết bị USB vào cổng kết hợp động, như sau:

  1. Xác định cổng kết hợp động trong usb_audio_policy_configuration.xml.

  2. Khai báo khả năng định tuyến thiết bị USB đến cổng kết hợp động trong cấu hình chính sách âm thanh hoặc trong phương thức AIDL getAudioPortsgetAudioRoutes.

Xem cách triển khai tham chiếu cho HAL âm thanh USB trong hardware/libhardware/modules/usbaudio. Xem ví dụ về cổng kết hợp động trong frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml.

Thuộc tính phát hoàn hảo

Thuộc tính phát có độ hoàn hảo bit là không bắt buộc và chỉ được hỗ trợ trong AIDL triển khai HAL âm thanh. Để hỗ trợ phát lại một cách hoàn hảo, nhà cung cấp phải thêm cờ đầu ra có độ hoàn hảo bit AUDIO_OUTPUT_FLAG_BIT_PERFECT vào tệp động cổng kết hợp có thể được định tuyến đến thiết bị USB.

Mã mẫu sau đây cho thấy cách sử dụng AUDIO_OUTPUT_FLAG_BIT_PERFECT gắn cờ trong 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>

Nếu thuộc tính phát lại có độ hoàn hảo về bit được chỉ định, HAL phải đảm bảo rằng luồng âm thanh được gửi đến thiết bị USB mà không có bất kỳ sửa đổi nào, tức là luồng âm thanh không được có bất kỳ tỷ lệ âm lượng, chuyển đổi tốc độ lấy mẫu hoặc âm thanh nào hiệu ứng xử lý và không được kết hợp trong DSP. Trong trường hợp này, phần cứng sẽ kiểm soát âm lượng vì khung không cung cấp bất kỳ phần mềm kiểm soát âm lượng nào.

Xác nhận kết quả

Chạy chương trình kiểm thử CTS trong PreferredMixerAttributesTestActivity.java để xác thực tính năng hỗ trợ các thuộc tính ưu tiên cho bộ trộn cho thiết bị USB.

Để xác thực việc triển khai thuộc tính BIT_PERFECT, hãy sử dụng bộ DAC USB hỗ trợ MQA và DSD qua các định dạng âm thanh điều chế mã xung (PCM).