camera3_callback_ops Yapı Referansı

camera3_callback_ops Yapı Referansı

#include < camera3.h >

Veri Alanları

void(*  process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *result)
 
void(*  notify )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)
 

Ayrıntılı Açıklama

Dosyanın camera3.h satırında 2397 tanımı.

Alan Belgeleri

void(* notify)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg)

bildir:

HAL'den çeşitli nedenlerle tetiklenen eşzamansız bildirim geri araması. Yalnızca kare yakalamadan bağımsız olan veya belirli bir zamanlama gerektiren bilgiler için. Mesaj yapısının sahipliği HAL'de kalır ve msg'nin yalnızca bu görüşme süresince geçerli olması gerekir.

Birden fazla iş parçacığı aynı anda notify() çağırabilir.

<= CAMERA_DEVICE_API_VERSION_3_1:

Belirli bir istek için pozlamanın başlangıcıyla ilgili bildirim, bu istek için process_capture_result() ilk çağrısı yapılmadan önce HAL tarafından gönderilmelidir.

>= CAMERA_DEVICE_API_VERSION_3_2:

Çerçeveye teslim edilen arabellekler, SHUTTER notify() çağrısı aracılığıyla pozlama başlangıcı zaman damgası (yeniden işleme isteği için giriş resminin pozlama başlangıcı zaman damgası) alınana kadar uygulama katmanına gönderilmez. Bu çağrının mümkün olduğunca erken gönderilmesi önemle tavsiye edilir.


Performans koşulları:

Bu, engelleyici olmayan bir çağrıdır. Çerçeve, bu aramayı 5 ms içinde döndürür.

Dosyanın camera3.h satırındaki 2499 tanımı.

void(* process_capture_result)(const struct camera3_callback_ops *, const camera3_capture_result_t *result)

process_capture_result:

Tamamlanan bir yakalamadan elde edilen sonuçları çerçeveye gönderin. process_capture_result() tek bir yakalama isteğine yanıt olarak HAL tarafından birden fazla kez çağrılabilir. Bu sayede, örneğin meta veriler ve düşük çözünürlüklü arabellekler tek bir çağrıda döndürülebilir. Kullanıma sunulduktan sonra ise daha sonraki bir çağrıda JPEG arabellekleri işlenebilir. Her çağrı, meta verileri veya arabellekleri döndürdüğü isteğin çerçeve numarasını içermelidir.

Tam sonucun bir bileşeni (arabellek veya meta veri) yalnızca bir process_capture_result çağrısına dahil edilebilir. Her akış için bir arabellek ve sonuç meta verileri, bazı çıkışların oluşturulmasıyla ilgili hatalar olsa bile, her istek için HAL tarafından process_capture_result çağrılarından birinde döndürülmelidir. Çıkış arabellekleri veya sonuç meta verileri olmadan process_capture_result() çağrısına izin verilmez.

Tek bir sonuç için meta verilerin ve arabelleklerin döndürülme sırası önemli değildir ancak belirli bir akışın arabellekleri FIFO sırasına göre döndürülmelidir. Bu nedenle, A akışındaki 5. isteğin arabelleği, A akışındaki 6. isteğin arabelleğinden önce döndürülmelidir. Bu durum, sonuç meta verileri için de geçerlidir. 5. isteğin meta verileri, 6. isteğin meta verilerinden önce döndürülmelidir.

Ancak farklı akışlar birbirinden bağımsızdır. Bu nedenle, A akışındaki 5. istek için arabellek, B akışındaki 6. istek için arabellekten sonra döndürülebilir. Ayrıca, B akışındaki 6. istek için sonuç meta verileri, A akışındaki 5. istek için arabellekten önce döndürülebilir.

HAL, sonuç yapısının sahipliğini korur. Bu yapıya yalnızca bu görüşme sırasında erişmek için geçerli olması gerekir. Çerçeve, bu çağrı döndürülmeden önce gereken her şeyi kopyalar.

Çıkış arabelleklerinin henüz doldurulması gerekmez. Çerçeve, arabellek verilerini okumadan önce akış arabelleği yayınlama senkronizasyon çitinin yayınlanmasını bekler. Bu nedenle, çıkış arabelleklerinin bir kısmı veya tamamı henüz doldurulmamış olsa bile bu yöntem, HAL tarafından mümkün olan en kısa sürede çağrılmalıdır. HAL, her output_buffers akış arabelleği girişine geçerli yayın senkronizasyonu bariyerleri eklemelidir. Akış arabelleği zaten doluysa -1 eklenmelidir.

Bir istek için sonuç arabelleği oluşturulamıyorsa HAL, boş bir meta veri arabelleği döndürmeli ancak çıkış arabelleklerini ve bunların senkronizasyon çitlerini sağlamaya devam etmelidir. Ayrıca, notify() bir ERROR_RESULT mesajıyla çağrılmalıdır.

Bir çıkış arabelleği doldurulamıyorsa durum alanı STATUS_ERROR olarak ayarlanmalıdır. Ayrıca, notify() bir ERROR_BUFFER mesajıyla çağrılmalıdır.

Tüm yakalama işlemi başarısız olduysa çıkış arabelleklerini çerçeveye döndürmek için bu yöntemin yine de çağrılması gerekir. Tüm arabellek durumları STATUS_ERROR olmalı ve sonuç meta verileri boş bir arabellek olmalıdır. Ayrıca, notify() ERROR_REQUEST mesajıyla çağrılmalıdır. Bu durumda, ayrı ERROR_RESULT/ERROR_BUFFER mesajları gönderilmemelidir.

Performans koşulları:

Bu, engelleyici olmayan bir çağrıdır. Çerçeve, bu aramayı 5 ms içinde döndürür.

İşlem hattı gecikmesi (tanım için S7'ye bakın) 4 kare aralığından küçük veya bu aralığa eşit olmalı ve 8 kare aralığından küçük veya bu aralığa eşit olmalıdır.

Dosyanın 2466 satırındaki camera3.h tanımı.


Bu yapı için doküman, aşağıdaki dosyadan oluşturuldu: