Android 14, uygulamaların USB ses oynatma için tercih edilen mikser özelliklerini sorgulamak ve yapılandırmak üzere kullanabileceği geliştirici API'leri sağlar. Bu tercih edilen mikser özellikleri, uygulamaların ses biçimini, kanal maskesini, örnekleme hızını ve mikser davranışını ayarlamasına olanak tanıyarak USB ses oynatma deneyimini iyileştirir. Desteklenen USB cihazlarda tercih edilen mikser API'lerinin kullanılmasıyla kullanıcılar daha düşük gecikmeli ses çalma ve daha yüksek çözünürlüklü ses içeriği elde edebilir.
Bu özellik, USB cihazlar için isteğe bağlı bit mükemmel oynatma karıştırıcı davranışını da destekler. Bit mükemmel modu, uyumlu dijital-analog dönüştürücülerde (DAC) ana kalite doğrulanmış (MQA) ve doğrudan akış dijital (DSD) biçimlerinin oynatılmasını sağlar.
Arayüz
Ses Politikası Yöneticisi, çerçevedeki mikser özelliklerini yönetir. AudioMixerAttributes
sınıfı, karıştırıcının özelliklerini temsil eder. AudioMixerAttributes
sınıfı, mikserin ses verisi biçimini, kanal maskesini ve örnekleme hızını açıklayan bir AudioFormat
nesnesi içerir. Varsayılan olarak, çerçeve karıştırıcı davranışını belirler. Bu davranış, tüm ses kaynaklarını karıştırır ve ses kontrolü ile efektleri uygular.
Mikser davranışı BIT_PERFECT
modunu kullanıyorsa sistem, ses içeriğini API'den USB cihazına kadar ses çerçevesi, HAL ve isteğe bağlı olarak dijital sinyal işleyici (DSP) aracılığıyla değiştirilmeden gönderir. BIT_PERFECT
modu, MQA veya DSD gibi kodlanmış biçimleri destekler. Bu biçimlerde, herhangi bir ses ölçeklendirme veya karıştırma işlemi verilerin anlamını bozabilir.
Uygulamalar mikser özelliklerini yapılandırdığında çerçeve, gerekirse çıkış akışını yeni özelliklerle yeniden açar. Aşağıdaki şekilde, karıştırıcı özellikleri ayarlandığında uygulama, çerçeve ve HAL arasındaki arayüz gösterilmektedir:
1. şekil. Uygulama, çerçeve ve HAL arasındaki arayüz.
Uygulama
USB ses için BIT_PERFECT
özelliği dışında tercih edilen mikser özelliklerinin uygulanması Android 14'te zorunludur.
Tercih edilen mikser özellikleri
Tedarikçiler, tercih edilen mikser özelliklerini desteklemek için USB cihazların dinamik miks bağlantı noktasına yönlendirilmesini aşağıdaki şekilde desteklemelidir:
usb_audio_policy_configuration.xml
içinde dinamik karışım bağlantı noktasını tanımlayın.USB cihazlarını dinamik miks bağlantı noktalarına yönlendirme özelliğini ses politikası yapılandırmasında veya
getAudioPorts
vegetAudioRoutes
AIDL yöntemlerinde bildirin.
USB ses HAL'si için referans uygulamayı hardware/libhardware/modules/usbaudio
bölümünde bulabilirsiniz.
frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml
bölümünde dinamik karışım bağlantı noktası örneğini inceleyin.
Bit'i tam olarak koruyarak oynatma özelliği
Bit-perfect oynatma özelliği isteğe bağlıdır ve yalnızca Audio HAL'ın AIDL uygulamasında desteklenir. Tedarikçiler, bit'i tam olarak eşleyen oynatmayı desteklemek için USB cihazına yönlendirilebilen dinamik karışım bağlantı noktasına AUDIO_OUTPUT_FLAG_BIT_PERFECT
bit'i tam olarak eşleyen çıkış işaretini eklemelidir.
Aşağıdaki kod örneğinde, AUDIO_OUTPUT_FLAG_BIT_PERFECT
işaretinin usb_audio_policy_configuration.xml
içinde kullanımı gösterilmektedir:
<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 playback özelliği belirtilmişse HAL, ses akışının USB cihazına herhangi bir değişiklik yapılmadan gönderilmesini sağlamalıdır. Yani ses akışında herhangi bir ses ölçeklendirme, örnekleme hızı dönüştürme veya ses işleme efekti olmamalı ve DSP'de karıştırılmamalıdır. Bu durumda, çerçeve herhangi bir yazılım ses kontrolü sağlamadığından ses düzeyi donanım tarafından kontrol edilir.
Doğrulama
USB cihazlar için tercih edilen mikser özelliklerinin desteğini doğrulamak üzere
PreferredMixerAttributesTestActivity.java
CTS testlerini çalıştırın.
BIT_PERFECT
özelliğinin uygulanmasını doğrulamak için MQA ve DSD'yi darbe kodu modülasyonu (PCM) ses biçimlerinde destekleyen USB DAC'leri kullanın.