Kamera donanım soyutlama katmanı

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 13'ten itibaren kamera HAL arayüzü geliştirmesinde AIDL kullanılır. Android 8.0 kullanıma sunuldu Treble, Camera HAL API'yi değiştiriyor HAL arayüzü açıklama dili (HIDL) ile tanımlanan kararlı bir arayüze dönüştürür. 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 ardışık düzeninde önemli değişiklikler olduğunu unutmayın.

AIDL kamera HAL'si

Android 13 veya sonraki sürümleri çalıştıran cihazlarda kamera çerçevesi, AIDL kamera HAL'leri için destek içerir. Kamera çerçevesi, HIDL kamera HAL'lerini de destekler. Ancak Android 13 veya sonraki sürümlere eklenen kamera özellikleri yalnızca AIDL kamera HAL arayüzleri aracılığıyla kullanılabilir. Yeni sürüme geçen cihazlarda bu tür özellikleri uygulamak için Android 13 veya sonraki sürümler, cihaz üreticileri HAL süreçlerini HIDL kamera arayüzlerinden AIDL kameraya taşıma kullanır.

AIDL'nin avantajları hakkında bilgi edinmek için HAL'ler için AIDL başlıklı makaleyi inceleyin.

AIDL kamera HAL'sini uygula

AIDL kamera HAL'sinin referans uygulaması için bkz. hardware/google/camera/common/hal/aidl_service/ değerleridir.

AIDL kamera HAL spesifikasyonları aşağıdaki konumlardadır:

AIDL'ye taşınan cihazlar için cihaz üreticilerinin Koda bağlı olarak Android SELinux politikası (sepolicy) ve RC dosyaları inceleyeceğiz.

AIDL kamera HAL'sini doğrulayın

AIDL kamera HAL uygulamanızı test etmek için cihazın tüm HAL CTS ve VTS testleri. Android 13, AIDL VTS'yi kullanıma sunuyor test, VtsAidlHalCameraProvider_TargetTest.cpp değerleridir.

Kamera HAL3 özellikleri

Android Kamera API'sinin yeniden tasarımının amacı, ATT tarafından uygulanan Android cihazlarda kamera alt sistemini kontrol etme ve API'yi daha verimli ve sürdürülebilir hale getirmek için yeniden düzenlemek. Ek denetim, Android cihazlarda kaliteyi ve performansı en üst düzeye çıkarmak için mümkün olduğunda cihaza özel algoritmaları kullanmaya devam ederken birden fazla üründe güvenilir bir şekilde çalışabilen yüksek kaliteli kamera uygulamaları oluşturmayı kolaylaştırır.

Kamera alt sisteminin 3. sürümü, çalışma modlarını önceki modlardan herhangi birini uygulamak için kullanılabilecek tek birleşik görünüm ve seri çekim modu gibi diğer pek çok özellik. Böylece, kullanıcılar odak ve pozlama ile daha fazla işleme sonrası (ör. gürültü azaltma, kontrast) konuşacağız. Ayrıca bu basitleştirilmiş görünüm, gelecekteki kameranın çeşitli işlevlerini kullanmalarını sağlamak.

API, kamera alt sistemini gelen kamera alt sistemini bir ardışık düzen olarak modeller kare yakalama isteklerini bire bir olarak çerçevelere ayırmalıdır. Talepler bir veri ana makinesinin yakalanması ve işlenmesiyle ilgili tüm yapılandırma bilgilerini çerçeve. Çözünürlük ve piksel biçimi, manuel sensör, lens ve flaş kontrolü, 3A çalışma modları, RAW->YUV işleme kontrolü, istatistik oluşturma vb. bu kapsamdadır.

Basit bir ifadeyle, uygulama çerçevesi kamera alt sisteminden bir kare ister ve kamera alt sistemi sonuçları bir çıkış akışına döndürür. Ayrıca, her bir sonuç grubu için renk alanları ve lens gölgelendirmesi gibi bilgiler içeren meta veriler oluşturulur. 3. kamera sürümünü, 1. kamera sürümünün tek yönlü akışına giden bir ardışık düzen olarak düşünebilirsiniz. Her yakalama isteğini, sensör tarafından çekilen ve aşağıdaki şekilde işlenen tek bir görüntüye dönüştürür:

  • Yakalamayla ilgili meta veriler içeren bir sonuç nesnesi.
  • Her biri kendi hedef yüzeyine sahip bir veya daha fazla resim verisi arabelleği.

Olası çıkış yüzeyleri grubu önceden yapılandırılmıştır:

  • Her yüzey, sabit bir görüntü arabelleklerinin akışı için bir hedeftir belirler.
  • Tek seferde yalnızca az sayıda yüzey çıkış olarak yapılandırılabilir (~3).

İstek, istenen tüm yakalama ayarlarını ve çıkışın listesini içerir bu istek için görüntü arabelleklerinin aktarılacağı yüzeyler (toplam yapılandırılmış grubu). İstekler tek seferlik (capture() ile) veya süresiz olarak tekrarlanabilir (setRepeatingRequest() ile). Yakalamalar, yinelenen isteklerden önceliklidir.

Kamera veri modeli

Şekil 1. Kameranın temel çalışma modeli

Kamera HAL1'e genel bakış

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

  • Önizle
  • Video Kaydı
  • Hareketsiz görüntü yakalama

Her modun biraz farklı ve birbiriyle çakışan özellikleri vardır. Bu durum, çalışma modlarından ikisinin arasına giren seri modu gibi yeni özelliklerin uygulanmasını zorlaştırıyordu.

Kamera bloku şeması

Şekil 2. Kamera bileşenleri

Birçok cihaz hâlâ çalışmaya devam ettiği için Android 7.0 somut olarak ortaya koyar. Ayrıca Android kamera hizmeti, hem HAL1 hem de HAL3'ün uygulanmasını destekler. Bu, kamera HAL1 ile daha az yetenekli bir ön kamerayı ve kamera HAL3 ile daha gelişmiş bir arka kamerayı desteklemek istediğinizde kullanışlıdır.

Tek bir kamera HAL modülü vardır (kendi sürüm numarası) içerir. Bu listede her birinde bulunan bağımsız kamera kendi sürüm numaralarına sahip. 2 veya daha yeni cihazları desteklemek için 2 veya daha yeni bir kamera modülü gerekir. Bu tür kamera modüllerinde kamera cihazı sürümlerinin bir karışımı olabilir (Android'in her iki HAL'i de uygulamayı desteklediği ifadesiyle bunu kastediyoruz).