Android 10, kamera istemcilerine olanak tanıyan özellikler sunuyor en uygun kamerayı seçmek için belirli kullanım alanları için kullanmak ve belirli akış kombinasyonlarının kamera tarafından desteklenir. Akış yapılandırması, kamera cihazında yapılandırılan kamera akışı ile akış kombinasyonunun kamera cihazında yapılandırılmış bir veya daha fazla akış grubuna bağlamanızı sağlar. Şu konularda daha fazla bilgi için: daha fazla bilgi için önerilen yayın yapılandırmaları ve Akış kombinasyonlarını sorgulama API'si.
Referans uygulaması
Önerilen yapılandırmanın satıcı tarafı referans uygulaması mevcut. akış kombinasyonu özelliklerini sorgulamak için akışları ve API'yi kullanır. Bu uygulama QKamera3HWI.cpp
Önerilen akış yapılandırmaları
Kamera tedarikçileri, belirli bir kullanım için önerilen akış yapılandırmalarının reklamını yapabilir fotoğraf makinesi kılıfları. Önerilen bu akış yapılandırmaları alt kümesi StreamConfigurationMap'te, kamera istemcilerinin en uygun yapılandırmaları seçmesine yardımcı olabilir.
Her ne kadar StreamConfigurationMap kamera istemcilerine ayrıntılı akış yapılandırma bilgileri sağlar. verimlilik, güç veya performans hakkında herhangi bir bilgi sağlamaz tercih etmenin etkilerini görebilirsiniz. Kamera istemcileri ise istedikleri değiştirilebilir. Ancak birçok durumda bu, kullanan en iyi kamera yapılandırmaları ve zaman alıcı kapsamlı aramalardır.
Örneğin, bazı işlenmiş YUV biçimleri zorunlu ve destekleniyorsa kamera cihazında biçimler için yerel destek olmayabilir. Bu biçim dönüşümü için ek işleme geçişi sunar ve birçok proje verisi türü bulunur. Boyut ve karşılık gelen en boy oranı da benzer bir güç ve performans açısından belirli boyutları daha çok tercih bazı yolları da görmüştük.
Önerilen akış yapılandırma eşlemelerinizin kapsamlı olması gerekmez ile StreamConfigurationMap. Önerilen yapılandırma haritaları uygulama bölümünü içerir ve kullanılabilir biçimleri, boyutları ve diğer değerleri alabilir, StreamConfigurationMap. StreamConfigurationMap'te gizli biçimler, boyutlar veya diğer değerler bulunamadı önerilen akış yapılandırma eşlemelerine dahil edilemez.
Tüm testler değişmeden kalır ve önerilen ayara bağlı olarak gevşetilmez akış yapılandırmaları.
Kamera uygulaması tarafından sağlanan önerilen akış yapılandırmaları şunlardır: isteğe bağlıdır. Kamera istemcisi de bunları yoksayabilir.
Uygulama
Bu özelliği uygulamak için aşağıdaki adımları izleyin.
Meta veri girişleri
Bu özelliği etkinleştirmek için Kamera HAL'sinin aşağıdaki statik meta veri girişleri:
android.scaler.availableRecommendedStreamConfigurations
: belirli kullanım alanları için önerilen akış yapılandırmaları alt kümesini içerir. İlgili içeriği oluşturmak için kullanılan beyanında, önerilen kullanım alanlarını belirten bit eşlemler kullanılır.[1 << PREVIEW | 1 << RECORD..]
biçimindedir. Kullanım alanları normal (biçim, genişlik, yükseklik, giriş) demeti ile bir ek giriş. Mevcut olmayan herkese açık kullanım alanları veya aralık içinde ayarlanmış diğer bit değerleri[PUBLIC_END, VENDOR_START]
yasaktır.Bu bilgiler Google Ads'de
availableRecommendedStreamConfigurations
meta veri etiketidir.Aşağıdaki örnekte, önerilen bir akış için bir dizi gösterilmektedir yalnızca 4K ve 1080p'yi destekleyen kameralar için yapılandırma video kaydı için her iki çözünürlük de tercih edilir, ancak yalnızca 1080p önizleme için önerildi.
[3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT, (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT), 1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT, (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
android.depth.availableRecommendedDepthStreamConfigurations
. (yalnızca cihaz tarafından destekleniyorsa kullanılabilir): Önerilen derinlik veri alanı bu kamera cihazı için önerilen akış yapılandırmaları. Şuna benzer: meta veri girişinin üzerinde yer alır. Ek bir kullanım alanı bit eşlemi, önerilen örnekler üzerinden görüntüleyebilirsiniz.Bu bilgiler Google Ads'de
availableRecommendedInputOutputFormatsMap
meta veri etiketidir.android.scaler.availableRecommendedInputOutputFormatsMap
(kullanılabilir yalnızca cihaz tarafından destekleniyorsa): Tıklandığında önerilen resim biçimlerinin eşleştirilmesi bu kamera cihazının giriş akışları için önerilir. karşılık gelen çıkış biçimlerinden oluşur.Bu bilgiler Google Ads'de
availableRecommendedDepthStreamConfigurations
meta veri etiketidir.
Bu bilgiler, kamera istemcileri tarafından recommendedStreamConfigurationMap API'ye gidin.
Gerekli kullanım alanları
Aşağıdaki kullanım alanları için önerilen akış yapılandırmaları sağlanmalıdır ve ilgili koşulları karşılamanız gerekir:
Kullanım alanı | Koşul |
---|---|
PREVIEW |
Önizlemeler yalnızca durdurulmamış olan işlenmiş akış yapılandırmalarını içermelidir
YUV_420_888 ve
IMPLEMENTATION_DEFINED . |
RECORD |
Video kaydı, reklamı yapılanla eşleşen akış yapılandırmaları içermelidir.
desteklenen medya profilleri
IMPLEMENTATION_DEFINED biçimiyle. |
VIDEO_SNAPSHOT |
Video anlık görüntüsü, en az şu kadar akış yapılandırmalarını içermelidir: maksimum KAYIT çözünürlüklerine kadar yüksek olduğundan ve yalnızca BLOB + DATASPACE_JFIF biçim/veri alanı kombinasyonu (JPEG). Yapılandırmalar önizlemede aksaklıklara neden olmaz ve 30 fps'de çalışabilir. |
SNAPSHOT |
Anlık görüntü akışı yapılandırmaları, boyuta yakın en az bir yapılandırma içermelidir
BLOB + ile android.sensor.info.activeArraySize
DATASPACE_JFIF biçim/veri alanı kombinasyonu (JPEG). Dikkate alma
en boy oranı, hizalama ve tedarikçiye özgü diğer kısıtlamalarla ilgili kısıtlamalar varsa
önerilen maksimum boyutun alanı, sensörün% 97'sinden az olmamalıdır
dizi boyut alanıdır. |
ZSL (destekleniyorsa) |
Kamera cihazı destekliyorsa önerilen giriş akışı yapılandırmaları yalnızca işlenmiş veya durdurulan diğer çıktılarla birlikte tanıtılmalıdır biçimlerinden biridir. |
RAW (destekleniyorsa) |
Kamera cihazı destekliyorsa önerilen ham akış yapılandırmaları yalnızca RAW tabanlı çıkış biçimlerini içermelidir. |
Diğer kullanım alanları
Kullanım alanları için önerilen ek yapılandırma akışları sağlayabilirsiniz özellikleri belirleyebilirsiniz.
Doğrulama
Önerilen yapılandırma akışlarını uygulama biçiminizi test etmek için aşağıdaki CTS ve VTS testlerini takip edin:
Akış kombinasyonlarını sorgulama API'si
Android platformu, akış kombinasyonlarını sorgulamak için bir API'yi destekler. Uygulama bu API, kamera istemcilerinin herhangi bir noktada akış kombinasyonlarını güvenli bir şekilde sorgulamasına olanak tanır. geçerli bir KameraCihazı kamerayla çekim oturumu başlatmanın ve kameranın kırılması gibi sonraki kamera istisnaları olasılığı nedeniyle. Böylece daha hızlı sorgular yapabilirsiniz.
Bu özellik, kamera istemcilerinin yayın kombinasyonlarının listesini almasına da olanak tanır. uyarınca derlenen yönergeler kameraya ve desteklenen donanım yazılımı düzeyine gidin. CTS testleri uygulamalıdır küçük bir alt kümeyi kapsayacak şekilde, sorgu sonuçlarının doğruluğunu mümkün olduğunca en yaygın yayın kombinasyonlarından biri.
Bir HIDL API daha uygulayarak bu özelliği destekleyebilirsiniz. araması yapabilirsiniz.
Uygulama
Akış kombinasyonlarının sorgulanmasına yönelik bir API'nin desteklenmesi için Kamera HAL'si
web sitesi
isStreamCombinationSupported
HIDL API arayüzü. Bu arayüz, kamera cihazının bir
belirtilen kamera akışı kombinasyonu.
Çağrı yapıldığında, API'nin aşağıdaki durum kodlarından birini döndürmesi gerekir:
OK
: Akış kombinasyonu sorgusu başarılı oldu.METHOD_NOT_SUPPORTED
: Kamera cihazı akışı desteklemiyor emin olun.INTERNAL_ERROR
: Akış kombinasyonu sorgusu şu nedenle tamamlanamıyor: dahili bir hata oluştu.
Akış kombinasyonu destekleniyorsa API, doğru değerini döndürür. Aksi halde false (yanlış) değerini döndürür.
Çerçeve, herkese açık API'yi kullanır
isSessionConfigurationSupported
belirli bir oturum yapılandırmasının kamera tarafından desteklenip desteklenmediğini kontrol etmek için
olanak tanır.
API'ye yapılan çağrıların normal kamera çalışması üzerinde herhangi bir yan etkisi olmamalıdır. API çağrıların herhangi bir dahili durumu değiştirmemeli veya kamera performansını yavaşlatmamalıdır. Kamera HAL'si bir yayın kombinasyonunu başarıyla doğruladıktan sonra kamera istemcileri akış kombinasyonunu başarıyla yapılandırabilir. Sorun yaşamamak için uygulamada herhangi bir bilginin depolanmadığından emin olun. veya etkileşim kurma ya da başka bir zaman alan işlemlerdir.
Doğrulama
Bu özelliği doğrulamak için aşağıdaki kamera CTS ve VTS test durumlarını çalıştırın:
Kamera CTS modülleri:
Kamera VTS'si:
VtsHalCameraProviderV2_4TargetTest.cpp