Çoklu Kamera Desteği

Android 9, aynı yöne bakan iki veya daha fazla fiziksel kamera cihazından oluşan yeni bir mantıksal kamera cihazı aracılığıyla çok kameralı cihazlar için API desteğini tanıttı. Mantıksal kamera cihazı, HAL ile tümleşik çoklu kamera özellikleriyle etkileşime izin veren bir uygulamaya tek bir CameraDevice/CaptureSession olarak sunulur. Uygulamalar isteğe bağlı olarak temeldeki fiziksel kamera akışlarına, meta verilere ve kontrollere erişebilir ve bunları kontrol edebilir.

Çoklu kamera desteği

Şekil 1. Çoklu kamera desteği

Bu şemada, farklı kamera kimlikleri renk kodludur. Uygulama, her bir fiziksel kameradan aynı anda ham arabellekler aktarabilir. Ayrı kontroller ayarlamak ve farklı fiziksel kameralardan ayrı meta veriler almak da mümkündür.

Örnekler ve kaynaklar

Çoklu kamera cihazları ile reklamı gereken mantıksal çoklu kamera özelliği .

Kamera istemcileri arayarak belirli bir mantıksal kamera yapılır fiziksel cihazların kamera kimliğini sorgulayabilir getPhysicalCameraIds() . Sonuç bir parçası olarak geri kimlikleri daha sonra ayrı ayrı yoluyla fiziksel cihazları kontrol etmek için kullanılır setPhysicalCameraId() . Bu tür ayrı ayrı istekleri sonuçları çağırarak tam sonucundan sorgulanabilir getPhysicalCameraResults() .

Bireysel fiziksel kamera istekleri, yalnızca sınırlı bir parametre alt kümesini destekleyebilir. Desteklenen parametrelerin bir listesini almak için, geliştiriciler çağırabilir getAvailablePhysicalCameraRequestKeys() .

Fiziksel kamera akışları yalnızca yeniden işleme alınmayan istekler için ve yalnızca monokrom ve bayer sensörleri için desteklenir.

uygulama

Destek kontrol listesi

HAL tarafına mantıksal çoklu kamera cihazları eklemek için:

Android 9 çalıştıran cihazlar için kamera cihazları, bir mantıksal YUV/RAW akışının aynı boyutta (RAW akışları için geçerli değildir) ve iki fiziksel kameradan gelen aynı formattaki fiziksel akışlarla değiştirilmesini desteklemelidir. Bu, Android 10 çalıştıran cihazlar için geçerli değildir.

Kamera HAL cihazı versiyonu Android 10 çalıştıran cihazlar için 3.5 ya da daha yüksek, kamera cihazı desteklemelidir isStreamCombinationSupported fiziksel su içeren, belirli bir akış kombinasyonu desteklenip desteklenmediğini sorguya uygulamalar için.

Akış yapılandırma haritası

Mantıksal kamera, belirli bir donanım seviyesi kamera cihaz için zorunlu akışı kombinasyonları gerekli ne aynıdır CameraDevice.createCaptureSession . Akış yapılandırma haritasındaki tüm akışlar mantıksal akışlar olmalıdır.

Farklı boyutlardaki fiziksel alt kameralarla RAW özelliğini destekleyen bir mantıksal kamera cihazı için, bir uygulama mantıksal bir RAW akışını yapılandırırsa, mantıksal kamera cihazı farklı sensör boyutlarına sahip fiziksel alt kameralara geçmemelidir. Bu, mevcut RAW yakalama uygulamalarının bozulmamasını sağlar.

RAW yakalama sırasında fiziksel alt kameralar arasında geçiş yaparak HAL uygulanan optik yakınlaştırmadan yararlanmak için, uygulamaların mantıksal bir RAW akışı yerine fiziksel alt kamera akışlarını yapılandırması gerekir.

Garantili akış kombinasyonu

Mantıksal kamera ve onun altında yatan fiziksel kameralar Hem garanti etmelidir zorunlu akışı kombinasyonları kendi cihaz seviyeleri için gerekli.

Mantıksal bir kamera cihazı, donanım düzeyine ve yeteneklerine bağlı olarak fiziksel bir kamera cihazıyla aynı şekilde çalışmalıdır. Özellik setinin, bireysel fiziksel kameraların bir üst seti olması önerilir.

