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, örnek hızını ve mikser davranışını ayarlamasına izin vererek USB ses çalma 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 mikser davranışı için de destek sağlar. 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ışında tercih edilen mikser özelliklerinin uygulanması zorunludur.
Tercih edilen mikser ö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.
Mükemmel oynatma özelliği
Bit mükemmel oynatma özelliği isteğe bağlıdır ve yalnızca Ses HAL'nin 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 düzeyi denetimi 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 amacıyla 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.