Camera3_capture_result Yapı Referansı

Camera3_capture_result Yapı Referansı

#include < camera3.h >

Veri alanları

uint32_t çerçeve numarası
const kamera_metadata_t * sonuç
uint32_t num_output_buffers
const kamera3_stream_buffer_t * çıktı_tamponları
const kamera3_stream_buffer_t * giriş_tamponu
uint32_t kısmi_sonuç

Detaylı Açıklama

kamera3_capture_result_t:

Kamera HAL cihazı tarafından yapılan tek bir yakalama/yeniden işlemenin sonucu. Bu, HAL'ye proses_capture_request() ile gönderilen tek bir yakalama isteğine yanıt olarak, süreç_capture_result() ile eşzamansız olarak çerçeveye gönderilir. Her istek için HAL tarafından birden fazla proses_capture_result() çağrısı gerçekleştirilebilir.

Hepsi aynı çerçeve numarasına sahip olan her çağrı, çıktı arabelleklerinin bazı alt kümelerini ve/veya sonuç meta verilerini içerebilir. Meta veriler belirli bir çerçeve numarası için yalnızca bir kez sağlanabilir; diğer tüm çağrıların sonuç meta verilerini NULL olarak ayarlaması gerekir.

Sonuç yapısı, bu yakalamanın çıktı meta verilerini ve bu yakalama için doldurulmuş/doldurulacak çıktı arabellekleri kümesini içerir. Her çıktı arabelleği, arabelleğin henüz HAL tarafından doldurulmamış olması durumunda çerçevenin okumadan önce bekleyeceği bir serbest bırakma senkronizasyon çitiyle birlikte gelebilir.

>= CAMERA_DEVICE_API_VERSION_3_2:

Meta veriler, tek bir çerçeve numarası için birden çok kez sağlanabilir. Çerçeve, her kısmi sonucu toplam sonuç kümesinde birleştirerek nihai sonuç kümesini bir araya toplayacaktır.

Bir istekte bir giriş arabelleği verilirse, HAL'in bunu proses_capture_result çağrılarından birinde döndürmesi gerekir ve çağrı, meta veriler ve çıktı arabellekleri olmadan yalnızca giriş arabelleğini döndürmek için olabilir; senkronizasyon çitleri, çıkış arabellekleri için yapıldığı gibi ele alınmalıdır.

Performans hususları:

Uygulamalar da bu kısmi sonuçları hemen alacaktır; bu nedenle, işlem hattında çok erken bilinen sonuçları göndermeden önce toplam işlem hattı gecikmesini önlemek için kısmi sonuçların gönderilmesi şiddetle tavsiye edilen bir performans optimizasyonudur.

Tipik bir kullanım durumu, işlem hattının yarısında AF durumunun hesaplanması olabilir; Durumu derhal çerçeveye geri göndererek, %50'lik bir performans artışı ve otomatik odaklamanın algılanan duyarlılığını elde ediyoruz.

Camera3.h dosyasının 2251. satırındaki tanım.

Saha Dokümantasyonu

uint32_t çerçeve_numarası

Çerçeve numarası, bu yakalamayı benzersiz şekilde tanımlamak için gönderilen istekte çerçeve tarafından belirlenen artan bir tam sayıdır. Ayrıca , Camera3_callback_ops_t.notify()' a gönderilen eşzamansız bildirimlerdeki isteği tanımlamak için de kullanılır.

Camera3.h dosyasının 2258. satırındaki tanım.

const kamera3_stream_buffer_t * input_buffer

>= CAMERA_DEVICE_API_VERSION_3_2:

Bu yakalamaya yönelik giriş akışı arabelleğinin tanıtıcısı. HAL'in proses_capture_result(); çağrısını yaptığı sırada henüz tüketilmemiş olabilir; çerçeve, arabelleği yeniden kullanmadan önce HAL tarafından sağlanan sürüm senkronizasyon çitlerini bekleyecektir.

HAL, senkronizasyon çitlerini, çıktı_tamponları için yapıldığı gibi ele almalıdır.

İstek başına yalnızca bir giriş arabelleğinin gönderilmesine izin verilir. Çıkış arabelleklerine benzer şekilde, döndürülen giriş arabelleklerinin sırası da HAL tarafından korunmalıdır.

Performans hususları:

Giriş arabelleği mümkün olduğu kadar erken döndürülmelidir. HAL, senkronizasyon çitlerini destekliyorsa, senkronizasyon çitleri uygun şekilde ayarlanmış şekilde onu geri vermek için proses_capture_result öğesini çağırabilir. Senkronizasyon çitleri desteklenmiyorsa arabellek yalnızca tüketildiğinde geri döndürülebilir; bu da uzun zaman alabilir; HAL, arabelleğin daha erken geri dönmesini sağlamak için bu giriş arabelleğini kopyalamayı seçebilir.

Camera3.h dosyasının 2361. satırındaki tanım.

uint32_t num_output_buffers

