HAL alt sistemi

İstekler

Uygulama çerçevesi, yakalanan sonuçlar için istekleri kamera alt sistemine gönderir. Bir istek, bir sonuç kümesine karşılık gelir. Bir istek, bu sonuçların yakalanması ve işlenmesiyle ilgili yapılandırma bilgilerini içerir. Çözünürlük ve piksel biçimi gibi özellikler; manuel sensör, lens ve ve flaş kontrolü; 3A çalışma modları; RAW'dan YUV'ye işleme kontrolü; ve istatistik oluşturma. Bu da sonuçlar üzerinde daha fazla denetime çıktı ve işleme. Birden fazla istek aynı anda yayınlanabilir ve engel teşkil etmez. İstekler her zaman sipariş verilmelidir.

Kamera istek modeli

Şekil 1. Kamera modeli

HAL ve kamera alt sistemi

Kamera alt sistemi, kameradaki bileşenlerin uygulanmasını içerir gibi farklı ardışık düzenlerin kullanılmasıdır. Kamera donanım soyutlama katmanı Bu bileşenlerin sürümlerini uygulamanız için arayüzler sağlar. Alıcı: Birden fazla cihaz üreticisi arasında platformlar arası uyumluluğu sağlamak Görüntü Sinyali İşlemcisi (İSS veya kamera sensörü) satıcıları, kamera ardışık düzeni sanaldır ve gerçek bir İSS'ye doğrudan karşılık gelmemektedir. Ancak, gerçek işleme ardışık düzenlerine benzer niteliktedir. Böylece, verimli bir şekilde yönetmenizi sağlar. Ayrıca, birden fazla soruna imkan verecek kadar soyuttur. farklı algoritmalar ve çalışma sıraları sunar. kalite, verimlilik veya cihazlar arası uyumluluk.

Kamera ardışık düzeni, uygulama çerçevesinin başlatabileceği tetikleyicileri de destekler. otomatik odaklama gibi özellikleri açın. Ayrıca bildirimleri otomatik odaklama kilidi veya hatalar gibi etkinlikler hakkında uygulamaları bilgilendiren bir uygulama çerçevesi bulunur.

Kamera donanım soyutlama katmanı

Şekil 2. Kamera ardışık düzeni

Yukarıdaki diyagramda gösterilen bazı resim işleme bloklarının resimlere dahil olmadığını lütfen unutmayın. iyi tanımlanmış olması gerekir. Kamera ardışık düzeni şunları yapar: varsayımlar:

  • RAW Bayer çıktısı, İSS içinde hiçbir işlemden geçmez.
  • İstatistikler, ham sensör verilerine dayalı olarak oluşturulur.
  • Ham sensör verilerini YUV'ye dönüştüren çeşitli işleme blokları, isteğe bağlıdır.
  • Birden fazla ölçek ve kırpma birimi gösterilir ancak tüm ölçekleyici birimler çıkış bölgesi kontrolleri (dijital yakınlaştırma) içeriyor. Ancak, her birimde farklı bir çıkış çözünürlüğü ve piksel biçimi.

API kullanımının özeti
Bu makalede, Android fotoğraf makinesi API'sini kullanma adımlarının kısa bir özeti verilmiştir. Bkz. Başlangıç ve beklenen işlem sırası bölümü ile adımları uygulayın.

  1. Kamera cihazlarını dinleme ve numaralandırma.
  2. Cihazı açın ve dinleyicileri bağlayın.
  3. Hedef kullanım alanı (ör. fotoğraf çekme, kaydetme, kaydetme, vb.) bakın.
  4. Hedef kullanım alanı için istek oluşturun.
  5. İstekleri ve seri çekimleri yakalayın/tekrarlayın.
  6. Sonuç meta verilerini ve resim verilerini alın.
  7. Kullanım alanlarını değiştirirken 3. adıma dönün.

