USB cihazlarında tercih edilen mikser özellikleri

Android 14, uygulamaların USB ses oynatma için tercih edilen mikser özelliklerini sorgulamak ve yapılandırmak için kullanabileceği geliştirici API'leri sağlar. Bu tercih edilen mikser özellikleri, uygulamaların ses formatını, kanal maskesini, örnekleme hızını ve mikser davranışını ayarlamasına izin vererek USB ses oynatma deneyimini geliştirir. Desteklenen USB cihazlarında tercih edilen mikser API'lerinin kullanılmasıyla kullanıcılar, daha düşük gecikmeli ses oynatma ve daha yüksek çözünürlüklü ses içeriği elde edebilir.

Bu özellik aynı zamanda USB aygıtları için isteğe bağlı bit-mükemmel oynatma mikseri davranışı için destek sağlar. Bit-perfect modu, uyumlu dijital-analog dönüştürücülerde (DAC'ler) ana kalite kimlik doğrulamalı (MQA) ve doğrudan akış dijital (DSD) formatlarının oynatılmasına olanak tanır.

Arayüz

Ses Politikası Yöneticisi, çerçevedeki mikser niteliklerini yönetir. AudioMixerAttributes sınıfı, mikserin niteliklerini temsil eder. AudioMixerAttributes sınıfı, mikserin ses veri formatını, 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 ve ses kontrolü ve efektleri uygulayan mikser davranışını belirler.

Mikser davranışı BIT_PERFECT modunu kullanıyorsa, sistem ses içeriğini değişiklik yapmadan ses çerçevesi, HAL ve isteğe bağlı olarak dijital sinyal işlemcisi (DSP) aracılığıyla API'den USB cihazına gönderir. BIT_PERFECT modu, MQA veya DSD gibi kodlanmış formatları destekler; bu formatlarda herhangi bir hacim ölçekleme veya karıştırma, verilerin anlamını yok edebilir.

Uygulamalar mikser niteliklerini yapılandırdığında, çerçeve gerekirse çıkış akışını yeni niteliklerle yeniden açar. Aşağıdaki şekil, mikser öznitelikleri ayarlandığında uygulama, çerçeve ve HAL arasındaki arayüzü gösterir:

preferred-mixer-attr

Şekil 1. Uygulama, çerçeve ve HAL arasındaki arayüz.

Uygulama

Android 14 için USB ses için BIT_PERFECT özelliği dışında tercih edilen mikser özelliklerinin uygulanması zorunludur.

Tercih edilen karıştırıcı özellikleri

Tercih edilen mikser özelliklerini desteklemek için satıcıların USB aygıtlarını dinamik karışım bağlantı noktasına aşağıdaki şekilde yönlendirmeyi desteklemesi gerekir:

  1. usb_audio_policy_configuration.xml dosyasında dinamik karışım bağlantı noktasını tanımlayın.

  2. USB aygıtlarını , ses ilkesi yapılandırmasında veya getAudioPorts ve getAudioRoutes AIDL yöntemlerinde dinamik karıştırma bağlantı noktalarına yönlendirme yeteneğini bildirin.

hardware/libhardware/modules/usbaudio altında USB ses HAL'sinin referans uygulamasına bakın. frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml dosyasındaki dinamik karışım bağlantı noktası örneğine bakın.

Bit-mükemmel oynatma özelliği

Bit-perfect oynatma özelliği isteğe bağlıdır ve yalnızca Ses HAL'in AIDL uygulamasında desteklenir. Mükemmel bit oynatmayı desteklemek için satıcıların, USB aygıtına yönlendirilebilecek dinamik miks bağlantı noktasına AUDIO_OUTPUT_FLAG_BIT_PERFECT bit mükemmel çıkış bayrağını eklemeleri gerekir.

Aşağıdaki kod örneği, usb_audio_policy_configuration.xml dosyasında AUDIO_OUTPUT_FLAG_BIT_PERFECT bayrağının kullanımını gösterir:

<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ükemmel 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 herhangi bir ses düzeyi ölçeklendirmesi, örnekleme hızı dönüşümü veya ses işleme efektleri olmamalıdır ve DSP'ye karıştırılmamalıdır. Bu durumda, çerçeve herhangi bir yazılım ses düzeyi denetimi sağlamadığından donanım ses düzeyini denetler.

Doğrulama

USB aygıtları için tercih edilen karıştırıcı niteliklerine yönelik desteği doğrulamak amacıyla PreferredMixerAttributesTestActivity.java CTS testlerini çalıştırın.

BIT_PERFECT özelliğinin uygulanmasını doğrulamak için darbe kod modülasyonu (PCM) ses formatları üzerinden MQA ve DSD'yi destekleyen USB DAC'leri kullanın.