camera2_request_queue_src_ops סימוכין למבנה
camera2_request_queue_src_ops סימוכין למבנה
#include < camera2.h >
שדות נתונים | |
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) |
תיאור מפורט
בקשת פרוטוקול תור קלט:
המסגרת מחזיקה את התור ואת תוכנו. בהתחלה, התור ריק.
- כאשר מאגר המטא נתונים הראשון ממוקם בתור, המסגרת מאותתת למכשיר על ידי קריאה ל-notify_request_queue_not_empty().
- לאחר קבלת notify_request_queue_not_empty, המכשיר חייב לקרוא ל-dequeue() ברגע שהוא מוכן לטפל במאגר הבא.
- לאחר שהמכשיר עיבד מאגר, והוא מוכן למאגר הבא, עליו לקרוא שוב ל-dequeue() במקום לחכות להתראה. אם אין עוד מאגרים זמינים, dequeue() יחזיר NULL. לאחר נקודה זו, כאשר מאגר זמין, המסגרת חייבת לקרוא שוב ל-notify_request_queue_not_empty(). אם המכשיר מקבל החזרת NULL מ-dequeue, הוא לא צריך לבצע שאילתה שוב על התור עד שתתקבל קריאה notify_request_queue_not_empty() מהמקור.
- אם המכשיר קורא buffer_count() ומקבל 0, אין זה אומר שהמסגרת תספק קריאה notify_request_queue_not_empty() . המסגרת תספק הודעה כזו רק לאחר שהמכשיר יקבל NULL מ-dequeue, או בהפעלה ראשונית.
- הקריאה dequeue() בתגובה ל-notify_request_queue_not_empty() עשויה להיות באותו שרשור כמו הקריאה notify_request_queue_not_empty(), וניתן לבצע אותה מתוך קריאת ה-notify.
- יש להחזיר את כל מאגרי הבקשות שהותרו למסגרת על ידי קריאה ל-free_request, כולל כאשר מתרחשות שגיאות, מתבקשת שטיפת מכשיר או כאשר המכשיר נכבה.
תיעוד שטח
int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
קבל מאגר מטא נתונים מהמסגרת. מחזיר אישור אם אין שגיאה. אם התור ריק, מחזירה NULL במאגר. במקרה זה, ההתקן חייב להמתין להודעת notify_request_queue_not_empty() לפני ניסיון לעמוד בתור שוב. יש להחזיר מאגרים שהושגו בדרך זו למסגרת עם free_request() .
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) |
התיעוד עבור מבנה זה נוצר מהקובץ הבא:
- hardware/libhardware/include/hardware/ camera2.h