Android 9 çalıştıran cihazlarda, garantili her akış kombinasyonu için mantıksal kameranın şunları desteklemesi gerekir:

  • Boyut ve biçimin fiziksel kameralar tarafından desteklenmesi koşuluyla, bir mantıksal YUV_420_888 veya ham akışı, her biri ayrı bir fiziksel kameradan aynı boyut ve biçimde iki fiziksel akışla değiştirme.

  • Mantıksal kamera RAW özelliği tanıtmıyorsa, ancak temeldeki fiziksel kameralar yapıyorsa, her bir fiziksel kameradan bir tane olmak üzere iki ham akış eklemek. Bu genellikle fiziksel kameralar farklı sensör boyutlarına sahip olduğunda ortaya çıkar.

  • Aynı boyut ve biçimdeki mantıksal bir akış yerine fiziksel akışları kullanma. Bu, fiziksel ve mantıksal akışların minimum kare süresi aynı olduğunda, yakalamanın kare hızını yavaşlatmamalıdır.

Performans ve güç konuları

  • Verim:

    • Fiziksel akışların yapılandırılması ve akışı, kaynak kısıtlamaları nedeniyle mantıksal kameranın yakalama hızını yavaşlatabilir.
    • Temel kameralar farklı kare hızlarına yerleştirilirse, fiziksel kamera ayarlarının uygulanması yakalama hızını yavaşlatabilir.
  • Güç:

    • HAL'ın güç optimizasyonu varsayılan durumda çalışmaya devam eder.
    • Fiziksel akışları yapılandırmak veya istemek, HAL'ın dahili güç optimizasyonunu geçersiz kılabilir ve daha fazla güç kullanımına neden olabilir.

özelleştirme

Cihaz uygulamanızı aşağıdaki şekillerde özelleştirebilirsiniz.

  • Mantıksal kamera cihazının birleştirilmiş çıktısı tamamen HAL uygulamasına bağlıdır. Fiziksel kameralardan birleştirilmiş mantıksal akışların nasıl türetildiğine ilişkin karar, uygulama ve Android kamera çerçevesi için şeffaftır.
  • Bireysel fiziksel istekler ve sonuçlar isteğe bağlı olarak desteklenebilir. Bu tür isteklerdeki kullanılabilir parametreler kümesi de tamamen belirli HAL uygulamasına bağlıdır.
  • Android 10, HAL doğrudan bir kısmını veya tamamını PHYSICAL_IDs reklamını değil seçilmesi ile bir uygulama tarafından açılabilen kameraların sayısını azaltabilir getCameraIdList . Arayan getPhysicalCameraCharacteristics sonra fiziksel kameranın özelliklerini dönmelidir.

doğrulama

Mantıksal çoklu kamera cihazları, diğer normal kameralar gibi kamera CTS'sini geçmelidir. Cihazın bu tür hedef test durumları bulunabilir LogicalCameraDeviceTest modülü.

Bu üç ITS testi, görüntülerin uygun şekilde kaynaştırılmasını kolaylaştırmak için çoklu kamera sistemlerini hedefler:

Sahne 1 ve sahne 4 test çalıştırmak ITS-in-a-box test düzeneğine. test_multi_camera_match testi iki kamera hem etkin olduğunda görüntülerin merkezinin parlaklığı maç olduğunu iddia ediyor. test_multi_camera_alignment testi kamera mesafeleri, yönelimleri ve distorsiyon parametreleri düzgün yüklenir ileri sürer. Çoklu kamera sistemi bir Geniş FoV kamera (>90o) içeriyorsa, ITS kutusunun rev2 versiyonu gereklidir.

Sensor_fusion tekrarlanan öngörülen telefon hareketini sağlar ve jiroskop ve görüntü sensörü damgaları eşleşen ve çoklu kamera kare senkronize olduğunu ileri sürerken ikinci bir test donanım.

Tüm kutular AcuSpec, Inc. (edinilebilir www.acuspecinc.com , fred@acuspecinc.com) ve MYWAY İmalat ( www.myway.tw , sales@myway.tw). Ayrıca, rev1 ITS kutu Batı-Mark (yoluyla satın alınabilir www.west-mark.com , dgoodman@west-mark.com).

En iyi uygulamalar