HAL işlemi özeti

  • Eşzamansız yakalama istekleri çerçeveden gelir.
  • HAL cihazı, istekleri sırayla işleme koymalıdır. Her istek için de ve bir veya daha fazla çıkış resmi arabelleğini içerir.
  • İstekler ve sonuçlar için ve referans verilen akışlar için "ilk gelen, ilk çıkar" ve emin olun.
  • Zaman damgalarının, belirli bir istekteki tüm çıkışlar için aynı olması gerekir. Böylece gerekirse bunları birbiriyle eşleştirebilir.
  • Tüm yakalama yapılandırması ve durumu (3A rutinleri hariç) bir diğeri ise isteklerde ve sonuçlarda yer almalıdır.
Kamera HAL'ye genel bakış

Şekil 3. Kamera HAL'ye genel bakış

Başlatma ve beklenen işlem sırası

Bu bölümde, kamera API'sini kullanıyor. Lütfen bkz. HIDL arayüzü için platform/donanım/arayüzler/kamera/ tanımlar.

Kamera cihazlarını numaralandırma, açma ve etkin oturum oluşturma

  1. Başlatma işleminden sonra çerçeve mevcut olanları dinlemeye başlar kamera tedarikçisi ICameraProvider arayüzü. Böyle bir sağlayıcı veya sağlayıcı varsa çerçeve bağlantı kurmaya çalışır.
  2. Çerçeve, kamera cihazlarını ICameraProvider::getCameraIdList()
  3. Çerçeve, ilgili öğeyi çağırarak yeni bir ICameraDevice örneği oluşturur ICameraProvider::getCameraDeviceInterface_VX_X().
  4. Çerçeve, yeni bir öğe oluşturmak için ICameraDevice::open() komutunu çağırır etkin yakalama oturumu IKameraDeviceSession.

Etkin bir kamera oturumu kullan

  1. Çerçeve, ICameraDeviceSession::configureStreams() çağrısını yapar HAL cihazına giriş/çıkış akışlarının bir listesini içerir.
  2. Çerçeve, aşağıdaki öğelerin olduğu bazı kullanım alanları için varsayılan ayarlar istiyor: ICameraDeviceSession::constructDefaultRequestSettings() çağrıları. Bu işlem, ICameraDeviceSession gerçekleştikten sonra herhangi bir zamanda oluşturan: ICameraDevice::open.
  3. Çerçeve, ilk yakalama isteğini oluşturur ve HAL'ye gönderir. varsayılan ayar gruplarından birini temel alan ve en az bir tane çerçeve tarafından daha önce kaydedilen çıkış akışı. Bu gönderildi ICameraDeviceSession::processCaptureRequest() ile HAL'ye. HAL, bir sonraki çağrıya hazır olana kadar bu aramanın geri gelmesini engellemelidir bir istek gönderilir.
  4. Çerçeve, istek ve çağrı göndermeye devam eder Almak için ICameraDeviceSession::constructDefaultRequestSettings() kullanım alanları için varsayılan ayarlar arabelleklerine eklemeniz gerekir.
  5. İstek yakalandığında (sensör, yakalama), HAL araması şu şekilde: ICameraDeviceCallback::notify() kare numarası ve başlangıç zaman damgası dahil olmak üzere SHUTTER mesajı bir risktir. Bu bildirim geri çağırmasının ilk İstek için processCaptureResult() çağrısı var, ancak sonuç yok sonrasına kadar yakalama için uygulamaya teslim edilir. Bu yakalama için notify() çağrılır.
  6. Ardışık düzende bir süre gecikmesinden sonra HAL, tamamlanan yakalamaları ICameraDeviceCallback::processCaptureResult() ile çerçeveleyin. Bunlar, taleplerin gönderildiği sırayla döndürülür. Birden çok web sitesinin ardışık düzeni derinliğine bağlı olarak, istekler aynı anda yayınlanabilir. fotoğraf makinesi HAL cihazı.

