Akış yapılandırmaları

Android, kamera istemcilerinin belirli kullanım alanları için optimum kamera akışlarını seçmesine ve belirli akış kombinasyonlarının kamera cihazı tarafından desteklenmesini sağlamasına olanak tanıyan özellikler içerir. Akış yapılandırması, kamera cihazında yapılandırılmış tek bir kamera akışını ifade eder. Akış kombinasyonu ise kamera cihazında yapılandırılmış bir veya daha fazla akış kümesini ifade eder. Bu özellikler hakkında daha fazla bilgi için önerilen yayın 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 kullanılan API'nin satıcı tarafında bir referans uygulaması vardır. Bu uygulamayı QCamera3HWI.cpp adresinde bulabilirsiniz.

Kamera satıcıları, belirli kullanım alanları için önerilen akış yapılandırmalarını kamera müşterilerine tanıtabilir. StreamConfigurationMap'in alt kümeleri olan bu önerilen akış yapılandırmaları, kamera istemcilerinin optimum yapılandırmaları seçmesine yardımcı olabilir.

StreamConfigurationMap, kamera istemcilerine kapsamlı akış yapılandırma bilgileri sağlasa da bir akışın diğerine göre seçilmesinin verimlilik, güç veya performans üzerindeki etkileri hakkında herhangi bir bilgi sağlamaz. Kamera istemcileri, olası tüm akış yapılandırmaları arasından seçim yapabilir. Ancak bu durum çoğu zaman istemcilerin ideal olmayan kamera yapılandırmalarını kullanmasına ve uygulamaların zaman alan kapsamlı aramalar yapmasına neden olur.

Örneğin, bazı işlenmiş YUV biçimleri gerekli olsa ve desteklenmesi gerekse de kamera cihazı bu biçimleri yerel olarak desteklemeyebilir. Bu durum, biçim dönüştürme için ek bir işleme geçişine neden olur ve verimliliği azaltır. Boyut ve buna karşılık gelen en boy oranı da benzer bir etkiye sahip olabilir. Bu nedenle, güç ve performans açısından belirli boyutlar tercih edilebilir.