Bu sonuç yapısında döndürülen çıktı arabelleklerinin sayısı. Eşleşen yakalama isteğinin sayısından az veya ona eşit olmalıdır. Bu, yakalama isteğindeki arabellek sayısından azsa, kalan çıktı arabelleklerini çerçeveye döndürmek için aynı çerçeve_numarası ile proses_capture_result'a en az bir çağrı daha yapılmalıdır. Bu yalnızca yapının geçerli sonuç meta verilerini içermesi veya bu sonuçta bir giriş arabelleği döndürülmesi durumunda sıfır olabilir.

Camera3.h dosyasının 2296. satırındaki tanım.

const kamera3_stream_buffer_t * çıktı_bufferları

Bu yakalamaya yönelik çıkış akışı arabelleklerinin tutamaçları. HAL'in proses_capture_result(); işlevini çağırdığı sırada henüz doldurulmamış olabilirler. çerçeve, arabellekleri okumadan önce HAL tarafından sağlanan sürüm senkronizasyon çitlerini bekleyecektir.

HAL, akış arabelleğinin serbest bırakma senkronizasyon sınırını geçerli bir senkronizasyon fd'sine veya arabellek zaten doldurulmuşsa -1'e ayarlamalıdır.

HAL arabelleği işlerken bir hatayla karşılaşırsa ve arabellek doldurulmazsa arabelleğin durum alanı CAMERA3_BUFFER_STATUS_ERROR olarak ayarlanmalıdır. HAL, hatayla karşılaşmadan önce edinme çitinde beklemediyse, çerçevenin arabelleği yeniden kullanmadan önce çit üzerinde beklemesine izin vermek için edinme çitinin serbest bırakma çitine kopyalanması gerekir.

Alma çiti tüm çıkış arabellekleri için -1'e ayarlanmalıdır. Num_output_buffers sıfırsa bu NULL olabilir. Bu durumda, çıkış arabelleklerini sağlamak için HAL tarafından en az bir proses_capture_result çağrısının daha yapılması gerekir.

Process_capture_result, bir çerçeve için yeni bir arabellek ile çağrıldığında, ilgili akış için önceki tüm çerçevelerin arabelleklerinin zaten teslim edilmiş olması gerekir (çitler henüz sinyallenmemiş olmalıdır).

>= CAMERA_DEVICE_API_VERSION_3_2:

Bir çerçeve için Gralloc arabellekleri, karşılık gelen SHUTTER bildiriminden önce çerçeveye gönderilebilir.

Performans hususları:

Çerçeveye teslim edilen arabellekler, SHUTTER notify() çağrısı yoluyla bir maruz kalma zaman damgası başlangıcı alınana kadar uygulama katmanına gönderilmeyecektir. Bu çağrıyı mümkün olduğu kadar erken göndermeniz önemle tavsiye edilir.

Camera3.h dosyasının 2335. satırındaki tanım.

uint32_t kısmi_sonuç

>= CAMERA_DEVICE_API_VERSION_3_2:

Kısmi sonuçlardan yararlanmak için HAL'in, android.request.partialResultCount statik meta verisini her kare için göndereceği kısmi sonuç sayısına ayarlaması gerekir.

Kısmi sonuç içeren her yeni yakalama sonucu, bu alanı (partial_result), 1 ile android.request.partialResultCount arasında farklı bir kapsayıcı değere ayarlamalıdır.

Bu özellikten yararlanmak istemeyen HAL'ler, android.request.partialResultCount veyapartial_result değerini 1 dışında bir değere ayarlamamalıdır.

Bir yakalama sonucu yalnızca arabellekler içerdiğinde ve meta veri içermediğinde bu değer 0 olarak ayarlanmalıdır.

Camera3.h dosyasının 2381. satırındaki tanım.

const kamera_metadata_t * sonuç

Bu yakalamanın sonuç meta verileri. Bu, son yakalama parametreleri, yakalama ve işlem sonrası donanımın durumu, eğer etkinleştirilmişse 3A algoritmalarının durumu ve etkinleştirilmiş istatistik birimlerinin çıktısı hakkındaki bilgileri içerir.

Belirli bir çerçeve_numarası ile yalnızca bir proses_capture_result() çağrısı, sonuç meta verilerini içerebilir. Aynı çerçeve_numarası için yapılan tüm diğer çağrılar bunu NULL olarak ayarlamalıdır.

Sonuç meta verilerini üretirken bir hata oluştuysa, sonuç boş bir meta veri arabelleği olmalı ve notify() işlevi ERROR_RESULT ile çağrılmalıdır.

>= CAMERA_DEVICE_API_VERSION_3_2:

Belirli bir çerçeve_numarası ile birden fazla proses_capture_result() çağrısı, sonuç meta verilerini içerebilir.

Gönderilen kısmi meta veriler, belirli bir çerçeve için önceki kısmi sonuçta döndürülen herhangi bir meta veri anahtarını içermemelidir. Bu çerçeveye ilişkin her yeni kısmi sonuç ayrıca ayrı bir kısmi_sonuç değeri ayarlamalıdır.

Notify, ERROR_RESULT ile çağrılmışsa, o çerçeveye ilişkin diğer tüm kısmi sonuçlar çerçeve tarafından göz ardı edilir.

Camera3.h dosyasının 2285. satırındaki tanım.


Bu yapıya ilişkin belgeler aşağıdaki dosyadan oluşturulmuştur:
  • donanım/libdonanım/include/donanım/ kamera3.h