Camera2_request_queue_src_ops Yapı Referansı

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.

  1. İ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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.

Camera2.h dosyasının 220. satırındaki tanım.

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.

Camera2.h dosyasının 237. satırındaki tanım.

int(* free_request)(const struct kamera2_request_queue_src_ops *q, kamera_metadata_t *eski_buffer)

Kullanıldıktan sonra veya bir hata ya da kapanma meydana geldiğinde meta veri arabelleğini çerçeveye döndürün.

Camera2.h dosyasının 243. satırındaki tanım.

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.

Camera2.h dosyasının 228. 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/ kamera2.h