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:
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:
Xác định cổng kết hợp động trong
usb_audio_policy_configuration.xml
.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
getAudioPorts
vàgetAudioRoutes
.
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).