camera3_capture_result Yapı Referansı

camera3_capture_result Yapı Referansı

#include < camera3.h >

Veri Alanları

uint32_t  frame_number
 
const camera_metadata_t sonuç
 
uint32_t  num_output_buffers
 
const camera3_stream_buffer_t output_buffers
 
const camera3_stream_buffer_t input_buffer
 
uint32_t  partial_result
 

Ayrıntılı Açıklama

camera3_capture_result_t:

Kamera HAL cihazı tarafından tek bir yakalama/yeniden işleme işleminin sonucu. Bu, process_capture_request() ile HAL'e gönderilen tek bir yakalama isteğine yanıt olarak process_capture_result() ile çerçeveye ayarsız olarak gönderilir. HAL, her istek için birden fazla process_capture_result() çağrısı gerçekleştirebilir.

Hepsi aynı çerçeve numarasına sahip olan her çağrı, çıkış arabelleklerinin bir alt kümesini ve/veya sonuç meta verilerini içerebilir. Meta veriler, belirli bir kare numarası için yalnızca bir kez sağlanabilir. Diğer tüm çağrılarda sonuç meta verileri NULL olarak ayarlanmalıdır.

Sonuç yapısı, bu yakalamadan elde edilen çıkış meta verilerini ve bu yakalama için doldurulmuş/doldurulacak çıkış arabelleklerinin kümesini içerir. Her çıkış arabelleğinin, arabellek HAL tarafından henüz doldurulmamışsa çerçevenin okumadan önce bekleyeceği bir yayın senkronizasyon çiti olabilir.

>= CAMERA_DEVICE_API_VERSION_3_2:

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

Bir istekte giriş arabelleği verilirse HAL, bunu process_capture_result çağrılarından birinde döndürmelidir. Bu çağrı, meta veriler ve çıkış arabellekleri olmadan yalnızca giriş arabelleğini döndürmek için olabilir. Senkronizasyon çitleri, çıkış arabellekleri için olduğu gibi ele alınmalıdır.

Performansla ilgili dikkat edilmesi gereken noktalar:

Uygulamalar da bu kısmi sonuçları hemen alır. Bu nedenle, ardışık düzenin çok erken aşamalarında bilinen sonuçlar gönderilmeden önce toplam ardışık düzen gecikmesini önlemek için kısmi sonuçlar göndermek son derece önerilen bir performans optimizasyonudur.

Tipik bir kullanım alanı, ardışık düzenin ortasında AF durumunu hesaplamaktır. Durumu hemen çerçeveye geri göndererek% 50 performans artışı ve otomatik odaklama için algılanan duyarlılık elde ederiz.

Tanımı, camera3.h dosyasının 2251 satırı

Alan Belgeleri

uint32_t frame_number

Çerçeve numarası, bu yakalamayı benzersiz şekilde tanımlamak için çerçeve tarafından gönderilen istekte ayarlanan artan bir tam sayıdır. Ayrıca, camera3_callback_ops_t.notify() adresine gönderilen asenkron bildirimlerde isteği tanımlamak için de kullanılır.

Tanımı, camera3.h dosyasının 2258 satırı

const camera3_stream_buffer_t * input_buffer

>= CAMERA_DEVICE_API_VERSION_3_2:

Bu yakalama için giriş akışı arabelleğinin tutamaç. HAL, process_capture_result() işlevini çağırdığında henüz tüketilmeyebilir. Çerçeve, arabelleği yeniden kullanmadan önce HAL tarafından sağlanan serbest bırakma senkronizasyon çitlerini bekler.

HAL, senkronizasyon çitlerini output_buffers için yapıldığı şekilde işlemelidir.

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

Performansla ilgili dikkat edilmesi gereken noktalar:

Giriş arabelleği mümkün olduğunca erken döndürülmelidir. HAL, senkronizasyon çitlerini destekliyorsa process_capture_result işlevini çağırarak senkronizasyon çitleri uygun şekilde ayarlanmış şekilde geri verebilir. Senkronizasyon çitleri desteklenmiyorsa arabellek yalnızca tüketildiğinde döndürülebilir. Bu işlem uzun sürebilir. HAL, arabelleğin daha hızlı döndürülmesi için bu giriş arabelleğini kopyalayabilmeyi seçebilir.

Tanımı, camera3.h dosyasının 2361. satırı içindedir.

uint32_t num_output_buffers

