Android, kamera istemcilerinin belirli kullanım alanları için en uygun kamera yayınlarını seçmesine ve belirli yayın kombinasyonlarının kamera cihazı tarafından desteklenmesini sağlamaya olanak tanıyan özellikler içerir. Akış yapılandırması, kamera cihazında yapılandırılmış tek bir kamera akışını, akış kombinasyonu ise kamera cihazında yapılandırılmış bir veya daha fazla akış grubunu ifade eder. Bu özellikler hakkında daha fazla bilgi edinmek için önerilen akış yapılandırmaları ve Özellik kombinasyonlarını sorgulama API'si bölümlerine göz atın.
Referans uygulama
Önerilen yapılandırma akışlarının ve akış kombinasyonu özelliklerini sorgulamak için API'nin satıcı tarafında referans bir uygulaması vardır. Bu uygulamayı QCamera3HWI.cpp dosyasında bulabilirsiniz.
Önerilen akış yapılandırmaları
Kamera tedarikçileri, belirli kullanım alanları için önerilen akış yapılandırmalarını kamera istemcilerine tanıtabilir. StreamConfigurationMap'in alt kümeleri olan bu önerilen akış yapılandırmaları, kamera istemcilerinin en uygun yapılandırmaları seçmesine yardımcı olabilir.
StreamConfigurationMap, kamera istemcilerine kapsamlı akış yapılandırma bilgileri sağlasa da bir akışı diğerine tercih etmenin verimlilik, güç veya performans üzerindeki etkileri hakkında herhangi bir bilgi sağlamaz. Kamera istemcileri, tüm olası akış yapılandırmaları arasından özgürce seçim yapabilir ancak çoğu durumda bu, istemcilerin optimum olmayan kamera yapılandırmaları kullanmasına ve uygulamaların zaman alıcı kapsamlı aramalar yapmasına neden olur.
Örneğin, bazı işlenmiş YUV biçimleri gerekli olsa ve desteklenmeleri gerekse de, kamera cihazında biçimler için yerel destek olmayabilir. Bu, biçim dönüştürme için ek işleme geçişi yol açar ve verimliliği azaltır. Boyut ve karşılık gelen en boy oranı da benzer bir etkiye sahip olabilir. Bu da belirli boyutların güç ve performans açısından tercih edilmesine neden olur.
Önerilen akış yapılandırma haritalarınızın, StreamConfigurationMap ile karşılaştırıldığında kapsamlı olması gerekmez. Önerilen yapılandırma eşlemeleri, uygulama bölümündeki şartlara uymalıdır. Bu eşlemeler, StreamConfigurationMap'te bulunan kullanılabilir biçimleri, boyutları veya diğer değerleri içerebilir. StreamConfigurationMap'te bulunmayan gizli biçimler, boyutlar veya diğer değerler önerilen yayın yapılandırma haritalarına dahil edilemez.
Tüm testler değişmeden kalır ve önerilen akış yapılandırmalarına bağlı olarak gevşetmez.
Kamera uygulaması tarafından sağlanan önerilen akış yapılandırmaları isteğe bağlıdır ve kamera istemcisi tarafından yoksayılabilir.
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'inin aşağıdaki statik meta veri girişlerini doldurması gerekir:
android.scaler.availableRecommendedStreamConfigurations
: Belirli kullanım alanları için önerilen yayın yapılandırmaları alt kümesi. Bildirimde, önerilen kullanım alanlarını[1 << PREVIEW | 1 << RECORD..]
biçiminde gösteren bit eşlemler kullanılır. Kullanım alanları, normal (format, genişlik, yükseklik, giriş) tuple'ini bir ek girişle genişletir. Mevcut olmayan herkese açık kullanım alanları veya[PUBLIC_END, VENDOR_START]
aralığında ayarlanmış diğer bitler yasaktır.Bu bilgiler
availableRecommendedStreamConfigurations
meta veri etiketinde saklanır.Aşağıdaki örnekte yalnızca 4K ve 1080p çözünürlüğü destekleyen bir kamera cihazında önerilen akış yapılandırması için bir dizi gösterilmektedir. Burada video kaydı için her iki çözünürlük de tercih edilir ancak önizleme için yalnızca 1080p önerilir.
[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): Bu kamera cihazı için önerilen derinlik veri alanı akış yapılandırmaları. Yukarıdaki meta veri girişine benzer şekilde, önerilen kullanım alanlarını ek bir kullanım alanı bit eşlemesi gösterir.Bu bilgiler
availableRecommendedInputOutputFormatsMap
meta veri etiketinde saklanır.android.scaler.availableRecommendedInputOutputFormatsMap
(yalnızca cihaz tarafından destekleniyorsa kullanılabilir): Giriş akışları için bu kamera cihazında önerilen önerilen resim biçimlerinin, ilgili çıkış biçimleriyle eşlenmesi.Bu bilgiler
availableRecommendedDepthStreamConfigurations
meta veri etiketinde depolanır.
Bu bilgiler, kamera istemcileri tarafından RecommendationStreamConfigurationMap API'sini kullanarak kullanabilir.
Gerekli kullanım alanları
Aşağıdaki kullanım alanları için önerilen yayın yapılandırmaları sağlanmalı ve ilgili koşulları karşılamalıdır:
Kullanım alanı | Koşul |
---|---|
PREVIEW |
Önizlemede yalnızca YUV_420_888 ve IMPLEMENTATION_DEFINED gibi çıkış biçimlerine sahip, takılmayan işlenmiş akış yapılandırmaları bulunmalıdır. |
RECORD |
Video kaydı, IMPLEMENTATION_DEFINED biçiminde reklamı yapılan ve desteklenen medya profilleriyle eşleşen yayın yapılandırmalarını içermelidir. |
VIDEO_SNAPSHOT |
Bir video anlık görüntüsü, en az maksimum KAYIT çözünürlükleri kadar büyük ve yalnızca BLOB + DATASPACE_JFIF biçimi/veri alanı kombinasyonuna (JPEG) sahip akış yapılandırmalarını içermelidir. Bu yapılandırmalar, önizlemede aksaklıklara neden olmaz ve 30 fps'de çalışabilir. |
SNAPSHOT |
Anlık görüntü akışı yapılandırmaları, BLOB + DATASPACE_JFIF biçimi/veri alanı kombinasyonuna (JPEG) sahip en az android.sensor.info.activeArraySize boyutunda bir yapılandırma içermelidir. En boy oranı, hizalama ve tedarikçiye özgü diğer kısıtlamalar dikkate alındığında, önerilen maksimum boyutun alanı sensör dizisi boyutu alanının% 97'sinden az olmamalıdır. |
ZSL (destekleniyorsa) |
Kamera cihazı tarafından destekleniyorsa önerilen giriş akışı yapılandırmaları yalnızca diğer işlenmiş veya duraklayan çıkış biçimleriyle birlikte reklamı yapılmalıdır. |
RAW (destekleniyorsa) |
Kamera cihazı tarafından destekleniyorsa önerilen ham akış yapılandırmaları yalnızca RAW tabanlı çıkış biçimlerini içermelidir. |
Diğer kullanım alanları
Uygulamanıza özgü kullanım alanları için önerilen ek yapılandırma akışları sağlayabilirsiniz.
Doğrulama
Önerilen yapılandırma akışlarını uygulamanızı test etmek için aşağıdaki CTS ve VTS testlerini çalıştırın:
Özellik kombinasyonlarını sorgulamak için API
Android 15'ten itibaren Android platformu, özellik kombinasyonlarını sorgulamak için bir API sağlar. Bu API, kamera istemcilerinin belirli bir özellik kombinasyonunun cihaz tarafından desteklenip desteklenemeyeceğini sorgulamasına olanak tanır. Camera2 API, 4K, 60 FPS, HDR video, UltraHDR, ultra geniş yakınlaştırma ve sabitleme gibi farklı özellikleri ortogonal kontroller olarak modellediğinden bu API gereklidir.
Şartlar
API'nin özellik kombinasyonlarını sorgulamasını desteklemek için kamera HAL'inin ICameraDevice
arayüzünün 3. sürümünü uygulaması gerekir. Ayrıntılar için Uygulama bölümüne bakın.
API desteklendiğinde, önizleme sabitleme diğer özelliklere dik olmalıdır. Bu, önizleme sabitlemeyi destekleyen bir kamera cihazında, önizleme sabitleme açık veya kapalıyken belirli bir kombinasyon için isStreamCombinationWithSettingsSupported
döndürülen değerin aynı olması gerektiği anlamına gelir. Bu, özellik kombinasyonu sorguları için arama alanını azaltır.
Ayrıca, medya performansı sınıf 15 için birincil arka kamera, 1080p ve 720p önizleme ve maksimum boyut JPEG'ler için 10 bit HLG10 önizlemesiyle önizleme sabitlemeyi desteklemelidir. Bu şartlar hakkında daha fazla bilgi için 2.2.7.2 numaralı bölüme bakın. Kamera'yı kullanın.
Uygulama
API'nin özellik kombinasyonlarını sorgulamasını desteklemek için ICameraDevice
sürümünün 3. sürümünde aşağıdaki özellik kombinasyonu sorgu API'lerini uygulayın:
constructDefaultRequestSettings
: BelirtilenCaptureRequest
türü için varsayılan ayarları oluşturur. HAL,ICameraDeviceSession::constructDefaultRequestSettings
uygulamasını kullanabilir.isStreamCombinationWithSettingsSupported
: Oturum parametreleri ve ekCaptureRequest
anahtarlarıyla, belirtilen kamera akışı kombinasyonunun cihaz desteği olup olmadığını kontrol eder. Desteklenen kombinasyonlar içintrue
, desteklenmeyen özellik kombinasyonları içinfalse
döndürmelidir. HAL,isStreamCombinationSupported
uygulamasını kullanabilir vesessionParams
'da iletilenCaptureRequest
ayarlarını kontrol etmek için destek ekleyebilir.getSessionCharacteristics
: Oturum parametreleriyle desteklenen bir akış kombinasyonunu alır ve oturuma özgü özellikleri döndürür.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Yaygın olarak 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 eski sürümleri için HAL, isStreamCombinationSupported
yöntemini uygulamalıdır.
API tarafından sorgulanan özellik kombinasyonları hakkında daha fazla bilgi için system/media/camera/docs/metadata_definitions.xml
bölümündeki sessionConfigurationQueryVersion
dokümanlarına bakın.
Bu özelliğin referans uygulaması için hardware/google/camera/devices/EmulatedCamera/hwl/
sayfasına bakın.
Herkese açık API'ler
Uygulamalar, cihaz için desteklenen özellik kombinasyonlarını sorgulamak üzere aşağıdaki herkese açık API'leri kullanabilir:
CameraDevice.CameraDeviceSetup
:CameraDevice
örneği gerekmeden özellik kombinasyonlarını sorgulamak için kullanılabilen sınırlı birCameraDevice
temsili.getCameraDeviceSetup
:isCameraDeviceSetupSupported
,true
değerini döndürürse belirli bir kamera kimliği içinCameraDeviceSetup
nesnesi edinir.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: Bu değerVANILLA_ICE_CREAM
veya daha yüksekse özellik kombinasyonu sorgularını destekler.OutputConfiguration
: Düşük gecikmeli özellik kombinasyonu sorguları için ertelenmiş bir yüzey içerebilen, kamera çıkışını açıklayan bir sınıf.SessionConfiguration
: Özellik kombinasyonu sorguları için kullanılabilecek akış kombinasyonları ve oturum parametreleri dahil, oturum yapılandırmasını açıklayan bir yardımcı program sınıfı.
Doğrulama
Bu özelliğin uygulamanızı doğrulamak için aşağıdaki VTS, CTS ve Camera ITS (CTS Doğrulayıcı) testlerini kullanın:
VTS
CTS
- cts/tests/camera/src/android/hardware/camera2/cts/FeatureCombinationTest.java
- cts/tests/camera/src/android/hardware/camera2/cts/CameraDeviceSetupTest.java
Kamera ITS
- cts/apps/KameraITS/testler/feature_combination/test_feature_combination.py
- cts/apps/CameraITS/tests/scene6/test_session_characteristics_zoom.py