Çoklu kamera desteği

Android 9, çok kameralı API desteğini kullanıma sundu iki veya daha fazla fiziksel kameradan oluşan yeni bir mantıksal kamera kamera cihazları ile aynı yöne doğru Mantıklı kamera cihazı izin veren bir uygulama içinde tek bir CameraDevice/CaptureSession olarak gösterilen entegre edilmiş çok kameralı özelliklerle etkileşim Uygulamalar isteğe bağlı olarak temel fiziksel kamera akışlarına, meta verilere ve kontrollere erişip bunları kontrol edebilir.

Çoklu kamera desteği

1. Şekil. Çoklu kamera desteği

Bu şemada, farklı kamera kimlikleri renklerle kodlanmıştır. Uygulama aynı anda her fiziksel kameradan ham arabellek akışı yapabiliyor. Aynı zamanda ayrı denetimler ayarlamak ve farklı cihazlardan ayrı meta veriler almak fiziksel kameralar.

Örnekler ve kaynaklar

Çok kameralı cihazların reklamı mantıksal çok kameralı özelliği hakkında daha fazla bilgi edinin.

Kamera istemcileri, belirli bir fiziksel cihazlarda gerçekleştirilen fiziksel cihazların kamera kimliğini sorgulayabilir. mantıksal kamera, arama yoluyla yapılmış getPhysicalCameraIds(). Sonucun bir parçası olarak döndürülen kimlikler daha sonra fiziksel cihazları kontrol etmek için kullanılır ile bireysel olarak setPhysicalCameraId(). Bu tür isteklerin sonuçları, çağrısı ile sonuç getPhysicalCameraResults().

Ayrı fiziksel kamera istekleri, parametreleridir. Geliştiriciler desteklenen parametrelerin listesini almak için getAvailablePhysicalCameraRequestKeys().

Fiziksel kamera akışları, yalnızca yeniden işleme olmayan istekler için desteklenir ve yalnızca tek renkli ve Bayer sensörler için kullanabilirsiniz.

Uygulama

Destek kontrol listesi

HAL tarafına mantıksal çok kameralı cihazlar eklemek için:

Android 9 çalıştıran cihazlarda kameralar bir mantıksal YUV/RAW akışının fiziksel akışlarıyla değiştirilmesini aynı boyutta (RAW akışları için geçerli değildir) ve iki fiziksel kameralar. Bu durum, Android 10 çalıştıran cihazlar için geçerli değildir.

Android 10 çalıştıran cihazlar için kamera HAL cihazının sürümü (şimdiki değeri) 3,5 kamera cihazı, TV'yi destekleyen isStreamCombinationSupported içeren belirli bir akış kombinasyonunun bu özelliği Fiziksel akışlar desteklenir.

Akış yapılandırma eşlemesi

Mantıksal bir kamera için şu kamera cihazının zorunlu yayın kombinasyonları: bir donanımla aynı donanım düzeyinin olması, CameraDevice.createCaptureSession. Akış yapılandırma eşlemesindeki tüm akışlar mantıksal akış olmalıdır.

Fiziksel alt kameralarla RAW özelliğini destekleyen mantıksal bir kamera cihazı için farklı boyutlarda resimler oluşturabilirsiniz. Uygulama mantıksal bir RAW akışı Mantıksal kamera cihazı, farklı kameralara sahip fiziksel alt kameralara geçmemelidir. sensör boyutları. Bu sayede mevcut RAW yakalama uygulamalarının bozulmaması sağlanır.

Aralarında geçiş yaparak HAL uygulanan optik yakınlaştırmadan yararlanmak için alt kameralar için kullanılabilir. Uygulamalar, Mantıksal bir RAW akışı yerine fiziksel alt kamera akışlarını yapılandırın.

Garantili yayın kombinasyonu

Hem mantıksal kamera hem de arkasındaki fiziksel kameralar, zorunlu yayın kombinasyonları zorunlu değildir.

Mantıksal bir kamera cihazı, fiziksel bir kamerayla aynı şekilde çalışmalıdır. kapasitesine göre, cihazın. Optimum kampanya performansı için özellik kümesi, tek tek fiziksel kameraların üst kümesidir.