Önerilen akış yapılandırma haritalarınızın, StreamConfigurationMap ile karşılaştırıldığında kapsamlı olması gerekmez. Önerilen yapılandırma haritaları, uygulama bölümündeki şartlara uymalıdır ve StreamConfigurationMap'te bulunan mevcut biçimlerden, boyutlardan veya diğer değerlerden herhangi birini içerebilir. StreamConfigurationMap içinde bulunmayan gizli biçimler, boyutlar veya diğer değerler, önerilen akış 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şetilmez.

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'sinin 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ümesi. Bildirimde, [1 << PREVIEW | 1 << RECORD..] biçiminde önerilen kullanım alanlarını gösteren bit eşlemler kullanılır. Kullanım alanları, normal (biçim, genişlik, yükseklik, giriş) demetini bir ek girişle genişletir. Mevcut olmayan herkese açık kullanım alanları veya aralıkta ayarlanmış diğer bitler [PUBLIC_END, VENDOR_START] yasaktır.

    Bu bilgiler availableRecommendedStreamConfigurations meta veri etiketinde saklanır.

    Aşağıdaki örnekte, yalnızca 4K ve 1080p'yi destekleyen bir kamera cihazı için önerilen yayın yapılandırmasına yönelik bir dizi gösterilmektedir. Bu örnekte, video kaydı için her iki çözünürlük de tercih edilse de önizleme için yalnızca 1080p önerilmektedir.

    [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 verisi alanı akışı yapılandırmaları. Yukarıdaki meta veri girişine benzer şekilde, ek bir kullanım alanı bit eşlemi, önerilen kullanım alanlarını 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ı için önerilen resim biçimlerinin, karşılık gelen çıkış biçimleriyle eşlenmesi.

    Bu bilgiler availableRecommendedDepthStreamConfigurations meta veri etiketinde saklanır.

Bu bilgiler, RecommendedStreamConfigurationMap API'si aracılığıyla kamera istemcilerine sunulur.

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şılanmalıdır:

Kullanım alanı Koşul
PREVIEW Önizleme yalnızca YUV_420_888 ve IMPLEMENTATION_DEFINED gibi çıkış biçimleriyle işlenmiş, takılmayan akış yapılandırmalarını içermelidir.
RECORD Bir video kaydı, reklamı yapılan desteklenen medya profilleriyle eşleşen akış yapılandırmalarını IMPLEMENTATION_DEFINED biçiminde içermelidir.
VIDEO_SNAPSHOT Video anlık görüntüsü, en az maksimum RECORD çözünürlükleri kadar büyük akış yapılandırmaları içermeli ve yalnızca BLOB + DATASPACE_JFIF biçimi/veri alanı kombinasyonu (JPEG) ile kullanılmalıdır. Yapılandırmalar önizleme hatalarına neden olmamalı ve 30 FPS'de çalışabilmelidir.
SNAPSHOT Anlık görüntü akışı yapılandırmaları, BLOB + DATASPACE_JFIF biçimi/veri alanı kombinasyonu (JPEG) ile android.sensor.info.activeArraySize boyutuna yakın en az bir yapılandırma içermelidir. En boy oranı, hizalama ve diğer tedarikçiye özel kısıtlamalar dikkate alındığında, önerilen maksimum boyutun alanı, sensör dizisi boyutunun 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 duraklatılmış çıkış biçimleriyle birlikte duyurulmalı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 özel 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 belirli bir özellik kombinasyonunun cihaz tarafından desteklenip desteklenmediğini sorgulamasına olanak tanır. Bu API, camera2 API'nin 4K, 60 fps, HDR video, UltraHDR, ultra geniş yakınlaştırma ve sabitleme gibi farklı özellikleri ortogonal kontroller olarak modellemesi nedeniyle 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 özelliklerden bağımsız olmalıdır. Bu, önizleme sabitlemeyi destekleyen bir kamera cihazında belirli bir kombinasyon için isStreamCombinationWithSettingsSupported değerinin, önizleme sabitleme açık veya kapalıyken aynı değer olması gerektiği anlamına gelir. Bu, özellik kombinasyonu sorgularının arama alanını azaltır.

Ayrıca, medya performansı sınıfı 15 için birincil arka kamera, 1080p ve 720p önizleme ve maksimum boyutlu JPEG'ler için 10 bit HLG10 önizlemeyle önizleme sabitlemeyi desteklemelidir. Bu koşullar hakkında daha fazla bilgi için 2.2.7.2. bölümüne bakın. CDD'ninkamerası.

Uygulama

API'nin özellik kombinasyonlarını sorgulamasını desteklemek için ICameraDevice sürüm 3'te aşağıdaki özellik kombinasyonu sorgu API'lerini uygulayın:

ICameraDevice arayüzünün 3. sürümünden önceki sürümlerde 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/ başlıklı makaleyi inceleyin.

Herkese açık API'ler

Uygulamalar, cihazda desteklenen özellik kombinasyonlarını sorgulamak için aşağıdaki herkese açık API'leri kullanabilir:

  • CameraDevice.CameraDeviceSetup: CameraDevice örneği gerektirmeden özellik kombinasyonlarını sorgulamak için kullanılabilecek CameraDevice öğesinin sınırlı bir gösterimi.

  • 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ında kullanılabilecek, yayın kombinasyonları ve oturum parametreleri de dahil olmak üzere oturum yapılandırmasını açıklayan bir yardımcı sınıf.

Doğrulama

Bu özelliği uygulamanızı doğrulamak için aşağıdaki VTS, CTS ve Camera ITS (CTS Verifier) testlerini kullanın:

VTS

CTS

Camera ITS