Camera2_request_queue_src_ops Yapı Referansı
#include < camera2.h >
Veri alanları | |
int(* | request_count )(const struct kamera2_request_queue_src_ops *q) |
int(* | dequeue_request )(const struct kamera2_request_queue_src_ops *q, kamera_metadata_t **tampon) |
int(* | free_request )(const struct kamera2_request_queue_src_ops *q, kamera_metadata_t *eski_buffer) |
Detaylı Açıklama
Giriş kuyruğu protokolünü isteyin:
Çerçeve kuyruğu ve içeriğini tutar. Başlangıçta sıra boştur.
- İlk meta veri arabelleği kuyruğa yerleştirildiğinde çerçeve, notify_request_queue_not_empty() öğesini çağırarak aygıta sinyal gönderir.
- notify_request_queue_not_empty'yi aldıktan sonra, cihazın bir sonraki arabelleği işlemeye hazır olduğunda dequeue() öğesini çağırması gerekir.
- Cihaz bir arabelleği işledikten ve bir sonraki arabelleğe hazır hale geldikten sonra, bildirim beklemek yerine dequeue() işlevini yeniden çağırmalıdır. Daha fazla kullanılabilir arabellek yoksa, dequeue() işlevi NULL değerini döndürür. Bu noktadan sonra, bir arabellek kullanılabilir hale geldiğinde çerçevenin notify_request_queue_not_empty()'yi tekrar çağırması gerekir. Cihaz, kuyruktan çıkarmadan bir NULL dönüşü alırsa, kaynaktan bir notify_request_queue_not_empty() çağrısı alınana kadar kuyruğu yeniden sorgulamasına gerek yoktur.
- Cihaz buffer_count()'u çağırır ve 0 alırsa bu, çerçevenin notify_request_queue_not_empty() çağrısı sağlayacağı anlamına gelmez. Çerçeve böyle bir bildirimi yalnızca cihaz kuyruktan NULL aldıktan sonra veya ilk başlatma sırasında sağlayacaktır.
- notify_request_queue_not_empty()'ye yanıt olarak yapılan dequeue() çağrısı, notify_request_queue_not_empty() çağrısıyla aynı iş parçacığında olabilir ve notify çağrısının içinden gerçekleştirilebilir.
- Hataların oluşması, cihazın temizlenmesinin istenmesi veya cihazın kapatılması da dahil olmak üzere, sıraya alınmış tüm istek arabellekleri free_request çağrılarak çerçeveye döndürülmelidir.
Saha Dokümantasyonu
int(* dequeue_request)(const struct kamera2_request_queue_src_ops *q, kamera_metadata_t **tampon) |
Çerçeveden bir meta veri arabelleği alın. Herhangi bir hata yoksa Tamam değerini döndürür. Kuyruk boşsa arabellekte NULL değerini döndürür. Bu durumda cihazın tekrar kuyruktan çıkarma girişiminde bulunmadan önce notify_request_queue_not_empty() mesajını beklemesi gerekir. Bu şekilde elde edilen tamponların free_request() ile çerçeveye döndürülmesi gerekir.
int(* free_request)(const struct kamera2_request_queue_src_ops *q, kamera_metadata_t *eski_buffer) |
int(* request_count)(const struct kamera2_request_queue_src_ops *q) |
Kuyrukta bekleyen istek arabelleklerinin sayısını alın. Halihazırda yinelenen bir istek (akış isteği) yapılandırılmışsa CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS döndürülebilir. Bu yöntemin çağrılmasının, notify_request_queue_not_empty() yönteminin çerçeve tarafından çağrılıp çağrılmayacağı üzerinde hiçbir etkisi yoktur.
Bu yapıya ilişkin belgeler aşağıdaki dosyadan oluşturulmuştur:
- donanım/libdonanım/include/donanım/ kamera2.h