Android 9 çalıştıran cihazlarda, her biri garantili yayın kombinasyonunda mantıksal kameranın şunları desteklemesi gerekir:

  • Bir mantıksal YUV_420_888 veya ham akışı iki fiziksel akışla değiştirme aynı boyutta ve biçimde olmak üzere, her biri ayrı bir fiziksel kameradan boyut ve biçim fiziksel kameralar tarafından desteklenir.

  • Mantıksal kamera otomatik hale geliyorsa her bir fiziksel kameradan bir tane olmak üzere iki ham akış ekleme Ancak temeldeki fiziksel kameralar RAW özelliğini tanıtmıyor. Bu durum genellikle fiziksel kameraların farklı sensör boyutlarına sahip olduğunda görülür.

  • Aynı büyüklükte ve büyüklükteki mantıksal akış yerine fiziksel biçimindedir. Bu, Fiziksel ve mantıksal akışların minimum kare süresinin aynı olduğundan emin olun.

Performans ve güçle ilgili dikkat edilmesi gereken noktalar

  • Performans:

    • Fiziksel akışları yapılandırmak ve akış izlemek, mantıksal kameranın yakalama hızına (kaynak kısıtlamaları nedeniyle) eklenmez.
    • Fiziksel kamera ayarlarının uygulanması, aşağıdaki durumlarda çekim hızını yavaşlatabilir: farklı kare hızlarına yerleştirilir.
  • Güç:

    • HAL'nin güç optimizasyonu varsayılan durumda çalışmaya devam eder.
    • Fiziksel akışların yapılandırılması veya istenmesi, HAL'nin dahili ayarını geçersiz kılabilir daha fazla güç kullanımına neden olur.

Özelleştirme

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

  • Mantıksal kamera cihazının çok kaynaklı çıkışı tamamen HAL'ye bağlıdır hakkında bilgi edindiniz. Mantıksal akışların fiziksel kameralar uygulama ve Android kameraya göre şeffaf bahsedeceğim.
  • Fiziksel istekler ve sonuçlar da isteğe bağlı olarak desteklenebilir. İlgili içeriği oluşturmak için kullanılan Bu tür isteklerdeki kullanılabilir parametreler de tamamen ele alacağız.
  • HAL, Android 10'dan itibaren uygulamadaki seçerek doğrudan bir uygulama tarafından açılabilen kameralar şurada PHYSical_ID öğelerinin bazılarının veya tümünün reklamını yap: getCameraIdList. getPhysicalCameraCharacteristics aranıyor fiziksel kameranın özelliklerini döndürmelidir.

Doğrulama

Mantıksal çok kameralı cihazlar, diğer normal kameralar gibi kamera CTS'sini geçmelidir. Bu tür cihazları hedefleyen test durumları şu adreste bulunabilir: LogicalCameraDeviceTest modülünü kullanabilirsiniz.

Bu üç ITS testi, doğru kaliteyi sağlamada resimlerin birleşimi:

1. sahne ve 4. sahne testleri ITS-in-a-box testi düzen. test_multi_camera_match testi, iki kamera etkinleştirildiğinde görüntülerin ortası eşleşir. İlgili içeriği oluşturmak için kullanılan test_multi_camera_alignment testi, kamera boşluklarının, yönlerin ve ve distorsiyon parametreleri düzgün şekilde yüklendiğinden emin olun. Çok kameralı sistem Geniş FoV kamera (>90o) içerir, ITS kutusunun rev2 sürümü gerekir.

Sensor_fusion, tekrarlanan, reçeteli telefon almayı sağlayan ikinci bir test aracıdır hareket eder ve jiroskop ile görüntü sensörü zaman damgalarının çoklu kamera karelerinin senkronize olduğundan emin olun.

Tüm kutular AcuSpec, Inc. üzerinden satın alınabilir. (www.acuspecinc.com, fred@acuspecinc.com) ve MYWAY İmalat (www.myway.tw, sales@myway.tw). Buna ek olarak, rev1 ITS kutusu West-Mark'tan satın alınabilir (www.west-mark.com, dgoodman@west-mark.com).

En iyi uygulamalar