Bir süre sonra, aşağıdaki durumlardan biri gerçekleşir:

  • Çerçeve, yeni istek göndermeyi durdurabilir. Bunun için mevcut yakalamaların tamamlanması için iade edilir) ve ardından ICameraDeviceSession::configureStreams() numaralı telefonu arayın tekrar. Bu işlem, yeni bir grup sistem için kamera donanımını ve ardışık düzeni sıfırlar. giriş/çıkış akışları oluşturun. Önceki yayındaki canlı yayınlardan bazıları yeniden kullanılabilir yapılandırma. Çerçeve, daha sonra ilk yakalama isteğinden itibaren devam eder HAL'ye (en az bir kayıtlı çıkış akışı kalır. (Aksi takdirde, Öncelikle ICameraDeviceSession::configureStreams() gereklidir.)
  • Çerçeve, ICameraDeviceSession::close() çağırabilir kamera oturumunu sonlandırmayı deneyin. Bu numara, başka bir arama yapılmadığında herhangi bir zamanda etkin olsa da çağrı, tüm katılımcılara veya yayındaki yakalamalar tamamlandı (tüm sonuçlar döndürüldü, tüm arabellekler doldurulmuş) gösterilir. close() araması geri döndükten sonra şu numaraya arama yok: ICameraDeviceCallback için HAL'den kullanılmasına izin verilir. Bir close() çağrısı devam ediyor. Çerçeve başka bir çağrı çağıramaz HAL cihaz işlevleri.
  • Bir hata veya başka bir eşzamansız olay durumunda HAL, Uygun şekilde ICameraDeviceCallback::notify() hata/etkinlik mesajı gösterilir. Cihaz genelinde önemli bir hata bildiriminden döndüğünüzde HAL close() çağrılmış gibi davran. Ancak HAL, ya iptal veya notify() numaralı telefonu çağırmadan önce bekleyen tüm yakalamaları tamamlayın. Böylece bir kez notify() kritik bir hatayla çağrıldı. Çerçeve ve cihazdan başka geri çağırmalar yapabilir. Bunun yanı sıra, close() geri dönmelidir -notify() yöntemi önemli bir dosyadan döndürüldükten sonra ENODEV veya NULL mesajının gösterilmesini sağlar.
Kamera işlemleri akışı

4.Şekil Kamera çalışma akışı

Donanım seviyeleri

Kamera cihazları, kameralardaki donanımlara bağlı olarak özellikler. Daha fazla bilgi için bkz. desteklenen donanım düzeyinde geçerlidir.

Uygulama yakalama isteği, 3A kontrolü ve işleme ardışık düzeni arasındaki etkileşim

3A kontrol bloğundaki ayarlara bağlı olarak kamera ardışık düzeni uygulamanın yakalama isteğindeki bazı parametreler ve 3A kontrol rutinleri tarafından sağlanır. Örneğin, otomatik pozlama ve ekran görüntüsünün pozlama süresini, kare süresini ve sensör ve uygulama tarafından belirtilen değerler, platform 3A algoritması tarafından kontrol edilir yok sayılır. 3A rutinleri tarafından kare için seçilen değerler raporlanmalıdır çıkış meta verileri kullanabilir. Aşağıdaki tabloda 3A kontrol bloğu ve bu modlar tarafından kontrol edilen özellikler. Görüntüleyin platform/system/media/camera/docs/docs.html dosyalarını da incelemenizi öneririz.

