Android 14, USB ses oynatma için tercih edilen karıştırıcı özelliklerini sorgulamak ve yapılandırmak üzere uygulamaların 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ı belirlemesine olanak tanıyarak USB ses oynatma deneyimini iyileştirir. Kullanıcılar, desteklenen USB cihazlarda tercih edilen karıştırıcı API'lerini kullanarak daha düşük gecikmeli ses oynatma 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ükemmelliğinde oynatma karıştırıcı davranışını da destekler. Bit mükemmelliği modu, uyumlu dijitalden analoga dönüştürücülerde (DAC'ler) usta kalitede kimliği doğrulanmış (MQA) ve doğrudan akış dijital (DSD) biçimlerinin oynatılmasını sağlar.
Arayüz
Ses Politikası Yöneticisi, çerçevedeki karıştırıcı özelliklerini yönetir. AudioMixerAttributes
sınıfı, karıştırıcının özelliklerini temsil eder. AudioMixerAttributes
sınıfı, karıştırıcının ses verisi biçimini, kanal maskesini ve örnekleme hızını tanımlayan bir AudioFormat
nesnesi içerir. Varsayılan olarak çerçeve, tüm ses kaynaklarını karıştıran, ses seviyesi denetimi ve efektler uygulayan karıştırıcı davranışını belirler.
Mikser davranışı BIT_PERFECT
modunu kullanıyorsa sistem, ses içeriğini API'den USB cihaza ses çerçevesi, HAL ve isteğe bağlı olarak dijital sinyal işleyici (DSP) üzerinden değişiklik yapmadan gönderir. BIT_PERFECT
modu, MQA veya DSD gibi kodlanmış biçimleri destekler. Bu biçimlerde ses seviyesi ölçeklendirmesi veya karıştırma, verilerin anlamını bozabilir.
Uygulamalar karıştırıcı ö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:
Şekil 1. Uygulama, çerçeve ve HAL arasındaki arayüz.
Uygulama
Android 14'te USB ses için BIT_PERFECT
özelliği dışındaki tercih edilen karıştırıcı özelliklerinin uygulanması zorunludur.
Tercih edilen karıştırıcı özellikleri
Tercih edilen karıştırıcı özelliklerini desteklemek için tedarikçi firmaların USB cihazları dinamik mix bağlantı noktasına yönlendirmeyi aşağıdaki şekilde desteklemesi gerekir:
usb_audio_policy_configuration.xml
içinde dinamik karma bağlantı noktasını tanımlayın.USB cihazları dinamik mix bağlantı noktalarına yönlendirme özelliğini ses politikası yapılandırmasında veya
getAudioPorts
vegetAudioRoutes
AIDL yöntemlerinde belirtin.
USB ses HAL'i için referans uygulamayı hardware/libhardware/modules/usbaudio
altında bulabilirsiniz.
frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml
dosyasında dinamik mix bağlantı noktası örneğini görebilirsiniz.
Bit mükemmelliği oynatma özelliği
Bit mükemmelliği oynatma özelliği isteğe bağlıdır ve yalnızca Audio HAL'in AIDL uygulamasında desteklenir. Bit mükemmel oynatmayı desteklemek için tedarikçilerin, USB cihazına yönlendirilebilecek dinamik mix bağlantı noktasına bit mükemmel çıkış işaretini AUDIO_OUTPUT_FLAG_BIT_PERFECT
eklemesi gerekir.
Aşağıdaki kod örneğinde, usb_audio_policy_configuration.xml
içinde AUDIO_OUTPUT_FLAG_BIT_PERFECT
işaretinin 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 mükemmelliğinde oynatma özelliği belirtilirse 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 ses seviyesi ölçeklendirmesi, örnekleme hızı dönüşümü veya ses işleme efektleri bulunmamalı 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üzeyini donanım kontrol eder.
Doğrulama
USB cihazlar için tercih edilen karıştırıcı özelliklerinin desteğini doğrulamak üzere PreferredMixerAttributesTestActivity.java
'te CTS testlerini çalıştırın.
BIT_PERFECT
özelliğinin uygulanmasını doğrulamak için darbe kod modülasyonu (PCM) ses biçimleri üzerinden MQA ve DSD'yi destekleyen USB DAC'leri kullanın.