Kamera HAL3

Android'in kamera Donanım Soyutlama Katmanı (HAL), android.hardware.camera2 içindeki üst düzey kamera çerçevesi API'lerini temel kamera sürücünüze ve donanımınıza bağlar. Android 8.0, CameraHal API'sini HAL Arabirim Açıklama Dili (HIDL) tarafından tanımlanan kararlı bir arabirime dönüştüren Treble'ı tanıttı. Daha önce Android 7.0 ve önceki sürümler için bir kamera HAL modülü ve sürücüsü geliştirdiyseniz, kamera hattındaki önemli değişikliklerin farkında olun.

Kamera HAL3 özellikleri

Android Kamera API'sinin yeniden tasarımının amacı, API'yi daha verimli ve sürdürülebilir hale getirmek için yeniden düzenlerken uygulamaların Android cihazlarda kamera alt sistemini kontrol etme yeteneğini önemli ölçüde artırmaktır. Ek kontrol, kalite ve performansı en üst düzeye çıkarmak için mümkün olduğunda cihaza özel algoritmalar kullanırken birden fazla üründe güvenilir bir şekilde çalışabilen Android cihazlarda yüksek kaliteli kamera uygulamaları oluşturmayı kolaylaştırır.

Kamera alt sisteminin sürüm 3'ü, çalışma modlarını, önceki modlardan herhangi birini ve seri çekim modu gibi birkaç diğerini uygulamak için kullanılabilen tek bir birleşik görünümde yapılandırır. Bu, odak ve pozlama için daha iyi kullanıcı kontrolü ve gürültü azaltma, kontrast ve keskinleştirme gibi daha fazla işlem sonrası işleme ile sonuçlanır. Ayrıca, bu basitleştirilmiş görünüm, uygulama geliştiricilerin kameranın çeşitli işlevlerini kullanmasını kolaylaştırır.

API, kamera alt sistemini, kare yakalama için gelen istekleri 1:1 temelinde karelere dönüştüren bir ardışık düzen olarak modeller. İstekler, bir çerçevenin yakalanması ve işlenmesiyle ilgili tüm yapılandırma bilgilerini kapsar. Buna çözünürlük ve piksel formatı dahildir; manuel sensör, lens ve flaş kontrolü; 3A çalışma modları; RAW->YUV işleme kontrolü; istatistik üretimi; ve benzeri.

Basit bir ifadeyle, uygulama çerçevesi kamera alt sisteminden bir çerçeve ister ve kamera alt sistemi sonuçları bir çıktı akışına döndürür. Ayrıca, her bir sonuç kümesi için renk uzayları ve mercek gölgeleme gibi bilgileri içeren meta veriler oluşturulur. Kamera sürüm 3'ü, kamera sürüm 1'in tek yönlü akışına giden bir boru hattı olarak düşünebilirsiniz. Her bir yakalama talebini, sensör tarafından yakalanan ve şu şekilde işlenen tek bir görüntüye dönüştürür:

  • Yakalama hakkında meta veriler içeren bir Result nesnesi.
  • Her biri kendi hedef Yüzeyinde birden N'ye kadar görüntü verisi arabelleği.

Olası çıktı Yüzeyleri seti önceden yapılandırılmıştır:

  • Her Yüzey, sabit bir çözünürlükteki görüntü arabellekleri akışı için bir hedeftir.
  • Tek seferde yalnızca az sayıda Yüzey çıkış olarak yapılandırılabilir (~3).

Bir istek, istenen tüm yakalama ayarlarını ve bu istek için görüntü arabelleklerini itmek için çıktı Yüzeylerinin listesini içerir (konfigüre edilen toplam kümenin dışında). Bir istek tek seferlik olabilir ( catch() ile) veya süresiz olarak tekrarlanabilir ( capture() setRepeatingRequest() ile). Yakalamalar, yinelenen isteklere göre önceliğe sahiptir.

Kamera veri modeli

Şekil 1. Kamera çekirdek çalışma modeli

Kamera HAL1'e genel bakış

Kamera alt sisteminin 1. versiyonu, üst düzey kontrollere ve aşağıdaki üç çalışma moduna sahip bir kara kutu olarak tasarlanmıştır:

  • Ön izleme
  • Video Kaydı
  • Hala Yakalama

Her modun biraz farklı ve örtüşen yetenekleri vardır. Bu, iki çalışma modu arasında kalan patlama modu gibi yeni özelliklerin uygulanmasını zorlaştırdı.

Kamera blok şeması

Şekil 2. Kamera bileşenleri

Android 7.0, birçok cihaz hala ona bağlı olduğu için kamera HAL1'i desteklemeye devam ediyor. Ayrıca, Android kamera hizmeti, HAL1 kameralı daha az yetenekli bir öne bakan kamerayı ve kamera HAL3'lü daha gelişmiş bir arkaya bakan kamerayı desteklemek istediğinizde kullanışlı olan hem HAL'lerin (1 ve 3) uygulanmasını destekler.

Her biri kendi sürüm numarasına sahip birden fazla bağımsız kamera cihazını listeleyen tek bir kamera HAL modülü (kendi sürüm numarasına sahip) vardır. Cihaz 2 veya daha yenisini desteklemek için kamera modülü 2 veya daha yenisi gereklidir ve bu tür kamera modülleri, kamera cihazı sürümlerinin bir karışımına sahip olabilir (Android'in her iki HAL'ı da uygulamayı desteklediğini söylediğimizde kastettiğimiz şey budur).