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 için önerilen akış yapılandırmaları ve özellik kombinasyonlarını sorgulamak için API başlıklı makaleleri inceleyin.
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 yayın yapılandırmaları
Kamera tedarikçileri, kamera istemcileri için belirli kullanım alanlarına yönelik önerilen akış yapılandırmalarının reklamını yapabilir. 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.
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 ve desteklenmesi zorunlu olsa da kamera cihazında bu biçimler için yerel destek olmayabilir. Bu durum, biçim dönüştürme işlemi için ek bir işleme geçişine neden olur 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'e kıyasla kapsamlı olması gerekmez. Önerilen yapılandırma haritaları, uygulama bölümündeki şartlara uymalıdır ve StreamConfigurationMap'te bulunan mevcut biçimler, boyutlar veya diğer değerlerden herhangi birini 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 aynı kalır ve önerilen yayın yapılandırmalarına göre kolaylaştırılmaz.
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 yayın yapılandırmaları alt kümesi. Beyan, önerilen kullanım alanlarını[1 << PREVIEW | 1 << RECORD..]
biçiminde gösteren bit eşlemleri kullanır. Kullanım alanları, normal (format, genişlik, yükseklik, giriş) tuple'i 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'i destekleyen bir kamera cihazı için önerilen bir 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
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 saklanır.
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 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 |
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. Bu yapılandırmalar, önizlemede aksaklıklara neden olmaz ve 30 fps'de çalışabilir. |
SNAPSHOT |
Anlık görüntü aktarma yapılandırmaları, BLOB + DATASPACE_JFIF biçim/veri alanı kombinasyonu (JPEG) ile android.sensor.info.activeArraySize 'e yakın boyuta sahip en az bir tane 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 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ı sorgulamak için API
Android 15'ten itibaren Android platformu, özellik kombinasyonlarını sorgulamak için bir API sağlar. Bu API, kamera istemcilerinin belirtilen 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. CDD'nin kamerası
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, uyumluluk 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
'deki sessionConfigurationQueryVersion
ile ilgili dokümanlara 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 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ğerVANILLA_ICE_CREAM
veya daha yüksekse özellik kombinasyonu sorgularını destekler.OutputConfiguration
: Kamera çıkışını açıklayan, düşük gecikmeli özellik kombinasyonu sorguları için ertelenen bir yüzey içerebilen bir sınıf.SessionConfiguration
: Akış kombinasyonları ve oturum parametreleri dahil olmak üzere oturum yapılandırmasını açıklayan, özellik kombinasyonu sorguları için kullanılabilen 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/CameraITS/tests/feature_combination/test_feature_combination.py
- cts/apps/CameraITS/tests/scene6/test_session_characteristics_zoom.py