Uygulama uyumluluğunu korurken çoklu kamera tarafından sağlanan özelliklerden tam olarak yararlanmak için mantıksal bir çoklu kamera cihazı uygularken şu en iyi uygulamaları izleyin:

  • (Android 10 veya daha yüksek) den fiziksel alt kameralar Hide getCameraIdList . Bu, uygulamalar tarafından doğrudan açılabilen kamera sayısını azaltarak, uygulamaların karmaşık kamera seçim mantığına sahip olma ihtiyacını ortadan kaldırır.
  • Optik zum destekleyen bir mantıksal çoklu kamera cihazının için (Android 11 veya daha yüksek), uygulamaya ANDROID_CONTROL_ZOOM_RATIO API ve kullanım ANDROID_SCALER_CROP_REGION sadece kırpma boy oranı. ANDROID_CONTROL_ZOOM_RATIO uzaklaştırmak ve daha iyi hassasiyet korumak için cihazı sağlar. Bu durumda, bir HAL koordinatlarında ayarlamak gerekir ANDROID_SCALER_CROP_REGION , ANDROID_CONTROL_AE_REGIONS , ANDROID_CONTROL_AWB_REGIONS , ANDROID_CONTROL_AF_REGIONS , ANDROID_STATISTICS_FACE_RECTANGLES ve ANDROID_STATISTICS_FACE_LANDMARKS sensörü etkin dizi olarak bakış sonrası zum alanı tedavisi için. Konusunda daha fazla bilgi için ANDROID_SCALER_CROP_REGION ile birlikte çalışır ANDROID_CONTROL_ZOOM_RATIO , bkz camera3_crop_reprocess#cropping .
  • Farklı yeteneklere sahip fiziksel kameralara sahip çok kameralı cihazlar için, cihazın yalnızca tüm yakınlaştırma aralığı değeri veya aralığı destekliyorsa bir kontrol için belirli bir değer veya aralık için destek verdiğinden emin olun. Örneğin, mantıksal kamera ultra geniş, geniş ve telefoto kameradan oluşuyorsa aşağıdakileri yapın:
    • Fiziksel kameraların aktif dizisi boyutları farklıysa, kamera HAL için mantıksal kamera aktif diziye fiziksel kameraların aktif dizilerden eşlemesi yapmak gerekir ANDROID_SCALER_CROP_REGION , ANDROID_CONTROL_AE_REGIONS , ANDROID_CONTROL_AWB_REGIONS , ANDROID_CONTROL_AF_REGIONS , ANDROID_STATISTICS_FACE_RECTANGLES ve ANDROID_STATISTICS_FACE_LANDMARKS böylece uygulama yıllardan itibaren perspektifte, koordinat sistemi mantıksal kameranın aktif dizi boyutudur.
    • Geniş ve telefoto kameralar otomatik odaklamayı destekliyorsa, ancak ultra geniş kamera sabit odaklıysa, mantıksal kameranın otomatik odak desteğini tanıttığından emin olun. HAL, ultra geniş kamera için bir otomatik odak durum makinesini simüle etmelidir, böylece uygulama ultra geniş merceğe uzaklaştığında, alttaki fiziksel kameranın sabit odak olduğu gerçeği uygulamaya ve otomatik odaklama durum makinelerine desteklenen AF modları için şeffaftır. beklendiği gibi çalışın.
    • Geniş ve telefoto kameralar 4K @ 60 fps'yi destekliyorsa ve ultra geniş kamera yalnızca 4K @ 30 fps veya 1080p @ 60 fps'yi destekliyor, ancak 4K @ 60 fps'yi desteklemiyorsa, mantıksal kameranın 4k @ 60 fps reklamını yapmadığından emin olun. desteklenen akış yapılandırmaları. Bu uygulama bir de 4k @ 60 fps ulaşamama sorunu çalıştırmak olmayacaktır sağlanması, mantıksal kamera yetenekleri bütünlüğünü güvence altına ANDROID_CONTROL_ZOOM_RATIO 1'den değeri.
  • Android 10'dan başlayarak, fiziksel akışları içeren akış kombinasyonlarını desteklemek için mantıksal bir çoklu kamera gerekli değildir. HAL, fiziksel akışlarla bir kombinasyonu destekliyorsa:
    • (Android 11 veya üstü) Stereodan derinlik ve hareket izleme gibi kullanım durumlarını daha iyi ele almak için, fiziksel akış çıkışlarının görüş alanını donanımın ulaşabileceği kadar büyük yapın. Bununla birlikte, fiziksel bir akış ve bir mantıksal akış aynı fiziksel kameradan geliyorsa, donanım sınırlamaları, fiziksel akışın görüş alanını mantıksal akışla aynı olmaya zorlayabilir.
    • Birden çok fiziksel akışları neden olduğu bellek basıncını ele almak için emin uygulamaların kullanımı yapmak discardFreeBuffers ücretsiz tampon fiziksel bir dere boşta olması bekleniyor eğer bir süre için (tüketici tarafından yayımlanan, ancak henüz yapımcı tarafından dequeued olmayan tamponlar) ayırması zamanın.
    • Farklı fiziksel kameralardan fiziksel akışları tipik olarak aynı isteğe bağlı değilse, emin uygulamaların kullanımı olmak surface group yani bir sıra bellek tüketimini azaltarak, iki uygulama bakan yüzeyleri desteklemek için kullanılır tampon olduğu.