Camera3_callback_ops Yapı Referansı
#include < camera3.h >
Veri alanları | |
geçersiz(* | proses_capture_result )(const struct kamera3_callback_ops *, const kamera3_capture_result_t *sonuç) |
geçersiz(* | bildir )(const struct kamera3_callback_ops *, const kamera3_notify_msg_t *msg) |
Detaylı Açıklama
Saha Dokümantasyonu
void(* notify)(const struct kamera3_callback_ops *, const kamera3_notify_msg_t *msg) |
bildir:
HAL'den eş zamanlı olmayan bildirim geri araması, çeşitli nedenlerle tetiklendi. Yalnızca çerçeve yakalamadan bağımsız veya belirli zamanlama gerektiren bilgiler için. Mesaj yapısının mülkiyeti HAL'de kalır ve mesajın yalnızca bu çağrı süresince geçerli olması gerekir.
Birden fazla iş parçacığı aynı anda notify() öğesini çağırabilir.
<= CAMERA_DEVICE_API_VERSION_3_1:
Belirli bir talebe yönelik teşhir başlangıcına ilişkin bildirim, bu talebe ilişkin proses_capture_result() işlevine ilk çağrı yapılmadan önce HAL tarafından gönderilmelidir.
>= CAMERA_DEVICE_API_VERSION_3_2:
Çerçeveye teslim edilen arabellekler, bir SHUTTER notify() çağrısı yoluyla bir pozlama zaman damgası başlangıcı (veya bir yeniden işleme isteği için giriş görüntüsünün pozlama 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.
Performans gereklilikleri:
Bu, engellenmeyen bir çağrıdır. Çerçeve bu çağrıyı 5 ms içinde döndürecektir.
void(* proses_capture_result)(const struct kamera3_callback_ops *, const kamera3_capture_result_t *sonuç) |
proses_capture_result:
Tamamlanan bir yakalamanın sonuçlarını çerçeveye gönderin. Process_capture_result() tek bir yakalama isteğine yanıt olarak HAL tarafından birden çok kez çağrılabilir. Bu, örneğin, meta veriler ve düşük çözünürlüklü arabelleklerin bir çağrıda döndürülmesine ve sonradan işlenmiş JPEG arabelleklerinin kullanılabilir olduğunda daha sonraki bir çağrıda döndürülmesine olanak tanır. Her çağrı, meta verileri veya arabellekleri döndürdüğü isteğin çerçeve numarasını içermelidir.
Tam sonucun bir bileşeni (tampon veya meta veri) yalnızca bir proses_capture_result çağrısına dahil edilebilir. Çıktının bir kısmını üreten hatalar durumunda bile, proses_capture_result çağrılarından birindeki her istek için HAL tarafından her akış için bir arabellek ve sonuç meta verileri döndürülmelidir. Çıkış arabellekleri veya sonuç meta verileri olmadan proses_capture_result() çağrısına izin verilmez.
Tek bir sonuç için meta verileri ve arabellekleri döndürme sırası önemli değildir, ancak belirli bir akışa ilişkin arabelleklerin FIFO sırasına göre döndürülmesi gerekir. Bu nedenle, A akışı için istek 5'in arabelleği her zaman A akışı için istek 6'nın arabelleğinden önce döndürülmelidir. Bu aynı zamanda sonuç meta verileri için de geçerlidir; istek 5'in meta verileri, istek 6'nın meta verilerinden önce döndürülmelidir.
Bununla birlikte, farklı akışlar birbirinden bağımsızdır, dolayısıyla A akışına yönelik istek 5'e yönelik arabelleğin, B akışına yönelik istek 6'ya yönelik ara bellekten sonra döndürülebilmesi kabul edilebilir ve beklenen bir durumdur. Ve akış B'ye yönelik istek 6'ya ilişkin sonuç meta verilerinin, akış A'ya ilişkin istek 5'e yönelik ara bellekten önce döndürülmesi kabul edilebilir.
HAL, yalnızca bu çağrı sırasında erişim için geçerli olması gereken sonuç yapısının sahipliğini korur. Bu çağrı geri dönmeden önce çerçeve ihtiyaç duyduğu her şeyi kopyalayacaktır.
Çıkış arabelleklerinin henüz doldurulmasına gerek yoktur; çerçeve, arabellek verilerini okumadan önce akış arabelleği serbest bırakma senkronizasyon çitinde bekleyecektir. Bu nedenle, çıkış arabelleklerinin bir kısmı veya tamamı hala dolu olsa bile bu yöntemin HAL tarafından mümkün olan en kısa sürede çağrılması gerekir. HAL, her çıktı_buffer akış arabelleği girişine geçerli sürüm senkronizasyon çitleri veya akış arabelleği zaten doldurulmuşsa -1 içermelidir.
Bir istek için sonuç arabelleği oluşturulamıyorsa, HAL boş bir meta veri arabelleği döndürmeli ancak yine de çıktı arabelleklerini ve bunların senkronizasyon çerçevelerini sağlamalıdır. Ayrıca notify()'ın bir ERROR_RESULT mesajıyla çağrılması gerekir.
Çıkış arabelleği doldurulamıyorsa durum alanı STATUS_ERROR olarak ayarlanmalıdır. Ayrıca notify()'ın bir ERROR_BUFFER mesajıyla çağrılması gerekir.
Yakalamanın tamamı başarısız olursa, çıktı arabelleklerini çerçeveye döndürmek için bu yöntemin yine de çağrılması gerekir. Tüm arabellek durumları STATUS_ERROR olmalıdır ve sonuç meta verileri boş bir arabellek olmalıdır. Ayrıca notify()'ın bir ERROR_REQUEST mesajıyla çağrılması gerekir. Bu durumda bireysel ERROR_RESULT/ERROR_BUFFER mesajları gönderilmemelidir.
Performans gereklilikleri:
Bu, engellenmeyen bir çağrıdır. Çerçeve bu çağrıyı 5 ms içinde döndürecektir.
Ardışık düzen gecikmesi (tanım için S7'ye bakın) 4 kare aralığından az veya ona eşit olmalı ve 8 kare aralığından az veya buna eşit olmalıdır.
Bu yapıya ilişkin belgeler aşağıdaki dosyadan oluşturulmuştur:
- donanım/libdonanım/include/donanım/ kamera3.h