USB cihazlarda tercih edilen mikser özellikleri

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:

preferred-mixer-attr

Ş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:

  1. usb_audio_policy_configuration.xml içinde dinamik karma bağlantı noktasını tanımlayın.

  2. USB cihazları dinamik mix bağlantı noktalarına yönlendirme özelliğini ses politikası yapılandırmasında veya getAudioPorts ve getAudioRoutes 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.