İ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.
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.
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.
- Kamera cihazlarını dinleme ve numaralandırma.
- Cihazı açın ve dinleyicileri bağlayın.
- Hedef kullanım alanı (ör. fotoğraf çekme, kaydetme, kaydetme, vb.) bakın.
- Hedef kullanım alanı için istek oluşturun.
- İstekleri ve seri çekimleri yakalayın/tekrarlayın.
- Sonuç meta verilerini ve resim verilerini alın.
- 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.
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
- 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. - Çerçeve, kamera cihazlarını
ICameraProvider::getCameraIdList()
- Çerçeve, ilgili öğeyi çağırarak yeni bir
ICameraDevice
örneği oluştururICameraProvider::getCameraDeviceInterface_VX_X()
. - Çerçeve, yeni bir öğe oluşturmak için
ICameraDevice::open()
komutunu çağırır etkin yakalama oturumu IKameraDeviceSession.
Etkin bir kamera oturumu kullan
- Çerçeve,
ICameraDeviceSession::configureStreams()
çağrısını yapar HAL cihazına giriş/çıkış akışlarının bir listesini içerir. - Ç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
. - Ç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. - Ç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. - İ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çinprocessCaptureResult()
çağrısı var, ancak sonuç yok sonrasına kadar yakalama için uygulamaya teslim edilir. Bu yakalama içinnotify()
çağrılır. - 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, ÖncelikleICameraDeviceSession::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. Birclose()
ç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 HALclose()
çağrılmış gibi davran. Ancak HAL, ya iptal veyanotify()
numaralı telefonu çağırmadan önce bekleyen tüm yakalamaları tamamlayın. Böylece bir keznotify()
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.
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.