Çoklu kameranın sağladığı özelliklerden tam olarak yararlanmak için uygulama uyumluluğu ile ilgili mantıksal bir çok kameralı cihaz:

  • (Android 10 veya sonraki sürümler) Fiziksel alt kameraları gizle getCameraIdList. Böylece, kullanıcılar tarafından doğrudan açılabilen kameraların sayısı Böylece uygulamaların karmaşık kamera seçim mantığına sahip olması gerekmez.
  • (Android 11 veya sonraki sürümler) Mantıksal bir çoklu kamera için optik yakınlaştırmayı destekleyen bir cihaz kullanıyorsanız ANDROID_CONTROL_ZOOM_RATIO API ve ANDROID_SCALER_CROP_REGION kullanın yalnızca en boy oranında kırpma için kullanın. ANDROID_CONTROL_ZOOM_RATIO özelliği, cihazın uzaklaşmasını ve daha iyi hassasiyeti elde etmesini sağlar. Böyle durumlarda HAL, ANDROID_SCALER_CROP_REGION koordinat sistemini, ANDROID_CONTROL_AE_REGIONS, ANDROID_CONTROL_AWB_REGIONS, ANDROID_CONTROL_AF_REGIONS, ANDROID_STATISTICS_FACE_RECTANGLES, ve ANDROID_STATISTICS_FACE_LANDMARKS tedavi için sensör aktif dizisi olarak bir görüş alanına sahip olur. Daha fazla bilgi için ANDROID_SCALER_CROP_REGION ANDROID_CONTROL_ZOOM_RATIO ile birlikte çalışır, bkz. camera3_crop_reprocess#cropping.
  • Farklı fiziksel kameralara sahip çok kameralı cihazlar için cihazın belirli bir değer için destek reklamı yayınladığından emin olun. Yalnızca yakınlaştırma aralığının tamamı değeri destekliyorsa kontrol için veya aralık. Örneğin, mantıksal kamera ultra geniş geniş ve telefoto kamera kullanarak şunları yapabilirsiniz:
    • Fiziksel kameraların etkin dizi boyutları farklıysa kamera HAL'si, fiziksel kameraların etkin dizilerinden ANDROID_SCALER_CROP_REGION için mantıksal kamera etkin dizisi, ANDROID_CONTROL_AE_REGIONS, ANDROID_CONTROL_AWB_REGIONS, ANDROID_CONTROL_AF_REGIONS, ANDROID_STATISTICS_FACE_RECTANGLES, ve ANDROID_STATISTICS_FACE_LANDMARKS Bu nedenle uygulama açısından bakıldığında koordinat sistemi, mantıksal kameranın aktif dizi boyutudur.
    • Geniş ve telefoto kameralar otomatik odaklamayı destekliyor ancak ultra geniş kamera sabit odaklıysa, mantıksal kameranın otomatik odaklamayı tanıttığından emin olun destek. HAL, ultra geniş için otomatik odaklama durumu makinesini simüle etmelidir Böylece uygulama ultra geniş lense uzaklaştığında temel fiziksel kameranın sabit odağın uygulama için şeffaf olması, Ayrıca desteklenen AF modları için otomatik odaklama durum makineleri bekleniyor.
    • Geniş ve telefoto kameralar 60 fps'de 4K'yı destekliyorsa ve Ultra geniş kamera yalnızca 30 fps'de 4K veya 60 fps'de 1080p'yi destekler, ancak 60 fps'de 4K değil, mantıksal kameranın 4K reklam vermediğinden emin olun. Desteklenen yayın yapılandırmalarında 60 fps. Böylece, mantıksal kamera yeteneklerini ve uygulamanın bütünlüğünü 60 fps'de 4K'ya ulaşamama sorunuyla karşılaşabilirsiniz. ANDROID_CONTROL_ZOOM_RATIO 1'den küçük bir değere ayarlayın.
  • Mantıklı çok kameralı Android 10'dan yıldızlar Fiziksel akışları içeren yayın kombinasyonlarını desteklemek için gerekli değildir. HAL, fiziksel akışlarla bir kombinasyonu destekliyorsa:
    • (Android 11 veya sonraki sürümler) Daha iyi kullanım için ve hareket izlemeden derinlik gibi durumlarda, görüş alanını kadar büyük bir fiziksel akış çıkışlarının olması gerekir. Ancak fiziksel bir akış ve mantıksal akış aynı donanım kısıtlamaları nedeniyle kameranın görüş alanı mantıksal akışla aynı olması gerekir.
    • Birden fazla fiziksel yayının neden olduğu bellek baskısını gidermek için: uygulamaların discardFreeBuffers kullanıldığından emin olun serbest tamponları (tüketici tarafından serbest bırakılan tamponlar) ancak henüz yapımcı tarafından kuyruğa alınmamışsa) bir süre boşta kaldığında.
    • Farklı fiziksel kameralardan gelen fiziksel yayınlar genelde aynı isteğe eklenmişse, uygulamaların surface group kullanıldığından emin olun. Böylece, uygulamaya dönük iki yüzeyi desteklemek için bir arabellek sırası kullanılır. Bu da bellek tüketimini azaltır.