Parametre Eyalet Kontrol edilen mülkler
android.control.aeMode KAPALI Yok
AÇIK android.sensor.exposureTime android.sensor.frameDuration android.sensor.sensitivity android.lens.aperture (destekleniyorsa) android.lens.filterDensity (destekleniyorsa)
ON_OTO_FLASH Her Şey AÇIK, ayrıca android.flash.firingPower, android.flash.firingTime ve android.flash.mode
HER ZAMAN_AÇIK_YANLIŞ ON_auto_FLASH ile aynı
ON_OTOMATİK_FLASH_KIRMIZI_EYE ON_auto_FLASH ile aynı
android.control.awbMode KAPALI Yok
BEYAZ BAKİYESİ* android.colorCorrection.Dönüştürme android.colorCorrection.mode FAST veya HIGH_QUALITY değerine ayarlanmışsa platforma özel ayarlamalar.
android.control.afMode KAPALI Yok
ODAK_MODU_* android.lens.focusUzaklığı
android.control.videoStabilization KAPALI Yok
AÇIK Video sabitlemeyi uygulamak için android.scaler.cropRegion ayarlanabilir
android.control.mode KAPALI AE, AWB ve AF devre dışıdır
OTOMATİK Bağımsız AE, AWB ve AF ayarları kullanılır
SAHNE_MOD_* Yukarıda listelenen tüm parametreleri geçersiz kılabilir. Bağımsız 3A denetimleri devre dışı bırakıldı.

Şekil 2'deki Resim İşleme bloğunda bulunan kontrollerin tümü bir geçerlidir ve genellikle her blokun üç modu vardır:

  • KAPALI: Bu işleme engellemesi devre dışıdır. Mozaik kaldırma, renk düzeltme ve ton eğrisi ayarlama blokları devre dışı bırakılamaz.
  • HIZLI: Bu modda, işleme bloğu çıkış çerçevesini yavaşlatamaz. en iyi kaliteyi sunar. bu kısıtlamaya tabi olabilir. Bu hedef genellikle önizleme veya video kayıt modları ya da sabit görüntüler için seri çekim. Bazı cihazlarda bu, KAPALI moduna eşdeğer olabilir (KAPATILMADIĞINDA yavaşlatır) ve bazı cihazlarda bu durum, HIGH_QUALITY modu (en iyi kalite yine de kare hızını yavaşlatmaz).
  • HIGH_QUALITY: Bu modda, işleme bloğunun en iyi Bu nedenle, gerektiğinde çıkış kare hızı yavaşlar. Genellikle bu, yüksek kaliteli görüntü yakalama için kullanılır. Bazı bloklar "Hızlı veya hızlı" yerine isteğe bağlı olarak seçilebilen bir manuel kontrol HIGH_QUALITY. Örneğin, renk düzeltme bloğu bir rengi destekler. ton eğrisi ayarı rastgele bir global değeri destekler. ton eşleme eğrisini kullanabilirsiniz.

Bir kamera alt sistemi tarafından desteklenebilen maksimum kare hızı birçok faktör vardır:

  • Çıkış resim akışları için istenen çözünürlükler
  • Görüntüleyicide bölme/atlama modlarının kullanılabilirliği
  • Görüntüleyici arayüzünün bant genişliği
  • Çeşitli İSS işleme bloklarının bant genişliği

Bu faktörler farklı İSS'ler ve sensörler arasında büyük ölçüde değişiklik gösterebileceğinden kamera HAL arayüzü, bant genişliği kısıtlamalarını soyutlamaya ve modeli sunmaktır. Sunulan model aşağıdaki özelliklere sahiptir:

  • Resim sensörü her zaman en düşük çözünürlüğü verecek şekilde yapılandırılır uygulamanın istenen çıkış akışı boyutlarına göre mümkün olur. En küçük çözünürlük, en az istenen en büyük çözünürlük kadar büyük olarak tanımlanır çıkış akışı boyutuyla ilgilidir.
  • Herhangi bir istek şu anda yapılandırılmış çıkış akışlarının herhangi birini veya tümünü kullanabileceğinden, Sensör ve İSS, tek bir yakalama görüntüsünün yayını aynı anda oynatabilirsiniz.
  • JPEG akışları, izin verilen istekler için işlenmiş YUV akışları gibi davranır. dahil değildir; doğrudan referans verilen taleplerde kullanıldığında JPEG akışları
  • JPEG işlemcisi, kamera ardışık düzeninin geri kalanıyla eş zamanlı olarak çalışabilir ancak yakalama işlenemez.