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. Bu özellikler hakkında daha fazla bilgi için önerilen akış yapılandırmaları ve özellik kombinasyonlarını sorgulamak için API başlıklı makaleleri inceleyin.
Referans uygulaması
Önerilen yapılandırma akışları 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 yayın 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ı. StreamConfigurationMap'in alt kümeleri olan bu önerilen yayın yapılandırmaları, 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 etkiye sahip olabilir. Bu da belirli boyutların güç ve performans açısından tercih edilmesine neden olur.
Önerilen akış yapılandırma eşlemelerinizin kapsamlı olması gerekmez ile StreamConfigurationMap'tir. Önerilen yapılandırma haritaları uygulama bölümünü içerir ve kullanılabilir biçimleri, boyutları veya diğer değerleri StreamConfigurationMap. 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 ayara bağlı olarak gevşetilmez akış yapılandırmaları.
Kamera uygulaması tarafından sağlanan önerilen yayın yapılandırmaları isteğe bağlıdır ve kamera istemcisi bunları yoksayabilir.
Uygulama
Bu özelliği uygulamak için aşağıdaki adımları uygulayın.
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 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[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'i destekleyen bir kamera cihazı için önerilen yayın yapılandırması dizisi gösterilmektedir. Bu örnekte, 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 Google Ads'de
availableRecommendedInputOutputFormatsMap
meta veri etiketidir.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 Google Ads'de
availableRecommendedDepthStreamConfigurations
meta veri etiketidir.
Bu bilgiler, kamera istemcileri tarafından RecommendedStreamConfigurationMap API'si aracılığıyla kullanılabilir.
Zorunlu 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ı, IMPLEMENTATION_DEFINED biçiminde reklamı yapılan ve desteklenen medya profilleriyle eşleşen yayın yapılandırmalarını içermelidir. |
VIDEO_SNAPSHOT |
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çim/veri alanı kombinasyonu (JPEG) içeren akış yapılandırmaları içermelidir. Yapılandırmalar, önizlemede aksaklıklara neden olmamalı ve 30 fps'de çalışabilmelidir. |
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ı tarafından destekleniyorsa önerilen ham yayın 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 ek önerilen 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ı 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. 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 gidin.
API desteklendiğinde önizleme sabitlemesi dikey yönde
diğer özellikleri kullanabilirsiniz. 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. CDD'nin kamerası
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,ICameraDeviceSession::constructDefaultRequestSettings
uygulamasını kullanabilir.isStreamCombinationWithSettingsSupported
: Belirli bir kamera akışı kombinasyonu için cihaz desteği olup olmadığını kontrol eder oturum parametreleri ve ekCaptureRequest
anahtarları ile oluşturun. 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 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
:CameraDevice
örneği gerektirmeden özellik kombinasyonlarını sorgulamak için kullanılabilenCameraDevice
'ın sınırlı bir temsili.getCameraDeviceSetup
:isCameraDeviceSetupSupported
true
döndürürse belirli bir kamera kimliği için birCameraDeviceSetup
nesnesi edinir.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 kamera çıkışını destekleyen, 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ğ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