Akış yapılandırmaları

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.

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:

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ılabilen CameraDevice'ın sınırlı bir temsili.

  • getCameraDeviceSetup: isCameraDeviceSetupSupported true döndürürse belirli bir kamera kimliği için bir CameraDeviceSetup 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

Kamera ITS