Android 13, OEM'lerin tedarikçiye özel özelleştirmelere veya SDK'lara gerek kalmadan üç boyutlu ses ve baş takibini desteklemesi için standart bir yöntem sunar.
Üç boyutlu ses, dinleyeni çevreleyen bir ses alanı oluşturmak için kullanılan bir teknolojidir. Uzamsal ses, kullanıcıların kanalları ve tek tek sesleri, oynatma için kullanılan ses sisteminin dönüştürücülerinin fiziksel konumlarından farklı konumlarda algılamasını sağlar. Örneğin, üç boyutlu ses özelliği, kullanıcının kulaklıkla çok kanallı bir film müziği dinlemesine olanak tanır. Kulaklık kullanıcıları, oynatma için yalnızca iki dönüştürücüye sahip olmalarına rağmen, uzamsal ses kullanarak diyalogları önlerinde, surround efektlerini ise arkalarında algılayabilir.
Baş takibi, kullanıcının başının etrafında simüle edilen uzamsallaştırılmış ses sahnesinin yapısını anlamasına yardımcı olur. Bu deneyim yalnızca gecikme düşük olduğunda etkilidir. Gecikme, kullanıcının başını hareket ettirmesiyle sanal hoparlör konumunun buna göre hareket ettiğini duyması arasında geçen süre olarak ölçülür.
Android 13, mümkün olan en düşük gecikmeyi elde etmek için ses ardışık düzeninde mümkün olan en düşük seviyede üç boyutlu ses işleme sunarak üç boyutlu ses ve baş takibi için optimizasyon yapar.
Mimari
Android 13'teki değiştirilmiş Android ses çerçevesi ve API, ekosistemde üç boyutlu ses teknolojisinin kullanılmasını kolaylaştırır.
Aşağıdaki şekilde, Android 13 ile ses işlem hattı mimarisinde yapılan uzamsal sesle ilgili değişiklikler gösterilmektedir:
Şekil 1. Üç boyutlu ses efektli ses ardışık düzen mimarisi
Yeni modelde, uzamsallaştırıcı ses çerçevesinin bir parçasıdır ve kod çözücüden ayrılmıştır. Uzamsallaştırıcı, karma ses içeriğini alır ve Audio HAL'ye bir stereo akış oluşturur. Uzamsallaştırıcıyı kod çözücüden ayırmak, OEM'lerin kod çözücü ve uzamsallaştırıcı için farklı tedarikçiler seçmesine ve baş takibi için istenen gidiş dönüş gecikmesini elde etmesine olanak tanır. Bu yeni model, baş takibi için sensör çerçevesine yönelik kancalar da içerir.
Aşağıdaki şekilde, uzamsallaştırıcı ve baş takibi efekti için ses çerçevesinin sistem mimarisi gösterilmektedir:
Şekil 2. Uzamsallaştırıcı ve baş hareketini izleme özelliklerine sahip sistem mimarisi
Tüm uzamsal ses API'leri, uygulama düzeyinde public
Spatializer sınıfında gruplandırılır. Ses hizmeti arayüzlerindeki SpatializerHelper sınıfı, platforma ve bağlı cihazın özelliklerine göre uzamsallaştırıcıyla ilgili işlevleri yönetmek için Sistem Arayüzü bileşenleriyle etkileşime girer. Ses politikası hizmetindeki yeni Spatializer sınıfı, Spatializer çok kanallı miksaj ve uzamsallaştırma için gereken uzamsal ses grafiğini oluşturur ve kontrol eder. Bu sınıf, Spatializer OEM tarafından ifade edilen özelliklere, bağlı cihazlara ve etkin kullanım alanlarına dayanır. Yeni bir karıştırıcı sınıfı SpatializerThread, çok kanallı parçaları karıştırır ve ortaya çıkan karışımı, stereo çıkışı Audio HAL'ye işleyen bir son işlem FX motoruna aktarır. Baş takibi için SpatializerPoseController sınıfı, baş takibiyle ilgili işlevleri, sensör yığınıyla arayüz oluşturmayı ve efekt motoruna gönderilen sensör sinyallerini birleştirip filtrelemeyi gruplandırır. Baş takibi sensör verileri, Bluetooth sürücüsünden HID protokolü üzerinden taşınır.
Android 13'teki ses ardışık düzeni mimarisinde yapılan değişiklikler, aşağıdakileri iyileştirir:
- Uzamsallaştırıcı ile kulaklık arasındaki gecikmeyi azaltma
- Uygulama geliştiricilere hizmet vermek için birleştirilmiş API'ler sağlama.
- Sistem API'leri aracılığıyla baş takibi durumunu kontrol etme.
- Baş takibi sensörlerini keşfetme ve etkin ses cihazlarıyla ilişkilendirme
- Çeşitli sensörlerden gelen sinyalleri birleştirme ve uzamsallaştırma efekt motoru tarafından kullanılabilen baş pozunu hesaplama.
Önyargı telafisi, hareketsizlik algılama ve hız sınırlama gibi işlevler baş takibi yardımcı kitaplığı kullanılarak uygulanabilir.
Üç boyutlu ses API'leri
Android 13, üç boyutlu ses sistemi ve geliştirici API'leri sunar.
OEM'ler, uygulama davranışını özelliklerin kullanılabilirliğine ve sistem API'leri tarafından belirlenen etkinleştirilmiş durumuna göre uyarlayabilir. Uygulamalar, estetik nedenlerle üç boyutlu sesi devre dışı bırakmak veya ses akışının üç boyutlu ses için zaten işlendiğini belirtmek üzere ses özelliklerini de yapılandırabilir.
Geliştiricilere yönelik API'ler için Spatializer bölümüne bakın.
OEM'ler, kullanıcının cihazında uzamsal ses ve kafa takibi özelliğinin durumunu kontrol etmesini sağlayan Sesler ve Bluetooth ayarları kullanıcı arayüzünü uygulamak için sistem API'lerini kullanabilir. Kullanıcı, Ses ayarları kullanıcı arayüzünde hoparlör ve kablolu kulaklık için üç boyutlu sesi etkinleştirebilir veya devre dışı bırakabilir. Hoparlörün üç boyutlu ses ayarı yalnızca üç boyutlu ses efekti uygulaması, transaural modu destekliyorsa kullanılabilir.
Kullanıcı, her cihaz için Bluetooth cihaz ayarlarında üç boyutlu ses ve baş takibini etkinleştirebilir veya devre dışı bırakabilir. Baş takibi ayarı yalnızca Bluetooth mikrofonlu kulaklıkta baş takibi sensörü varsa kullanılabilir.
Üç boyutlu ses özelliği destekleniyorsa varsayılan ayarları her zaman AÇIK'tır. Sistem API'lerinin tam listesi için Spatializer.java sayfasına bakın.
Yeni baş takibi sensörü türü Sensor.TYPE_HEAD_TRACKER, Sensör çerçevesine eklenir ve Sensör HAL tarafından Bluetooth veya USB üzerinden dinamik bir sensör olarak kullanıma sunulur.
Üç boyutlu sesi entegre etme
OEM'ler, üç boyutlu ses efekt motorunu uygulamakla birlikte platformlarını üç boyutlu ses desteği için yapılandırmalıdır.
Şartlar
Üç boyutlu ses özelliğini entegre etmek için aşağıdaki koşulların karşılanması gerekir:
- Ses HAL'si ve ses DSP'si, uzamsal ses için özel bir çıkış yolunu desteklemelidir.
- Baş hareketini izleyen dinamik üç boyutlu ses için kulaklıkların yerleşik baş hareketi izleme sensörleri olması gerekir.
- Uygulama, Bluetooth kulaklıktan telefona HID protokolü üzerinden baş takibi için önerilen standarda uygun olmalıdır.
- Üç boyutlu ses desteği için Audio HAL v7.1 gerekir.
Aşağıdaki adımları uygulayarak üç boyutlu sesi entegre edin:
device.mkdosyanızda üç boyutlu ses desteğini aşağıdaki şekilde beyan edin:PRODUCT_PROPERTY_OVERRIDES += \ ro.audio.spatializer_enabled=trueBu işlem,
AudioService'nın uzamsallaştırıcı desteğini başlatmasına neden olur.audio_policy_configuration.xmliçinde üç boyutlu ses miksi için özel çıkış bildirin.<audioPolicyConfiguration> <modules> <module> <mixPorts> <mixPort name="spatializer" role="source" flags="AUDIO_OUTPUT_FLAG_SPATIALIZER"> <profile name="sa" format="AUDIO_FORMAT_PCM_FLOAT" samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>Uzamsallaştırıcı efekt kitaplığını
audio_effects.xmliçinde aşağıdaki gibi tanımlayın:<audio_effects_conf> <libraries> <library name="spatializer_lib" path="libMySpatializer.so"/> … </libraries> <effects> <effect name="spatializer" library="spatializer_lib" uuid="myunique-uuid-formy-spatializereffect"/>Uzamsallaştırıcı efektini uygulayan tedarikçiler aşağıdakilere uymalıdır:
- Temel yapılandırma ve kontrol, Effect HAL'deki diğer efektlerle aynıdır.
Çerçevenin desteklenen özellikleri ve yapılandırmayı keşfetmesi için gereken belirli parametreler (ör. aşağıdakiler):
SPATIALIZER_PARAM_SUPPORTED_LEVELSSPATIALIZER_PARAM_LEVELSPATIALIZER_PARAM_HEADTRACKING_SUPPORTEDSPATIALIZER_PARAM_HEADTRACKING_MODESPATIALIZER_PARAM_SUPPORTED_CHANNEL_MASKSSPATIALIZER_PARAM_SUPPORTED_SPATIALIZATION_MODESSPATIALIZER_PARAM_HEAD_TO_STAGE
Daha fazla bilgi için
effect_spatializer.hsayfasına bakın.
Öneriler
OEM'lerin uygulama sırasında aşağıdaki yönergeleri kullanmasını öneririz:
- Birlikte çalışabilirliği kolaylaştırmak ve gecikme hedeflerine ulaşmak için mümkün olduğunda LE Audio'yu kullanın.
- İyi bir kullanıcı deneyimi için sensör hareket algılamadan kulaklığa alınan sese kadar olan gidiş dönüş gecikmesi 150 ms'den az olmalıdır.
- Gelişmiş Ses Dağıtım Profili (A2DP) ile Bluetooth (BT) Classic için:
Doğrulama
Uzamsal ses özelliğinin işlevselliğini doğrulamak için SpatializerTest.java adresinde bulunan CTS testlerini kullanın.
Uzamsallaştırma veya baş takibi algoritmalarının kötü uygulanması, Öneriler bölümünde listelenen gidiş-dönüş gecikmesi önerisinin karşılanmamasına neden olabilir.