USB cihazlarda tercih edilen mikser özellikleri

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:

preferred-mixer-attr

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:

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

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