Android 10 veya üzeri, çerçeve bileşenlerinin Google Play Store altyapısı veya iş ortağı tarafından sağlanan kablosuz (OTA) mekanizma aracılığıyla güncellenmesine olanak tanıyan çeşitli güncellenebilir medya bileşenleri içerir. Medya bileşenleri, tam sistem görüntüsü güncellemesi gerektirmeden güvenlik güncellemeleri ve özellik güncellemeleri sağlamaya olanak tanıyan modüller halinde bir arada paketlenmiştir.
Güncellenebilir medya bileşenleri aşağıdaki modüllerde mevcuttur.
Medya. Bu modül, medya çıkarıcıları ,
MediaSession2
API'lerini veMediaParser
API'lerini içerir.Medya Codec'leri . Bu modül güncellenebilir yazılım Codec2 bileşenlerini içerir.
Medya Sağlayıcısı Bu modül, indekslenmiş meta verileri (SD kartlardan ve USB cihazlarından gelen ses, video ve görüntüler) optimize eder ve bu verileri MediaStore genel API'leri aracılığıyla uygulamaların kullanımına sunar.
Özel çıkarıcılar ve kod çözücüler eklemeyle ilgili ayrıntılar için bkz. Medya Bileşenlerini Özelleştirme .
Medya çıkarıcılar
Android 9 ve önceki sürümlerde çıkarıcılar tek bir libstagefright.so
dosyasında derlenir. Android 10 veya üzeri sürümlerde medya çıkarıcılar ayrı bileşenlerdir. Her çıkarıcının, çıkarıcının verilen medya dosyasını işleyip işleyemeyeceğini belirlemek için bir algılama işlevi sağlayan bir giriş noktasına ve verilen medya dosyası için çıkarıcının bir örneğini oluşturan bir fabrika işlevine sahip kendi .so
dosyası vardır. Her çıkarıcının adı (hata ayıklamaya yardımcı olmak için) ve hangi çıkarıcının en yeni olduğunu gösterecek şekilde sürümlendirilir.
Medya çerçevesi, mevcut tüm çıkarıcı .so
dosyalarını otomatik olarak yükler, böylece libstagefright
veya diğer medya çerçevesi kitaplıklarını değiştirmeye gerek kalmadan yeni bir .so
dosyası ekleyerek kendi çıkarıcılarınızı oluşturabilirsiniz. Ayrıca, Google tarafından sağlanan çıkarıcı yerine özel bir çıkarıcının tercih edilmesini de sağlayabilirsiniz.
MediaSession2 API'si
MediaSession2 API, medya uygulamalarının taşıma kontrollerini ve oynatma bilgilerini Android çerçevesi ve diğer uygulamalar gibi diğer işlemlere sunmasına olanak tanır. Bu bileşen özelleştirilemez.
MediaParser API'si
MediaParser API, ExoPlayer'ın medya konteynerlerinden medya örneklerini çıkarmak için çerçeve medya konteyneri ayrıştırıcılarını verimli bir şekilde kullanmasına olanak tanır. MediaParser, kaynak kodu sınırlarında aşağıdaki değişiklikleri içerir:
frameworks/base/apex/media/framework/java/android/media/MediaParser.java
. API ve ince katman uygulaması.external/exoplayer/
. MediaParser'ın üzerine inşa edildiği Exoplayer kelimesi kelimesine kaynaklar.
MediaParser API'si özelleştirilemez. MediaParser'ı test etmek için cts/tests/tests/mediaparser/
içindeki testleri kullanın.
Medya codec bileşenleri
Medya Codec'leri modülü güncellenebilir yazılım Codec2 bileşenlerini içerir. Özelleştirme desteği sürümler arasında farklılık gösterir:
Android 11 veya üzeri sürümlerde (özellikle Google Play Sistem Güncellemesi v292100200 ), ION bellek tahsisine ilişkin parametreleri özelleştirebilirsiniz (ayrıntılar için aşağıya bakın).
Android 9 veya önceki sürümlerde, OMX codec API'si güncellenemez ancak bunu satıcı bölümünde kullanmaya devam edebilirsiniz.
ION hafıza tahsisi
Android 11 veya sonraki sürümlerde ve Google Play Sistem Güncellemesi v292100200 veya sonraki sürümlerde, ION bellek ayırma için aşağıdaki parametreleri özelleştirebilirsiniz.
Parametre | Varsayılan değer | Tanım |
---|---|---|
heapMask | 0xFFFFFFFF | Tüm yığın türlerine izin verilir. |
allocFlags | 0 | Bayrak ayarlanmadı. |
minAlignment | 0 | Hizalama yok. |
Parametreleri geçersiz kılmak için:
Varsayılan bir
android.hardware.media.c2
hizmetini kaydedin ve özel ION kullanım parametrelerini sağlayın.Yeni bir hizmet oluşturmak için frameworks/av/media/codec2/hidl/services/vendor.cpp dosyasını deponuza kopyalayın ve ardından
StoreImpl::Interface::SetIonUsage()
gerektiği gibi değiştirin.(OMX)
media.codec
işlemini yeniden kullanmak içinStoreImpl
sınıfını frameworks/av/media/codec2/hidl/services/vendor.cpp dosyasından mevcutmediacodec
dosyasına ( frameworks/av/services/mediacodec/main_codecservice.cpp) kopyalayıp kaydedin. ).
Aşağıdaki kodu cihazın
manifest.xml
dosyasına ekleyin.<hal format="hidl"> <name>android.hardware.media.c2</name> <transport>hwbinder</transport> <version>1.0</version> <interface> <name>IComponentStore</name> <instance>default</instance> </interface> </hal>
Biçim ve bağımlılıklar
Medya modülü ( com.android.media
) ve Medya Codec modülü ( com.android.media.swcodec
) APEX biçimindedir. Dahil edilen medya bileşenleri yalnızca NDK API'lerine dayanır.
Güncellemeler
Güncelleme sırasında cihazdaki çerçeve bileşenleri, Java ve yerel kod içeren bir APEX paketi yükler.
Şekil 1. Medya bileşeni güncelleme akışı
Çerçeve APEX paketini yükledikten sonra cihaz yeniden başlatılır ve disk görüntüsünü bağlar ve medya sistemi işlemleri ( media.extractor
ve media.codec
) güncellenen modülleri bağlama noktasından yükler.