camera2_request_queue_src_ops Yapı Referansı
#include <
camera2.h
>
Veri Alanları |
|
int(* | request_count )(const struct camera2_request_queue_src_ops *q) |
int(* | dequeue_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
int(* | free_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
Ayrıntılı Açıklama
Giriş sırası protokolü isteğinde bulunun:
Çerçeve, sırayı ve içeriğini tutar. Başlangıçta sıra boştur.
- İlk meta veri arabelleği sıraya yerleştirildiğinde çerçeve, notify_request_queue_not_empty() işlevini çağırarak cihaza sinyal gönderir.
- notify_request_queue_not_empty aldıktan sonra cihaz, bir sonraki arabelleği işlemeye hazır olduğunda dequeue() işlevini çağırmalıdır.
- Cihaz bir arabelleği işledikten ve bir sonraki arabelleğe hazır olduktan sonra bildirim beklemek yerine dequeue() işlevini tekrar çağırmalıdır. Kullanılabilir başka arabelleğe sahip değilseniz 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() işlevini tekrar çağırması gerekir. Cihaz, dequeue işlevinden NULL döndürürse kaynaktan notify_request_queue_not_empty() çağrısı alınana kadar kuyruğu tekrar sorgulamasına gerek yoktur.
- Cihaz, buffer_count() işlevini çağırır ve 0 değerini alırsa bu, çerçevenin notify_request_queue_not_empty() çağrısı sağlayacağı anlamına gelmez. Çerçeve yalnızca cihaz, sırayı kaldırma işleminden NULL aldıktan sonra veya ilk başlatmada böyle bir bildirim sağlar.
- notify_request_queue_not_empty() çağrısına yanıt olarak gelen dequeue() çağrısı, notify_request_queue_not_empty() çağrısıyla aynı ileti dizisinde olabilir ve notify çağrısı içinden gerçekleştirilebilir.
- Hata oluştuğunda, cihazın temizlenmesi istendiğinde veya cihaz kapanırken denetleme listesinden çıkarılan tüm istek arabellekleri, free_request çağrısı yapılarak çerçeveye döndürülmelidir.
Alan Belgeleri
int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
Çerçeveden bir meta veri arabelleği alın. Hata yoksa OK değerini döndürür. Sıra boşsa arabellekte NULL döndürülür. Bu durumda cihaz, sırayı tekrar kaldırmayı denemeden önce notify_request_queue_not_empty() mesajını beklemelidir. Bu şekilde elde edilen arabellekler, free_request() ile çerçeveye döndürülmelidir.
int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
int(* request_count)(const struct camera2_request_queue_src_ops *q) |
Kuyruğa alınan istek arabelleklerinin sayısını alın. Şu anda tekrarlanan bir istek (akış isteği) yapılandırılmışsa CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS değerini döndürebilir. 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.
Tanımı, camera2.h dosyasının 228. satırı içindedir.
Bu yapının dokümanları aşağıdaki dosyadan oluşturulmuştur:
- hardware/libhardware/include/hardware/ camera2.h