Akış yapılandırmaları

Android 10, kamera istemcilerine olanak tanıyan özellikler sunuyor 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 Akış 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 durdurulmamış olan 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:

Akış kombinasyonlarını sorgulama API'si

Android platformu, akış kombinasyonlarını sorgulamak için bir API'yi destekler. Uygulama bu API, kamera istemcilerinin herhangi bir noktada akış kombinasyonlarını güvenli bir şekilde sorgulamasına olanak tanır. geçerli bir KameraCihazı kamerayla çekim oturumu başlatmanın ve kameranın kırılması gibi sonraki kamera istisnaları olasılığı nedeniyle. Böylece daha hızlı sorgular yapabilirsiniz.

Bu özellik, kamera istemcilerinin yayın kombinasyonlarının listesini almasına da olanak tanır. uyarınca derlenen yönergeler kameraya ve desteklenen donanım yazılımı düzeyine gidin. CTS testleri uygulamalıdır küçük bir alt kümeyi kapsayacak şekilde, sorgu sonuçlarının doğruluğunu mümkün olduğunca en yaygın yayın kombinasyonlarından biri.

Bir HIDL API daha uygulayarak bu özelliği destekleyebilirsiniz. araması yapabilirsiniz.

Uygulama

Akış kombinasyonlarının sorgulanmasına yönelik bir API'nin desteklenmesi için Kamera HAL'si web sitesi isStreamCombinationSupported HIDL API arayüzü. Bu arayüz, kamera cihazının bir belirtilen kamera akışı kombinasyonu.

Çağrı yapıldığında, API'nin aşağıdaki durum kodlarından birini döndürmesi gerekir:

  • OK: Akış kombinasyonu sorgusu başarılı oldu.
  • METHOD_NOT_SUPPORTED: Kamera cihazı akışı desteklemiyor emin olun.
  • INTERNAL_ERROR: Akış kombinasyonu sorgusu şu nedenle tamamlanamıyor: dahili bir hata oluştu.

Akış kombinasyonu destekleniyorsa API, doğru değerini döndürür. Aksi halde false (yanlış) değerini döndürür.

Çerçeve, herkese açık API'yi kullanır isSessionConfigurationSupported belirli bir oturum yapılandırmasının kamera tarafından desteklenip desteklenmediğini kontrol etmek için olanak tanır.

API'ye yapılan çağrıların normal kamera çalışması üzerinde herhangi bir yan etkisi olmamalıdır. API çağrıların herhangi bir dahili durumu değiştirmemeli veya kamera performansını yavaşlatmamalıdır. Kamera HAL'si bir yayın kombinasyonunu başarıyla doğruladıktan sonra kamera istemcileri akış kombinasyonunu başarıyla yapılandırabilir. Sorun yaşamamak için uygulamada herhangi bir bilginin depolanmadığından emin olun. veya etkileşim kurma ya da başka bir zaman alan işlemlerdir.

Doğrulama

Bu özelliği doğrulamak için aşağıdaki kamera CTS ve VTS test durumlarını çalıştırın:

Kamera CTS modülleri:

Kamera VTS'si:

VtsHalCameraProviderV2_4TargetTest.cpp