Bu sonuç yapısında döndürülen çıkış arabelleklerinin sayısı. Eşleşen yakalama isteğinin sayısından az veya eşit olmalıdır. Bu değer, yakalama isteklerindeki arabellek sayısından azsa kalan çıkış arabelleklerini çerçeveye döndürmek için process_capture_result işlevine aynı frame_number ile en az bir kez daha çağrı yapılmalıdır. Bu değer yalnızca yapı geçerli sonuç meta verileri içeriyorsa veya bu sonuçta bir giriş arabelleği döndürülmüşse sıfır olabilir.

Tanım, camera3.h dosyasının 2296 satırı

const camera3_stream_buffer_t * output_buffers

Bu yakalama için çıkış akışı arabelleklerinin sapları. HAL, process_capture_result() işlevini çağırdığında bu alanlar henüz doldurulmamış olabilir. Çerçeve, arabellekleri okumadan önce HAL tarafından sağlanan yayın senkronizasyon çitlerini bekler.

HAL, akış arabelleğinin yayın senkronizasyon çitini geçerli bir senkronizasyon fd'sine veya arabellek zaten doldurulmuşsa -1 değerine 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 çitte beklemesine izin vermek için edinme çiti, serbest bırakma çitine kopyalanmalıdır.

Edinme çiti, tüm çıkış arabellekleri için -1 olarak ayarlanmalıdır. num_output_buffers sıfır ise bu değer NULL olabilir. Bu durumda, çıkış arabelleklerini sağlamak için HAL tarafından en az bir tane daha process_capture_result çağrısı yapılmalıdır.

process_capture_result, bir kare için yeni bir arabellekle çağrıldığında, ilgili akışa ait önceki tüm karelerin arabellekleri önceden yayınlanmış olmalıdır (çitler henüz sinyallenmiş olmamalıdır).

>= CAMERA_DEVICE_API_VERSION_3_2:

Bir kare için Gralloc arabellekleri, ilgili SHUTTER-notify çağrısından önce çerçeveye gönderilebilir.

Performansla ilgili dikkat edilmesi gereken noktalar:

Çerçeveye iletilen arabellekler, SHUTTER notify() çağrısı aracılığıyla bir pozlama başlangıcı zaman damgası alınana kadar uygulama katmanına gönderilmez. Bu aramayı en kısa sürede göndermeniz önemle tavsiye edilir.

Tanımı, şu dosyanın 2335 satırındadır: camera3.h .

uint32_t partial_result

>= CAMERA_DEVICE_API_VERSION_3_2:

Kısmi sonuçlardan yararlanmak için HAL'in statik meta veri android.request.partialResultCount'ı her kare için göndereceği kısmi sonuç sayısına ayarlamalıdır.

Kısmi sonucu olan her yeni yakalama sonucu, bu alanı (partial_result) 1 ile android.request.partialResultCount arasında farklı bir dahili değere ayarlamalıdır.

Bu özellikten yararlanmak istemeyen HAL'ler, android.request.partialResultCount veya partial_result parametresini 1 dışında bir değere ayarlamalıdır.

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

Tanımı, camera3.h dosyasının 2381 satırı

const camera_metadata_t * result

Bu yakalamanın sonuç meta verileri. Nihai yakalama parametreleri, yakalama ve son işleme donanımının durumu, etkinse 3A algoritmalarının durumu ve etkinleştirilen istatistik birimlerinin çıkışı hakkında bilgi içerir.

Sonuç meta verilerini yalnızca belirli bir frame_number ile process_capture_result() çağrısı içerebilir. Aynı frame_number için yapılan diğer tüm çağrılar bunu NULL olarak ayarlamalıdır.

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

>= CAMERA_DEVICE_API_VERSION_3_2:

Belirli bir frame_number ile process_capture_result() işlevinin birden fazla kez çağrılması, sonuç meta verilerini içerebilir.

Gönderilen kısmi meta veriler, belirli bir kare için önceki bir kısmi sonuçta döndürülen meta veri anahtarlarını içermemelidir. Söz konusu çerçeve için her yeni kısmi sonuçta da farklı bir partial_result değeri ayarlanmalıdır.

notify, ERROR_RESULT ile çağrılırsa söz konusu çerçeveyle ilgili diğer tüm kısmi sonuçlar çerçeve tarafından yoksayılır.

Tanımı, camera3.h dosyasının 2285 satırı


Bu yapının dokümanları aşağıdaki dosyadan oluşturulmuştur: