Android 13 ve önceki sürümlerde ses HAL arayüzü
HIDL HAL dosyalarında HIDL kullanılarak tanımlanır (
uzantı .hal
) ve
Şunun için XSD şemaları:
yapılandırma dosyalarını aşağıdaki şekilde görebilirsiniz.
Şekil 1. Ses HAL arayüzü.
Yapılandırma dosyaları
Ses politikası ve ses efektleri XML yapılandırma dosyaları, Audio HIDL HAL arayüzünün resmi. Bu dosyalar şemalarına uygun olmalı ve Uygunluk, VTS testleriyle doğrulanır.
Ses HIDL HAL'yi uygulamanın bir parçası olarak
ses politikası yapılandırma dosyası
ses topolojisini açıklamaktadır. Ses HAL özellikleri aşağıdaki dilde tanımlanmalıdır:
audio_policy_configuration.xml
dosyasını çalıştırın.
Ses HIDL HAL API'sı
Bu bölümde, HIDL için Temel, Efektler ve Yaygın HAL API'leri açıklanmaktadır.
Temel HAL
HIDL kullanan Core HAL'nin temel arayüzlerinden bazıları şunlardır:
IDeviceFactory.hal
, API'ye giriş noktasıdır.IDevice.hal
veIPrimaryDevice.hal
, aşağıdakilere benzer yöntemler içerirsetMasterVolume
veyaopenInputStream
.- Akışlar tek yönlüdür ve AudioFlinger tarafından gönderip almak için kullanılır
HAL ile
IStream.hal
,IStreamOut.hal
ve HAL arasında sesIStreamIn.hal
.
Aşağıdaki tabloda, faydalı Temel HAL HIDL bileşenlerinin konumları listelenmiştir:
Çekirdek HAL bileşeni | Konum |
---|---|
API'nin son sürümü | /hardware/interfaces/audio/6.0
|
En son Core HAL API'ye özel türler | /hardware/interfaces/audio/6.0/types.hal
|
Ses politikası yapılandırma dosyası XSD şeması | /hardware/interfaces/audio/6.0/config/audio_policy_configuration.xsd
|
Temel HAL API'sinin (/hardware/interfaces/audio/core/all-versions/default/
) varsayılan uygulaması
kullanılan bir sarmalayıcıdır
eski paylaşılan kitaplıklar.
Aşağıdaki durumlarda, varsayılan uygulama da referans olarak
çekirdek sürücüleriyle etkileşime giren yeni Ses HAL sürümlerini uygulamak
doğrudan ekleyebilirsiniz.
Efekt HAL'si
Aşağıdaki tabloda, HIDL:
Efekt HAL bileşeni | Konum |
---|---|
API'nin son sürümü | /hardware/interfaces/audio/effect/6.0/
|
Efekt yapılandırma dosyası XSD şeması | /hardware/interfaces/audio/effect/6.0/xml/audio_effects_conf.xsd
|
Daha fazla bilgi için
/hardware/interfaces/audio/effect/all-versions/default/
adresindeki Efekt HAL API'sine ve Ses Efektleri bölümüne bakın.
Ortak HAL
HIDL kullanan Common HAL API şunları içerir:
- tarafından paylaşılan tanımlar (
/hardware/interfaces/audio/common/6.0/types.hal
) Core and Effect API'leri. - Yardım için kullanılan yardımcı programlar (
/hardware/interfaces/audio/common/all-versions
) Uygulamalar, istemciler ve testler için HIDL API'leriyle kodlama.
Audio HAL V7 güncellemeleri
Ses HAL'nin 7. sürümünde önemli değişiklikler var. Android 12. Ses HAL V7 şunları yapar:
- Çerçeve ve HAL tarafından kullanılan veri modellerini birleştirir.
- HIDL veri türleri (enum'lar) ile XML şeması arasındaki yinelemeyi en aza indirir. ses politikası yapılandırması için kullanılır.
Özellikle, Ses HAL V7'nin aşağıdaki kısımlarında değişiklik yapılır:
Söz konusu değişiklikler, ilgili bölümlerde daha ayrıntılı olarak ele alınmaktadır.
Numaralandırmalar
Ses HAL V7 sürümünden itibaren, Ses Politikası Yapılandırmasında kullanılan numaralandırılmış türler dosyası yalnızca XSD şemasında tanımlanır, HIDL'de tanımlanmaz.
Ses HAL V6'da, types.hal
öğesindeki numaralandırma türlerinin (ör. AudioFormat
) değerleri:
ses politikası yapılandırma dosyası XSD şemasında da tanımlanır ve
yineleme. V7'de bunu önlemek için sıralama türleri string
olarak değiştirilir ve
Tüm olası numaralandırma değerleri bunun yerine XSD şemasında listelenir.
Şekil 2'de, V7'de AudioFormat
sıralama türünde yapılan değişikliklerden bazıları karşılaştırılmıştır:
Şekil 2. AudioFormat sıralamasında yapılan bazı değişikliklerin karşılaştırması.
Şuna dönüştürülmüş enum türleri için aşağıdaki listeye bakın:
string
:
AudioChannelMask
AudioContentType
AudioDevice
: Satıcı genişletilebilirAudioFormat
: Satıcı genişletilebilirAudioGainMode
AudioSource
AudioStreamType
AudioUsage
Dize numaralandırma değerlerini iletme
Dize değerleri, bilgileri HAL arayüzü sınırı. Hem çerçeve hem de HAL sarmalayıcı, iş mantığını uygulamak için tam sayı sıralama değerlerini kullanır ve Şekil 3'te gösterilen dönüşüm yaklaşımı:
Şekil 3. Dize numaralandırma değerlerini iletme.
Örneğin, ses biçimi türü değerini çerçeveden satıcı:
AudioFormat
işlevinin numaralandırma değeri,libaudiohal
ve HAL'ye iletilir.- HAL tarafında, varsayılan sarmalayıcı dizeyi bir enum değerine dönüştürür. eski HAL'ye aktarılır.
XML şeması değişiklikleri
XML şeması tanımında (XSD) enum değerlerinin tam listelerine sahip olmak, VTS tarafından daha iyi ses politikası yapılandırması XML dosyası doğrulaması için. Yıllar içinde HAL V7 ile kullanılan ses politikası yapılandırma dosyasında yapılan değişiklikler, XSD.
V7'de, bir içindeki değer listelerini sınırlandırmak için standart bir ␣
(boşluk) karakteri
özellikleri (ör. örnekleme oranları, kanal maskeleri ve işaretlemeler) ,
(virgül) ve |
(dikey çubuk) simgelerinin kullanılması. Şurada görüldüğü gibi:
aşağıdaki örnekte, bir alanın değer listesini sınırlandırmak için
channelMasks
:
<profile channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO" … />
Sembol değişiklikleri yapmak için, otomatik bir dönüştürme işleminde
update_audio_policy_config.sh
Bir V6'yı dönüştürmek için aşağıdaki komuta bakın:
Pixel 5 (Redfin) cihaz için ses politikası yapılandırma dosyasını V7 sürümüne indirin:
hardware/interfaces/audio/7.0/config/update_audio_policy_config.sh \
device/google/redfin/audio/audio_policy_configuration.xml 6.0
Veri türleri
Yinelemeleri en aza indirmek için V7'deki bazı veri yapılarını yeniden tanımladık tanımlar. Tekrarlanan veri öğeleri, yeniden kullanılabilir öğeler altında gruplanır. birlikte çalışır. Bu veri yapıları, güvenli birleştirme gibi en yeni HIDL özelliklerini kullanır.
Örneğin, V6 ve önceki sürümlerde <format, sampling rate, channel mask>
değerinin üç katı
genellikle HIDL arayüzlerinde ve türlerinde kullanılır. Bu fazlalığı kaldırmak için
V7, AudioConfigBase
veri türü ve diğer veri türleri aşağıdaki şekilde tanımlanmıştır:
AudioConfigBase := <format, sampling rate, channel mask>
AudioConfigBaseOptional := <[fmt], [sampl. rate], [chan. mask]>
kullanan:
AudioConfig
,AudioOffloadInfo
,AudioPortConfig
AudioProfile := <format, {sampling rates}, {channel masks}>
AudioPort/PortConfig
kitlesindeki sabit olmayan koleksiyonların yerini alırAudioPortExtendedInfo := device | mix | session
AudioPort/PortConfig
bölgesindeki sendikaların yerini alıyor
Tedarikçi firma etiketleri
Tedarikçi firmalar, cihaz türlerine ve biçimlerine ek olarak ses için özel etiketler de ekleyebilir. Parça meta verilerini seçin.
Satıcılar, parça meta verilerini oynatmak ve kaydetmek için kendi etiketlerini Bu ekranlar, uygulamalardan HAL'ye ses G/Ç akışlarına özellik eklemek için kullanılır.
Oynatma parçası meta verileri için tedarikçi firma etiketleri aşağıda görüldüğü şekilde eklenir örnek:
struct PlaybackTrackMetadata {
…
/** Tags from AudioTrack audio attributes */
vec<AudioTag> tags;
};
RecordTrackMetadata
yapısı, benzer şekilde
Kayıt parçası meta verilerine özel etiketler eklemek.
Tedarikçi firma uzantıları ad aralıkları
HAL V7'den itibaren, tedarikçi firma uzantıları için ek bir {vendor}
öneki gerekir
gerekmez. {vendor}
önekinin geçerli olması için ön ekin geçerli olması gerekir
veya daha fazla alfanümerik karakter içermelidir.
V7'de aşağıdaki biçimi kullanın:
VX_{vendor}_{letters/numbers}
Aşağıda, geçerli V7 tedarikçi firma uzantılarına ilişkin bazı örnekler verilmiştir:
VX_GOOGLE_VR
VX_QCI_AMBIENT_MIC
Sürüm bilgileri
Aşağıdaki tabloda, her Android sürümü için HAL sürüm numarası listelenmektedir:
Android sürümü | HIDL HAL sürümü |
---|---|
Android 13 | 7.1 |
Android 12 | 7,0 |
Android 11 | 6.0 |
Android 10 | 5,0 |
Android 9 | 4,0 |
Android 8 | 2,0 |