Akış yapılandırmaları

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.

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:

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ı bir CameraDevice temsili.

  • getCameraDeviceSetup: isCameraDeviceSetupSupported, true değerini döndürürse belirli bir kamera kimliği için CameraDeviceSetup nesnesi edinir.

  • INFO_SESSION_CONFIGURATION_QUERY_VERSION: Bu değer VANILLA_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

Kamera ITS