Android, kamera istemcilerinin kullanılmasına olanak tanıyan özellikler içerir 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 Özellik 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 aktif olmayan 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:
Özellik kombinasyonlarını sorgulama API'si
Android 15 sürümünden itibaren Android platformunda özellik kombinasyonlarını sorgulamak için kullanılan bir API'dir. Bu API, kamera istemcilerinin belirli bir özellik kombinasyonunun cihaz tarafından desteklenebilmesi. Bu API kamera2 API 4k, 60 fps, video ve resim Dikey kontrol olarak HDR video, UltraHDR, Ultra geniş yakınlaştırma ve sabitleme.
Gereksinimler
API'nin özellik kombinasyonlarını sorgulamasını desteklemek için kamera HAL'sinin
ICameraDevice
arayüzünün 3. sürümü Ayrıntılı bilgi için
Uygulama bölümüne gidin.
API desteklendiğinde önizleme sabitlemesi dikey yönde
diğer özellikleri kullanabilirsiniz. Bu, önizlemeyi destekleyen bir kamera cihazı için
sabitleme, isStreamCombinationWithSettingsSupported
öğesinin döndürülen değeri
belirli bir kombinasyon için önizleme sabitleme, aynı değer olmalıdır
açık veya kapalı olduğundan emin olun. Bu, özellik kombinasyonu sorguları için arama alanını azaltır.
Ayrıca, 15. medya performans sınıfı için birincil arka kamera, 1080p ve 720p için 10 bit HLG10 önizlemeyle önizleme sabitlemeyi destekler önizleme ve maksimum boyutlu JPEG'ler olabilir. Bu şartlarla ilgili daha fazla bilgi için bölüm 2.2.7.2. Kamera CDD kapsamındadır.
Uygulama
API'nin özellik kombinasyonlarını sorgulamasını desteklemek için aşağıdakileri uygulayın:
sürüm 3'teki özellik kombinasyonu sorgu API'leri
ICameraDevice
:
constructDefaultRequestSettings
: BelirtilenCaptureRequest
türü için varsayılan ayarları oluşturur. HAL URL'leriICameraDeviceSession::constructDefaultRequestSettings
bazı ipuçları vereceğim.isStreamCombinationWithSettingsSupported
: Belirli bir kamera akışı kombinasyonu için cihaz desteği olup olmadığını kontrol eder oturum parametreleri ve ekCaptureRequest
anahtarları ile oluşturun. Zorunluluk desteklenen kombinasyonlar içintrue
, desteklenmeyen kombinasyonlar içinfalse
değerini döndürün özellik kombinasyonlarını kullanabilirsiniz. HAL,isStreamCombinationSupported
CaptureRequest
ayarlarını kontrol etmek için uygulama ve destek eklemesessionParams
içinde geçiriliyor.getSessionCharacteristics
: Desteklenen bir akış kombinasyonunu döndürür ve hakkında daha fazla bilgi edineceksiniz.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Sık kullanılan tüm oturum yapılandırmalarını listeler. Bu yapılandırmalar uygunluk testiyle doğrulanır.
ICameraDevice
arayüzünün 3. sürümünden daha düşük sürümler için, HAL
isStreamCombinationSupported
yöntemidir.
API tarafından sorgulanan özellik kombinasyonları hakkında daha fazla bilgi için
sessionConfigurationQueryVersion
ile ilgili dokümanlar:
system/media/camera/docs/metadata_definitions.xml
Bu özelliğin bir referans uygulaması için bkz.
hardware/google/camera/devices/EmulatedCamera/hwl/
.
Herkese Açık API'ler
Uygulamalar, desteklenen özellik kombinasyonlarını sorgulamak için aşağıdaki herkese açık API'leri kullanabilir. cihaz için:
CameraDevice.CameraDeviceSetup
: Özelliği sorgulamak için kullanılabilecek sınırlı birCameraDevice
gösterimi kombinasyonlarınıCameraDevice
örneği gerektirmeden uygulayabilirsiniz.getCameraDeviceSetup
: Aşağıdaki durumlarda belirli bir kamera kimliği için birCameraDeviceSetup
nesnesi edinirisCameraDeviceSetupSupported
,true
değerini döndürür.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Bu değer şu durumda özellik kombinasyonu sorgularını destekler:VANILLA_ICE_CREAM
veya daha yüksek olabilir.OutputConfiguration
: Kamera çıkışını açıklayan ve video için ertelenmiş yüzey içeren bir sınıf düşük gecikmeli özellik kombinasyonu sorgularının amacı.SessionConfiguration
: Akış dahil oturum yapılandırmasını açıklayan bir yardımcı program sınıfı veya oturum parametrelerini ifade eden emin olun.
Doğrulama
Bu özelliği uygulamanızı doğrulamak için aşağıdaki VTS, CTS ve Kamera BTS (CTS Doğrulayıcı) testleri:
GD
CTS
- cts/tests/kamera/src/android/donanım/kamera2/cts/FeatureCombinationTest.java
- cts/tests/camera/src/android/donanım/kamera2/cts/KameraCihazKurulumTesti.java
Kamera BT
- cts/apps/KameraITS/testler/feature_combination/test_feature_combination.py
- cts/apps/KameraITS/tests/scene6/test_session_characteristics_zoom.py