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. Şu konularda daha fazla bilgi için: daha fazla bilgi için önerilen yayın yapılandırmaları ve Özellik kombinasyonlarını sorgulama API'si.

Referans uygulaması

Önerilen yapılandırmanın satıcı tarafı referans uygulaması mevcut. akış kombinasyonu özelliklerini sorgulamak için akışları ve API'yi kullanır. Bu uygulama QKamera3HWI.cpp

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ı. Önerilen bu akış yapılandırmaları alt kümesi StreamConfigurationMap'te, 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 güç ve performans açısından belirli boyutları daha çok tercih bazı yolları da görmüştük.

Önerilen akış yapılandırma eşlemelerinizin kapsamlı olması gerekmez ile StreamConfigurationMap. Önerilen yapılandırma haritaları uygulama bölümünü içerir ve kullanılabilir biçimleri, boyutları ve diğer değerleri alabilir, StreamConfigurationMap. StreamConfigurationMap'te gizli biçimler, boyutlar veya diğer değerler bulunamadı önerilen akış yapılandırma eşlemelerine 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 akış yapılandırmaları şunlardır: isteğe bağlıdır. Kamera istemcisi de bunları yoksayabilir.

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'sinin aşağıdaki statik meta veri girişleri:

  • 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 aralık içinde ayarlanmış diğer bit değerleri [PUBLIC_END, VENDOR_START] yasaktır.

    Bu bilgiler Google Ads'de availableRecommendedStreamConfigurations meta veri etiketidir.

    Aşağıdaki örnekte, önerilen bir akış için bir dizi gösterilmektedir yalnızca 4K ve 1080p'yi destekleyen kameralar için yapılandırma video kaydı için her iki çözünürlük de tercih edilir, ancak yalnızca 1080p önizleme için önerildi.

    [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): Önerilen derinlik veri alanı bu kamera cihazı için önerilen akış yapılandırmaları. Şuna benzer: meta veri girişinin üzerinde yer alır. Ek bir kullanım alanı bit eşlemi, önerilen örnekler üzerinden görüntüleyebilirsiniz.

    Bu bilgiler Google Ads'de availableRecommendedInputOutputFormatsMap meta veri etiketidir.

  • android.scaler.availableRecommendedInputOutputFormatsMap (kullanılabilir yalnızca cihaz tarafından destekleniyorsa): Tıklandığında önerilen resim biçimlerinin eşleştirilmesi bu kamera cihazının giriş akışları için önerilir. karşılık gelen çıkış biçimlerinden oluşur.

    Bu bilgiler Google Ads'de availableRecommendedDepthStreamConfigurations meta veri etiketidir.

Bu bilgiler kamera istemcileri tarafından recommendedStreamConfigurationMap API'ye gidin.

Gerekli 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ı, reklamı yapılanla eşleşen akış yapılandırmaları içermelidir. desteklenen medya profilleri IMPLEMENTATION_DEFINED biçimiyle.
VIDEO_SNAPSHOT Video anlık görüntüsü, en az şu kadar akış yapılandırmalarını içermelidir: maksimum KAYIT çözünürlüklerine kadar yüksek olduğundan ve yalnızca BLOB + DATASPACE_JFIF biçim/veri alanı kombinasyonu (JPEG). Yapılandırmalar önizlemede aksaklıklara neden olmaz ve 30 fps'de çalışabilir.
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ı destekliyorsa önerilen ham akış yapılandırmaları yalnızca RAW tabanlı çıkış biçimlerini içermelidir.

Diğer kullanım alanları

Kullanım alanları için önerilen ek yapılandırma akışları sağlayabilirsiniz özellikleri belirleyebilirsiniz.

Doğrulama

Önerilen yapılandırma akışlarını uygulama biçiminizi test etmek için aşağıdaki CTS ve VTS testlerini takip edin:

Ö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. Bu API kamera2 API 4k, 60 fps, video ve resim Dikey kontrol olarak HDR video, UltraHDR, Ultra geniş yakınlaştırma ve sabitleme.

Gereksinimler

API'nin özellik kombinasyonlarını sorgulamasını desteklemek için kamera HAL'sinin ICameraDevice arayüzünün 3. sürümü Ayrıntılı bilgi için Uygulama bölümüne gidin.

API desteklendiğinde önizleme sabitlemesi dikey yönde diğer özellikleri kullanabilirsiniz. Bu, önizlemeyi destekleyen bir kamera cihazı için sabitleme, isStreamCombinationWithSettingsSupported öğesinin döndürülen değeri belirli bir kombinasyon için önizleme sabitleme, aynı değer olmalıdır açık veya kapalı olduğundan emin olun. Bu, özellik kombinasyonu sorguları için arama alanını azaltır.

Ayrıca, 15. medya performans sınıfı için birincil arka kamera, 1080p ve 720p için 10 bit HLG10 önizlemeyle önizleme sabitlemeyi destekler önizleme ve maksimum boyutlu JPEG'ler olabilir. Bu şartlarla ilgili daha fazla bilgi için bölüm 2.2.7.2. Kamera CDD kapsamındadır.

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 daha düşük sürümler için, HAL isStreamCombinationSupported yöntemidir.

API tarafından sorgulanan özellik kombinasyonları hakkında daha fazla bilgi için sessionConfigurationQueryVersion ile ilgili dokümanlar: system/media/camera/docs/metadata_definitions.xml

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: Özelliği sorgulamak için kullanılabilecek sınırlı bir CameraDevice gösterimi kombinasyonlarını CameraDevice örneği gerektirmeden uygulayabilirsiniz.

  • getCameraDeviceSetup: Aşağıdaki durumlarda belirli bir kamera kimliği için bir CameraDeviceSetup nesnesi edinir isCameraDeviceSetupSupported, true değerini döndürür.

  • 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 video için 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ği uygulamanızı doğrulamak için aşağıdaki VTS, CTS ve Kamera BTS (CTS Doğrulayıcı) testleri:

GD

CTS

Kamera BT