עזרה בנושא המבנה 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)
 

תיאור מפורט

פרוטוקול של תור בקשות קלט:

המסגרת מכילה את התור ואת התוכן שלו. בהתחלה, התור ריק.

  1. כשמאגר המטא-נתונים הראשון מועבר לתור, המסגרת שולחת אות למכשיר באמצעות קריאה ל-notify_request_queue_not_empty().
  2. אחרי קבלת ההודעה notify_request_queue_not_empty, המכשיר צריך להפעיל את dequeue()‎ ברגע שהוא מוכן לטפל במאגר הבא.
  3. אחרי שהמכשיר מעבד מאגר ומוכן למאגר הבא, הוא צריך לבצע קריאה חוזרת ל-dequeue() במקום להמתין להתראה. אם אין מאגרים זמינים, הפונקציה dequeue() תחזיר את הערך NULL. לאחר מכן, כשמאגר זמין, המסגרת צריכה לקרוא שוב ל-notify_request_queue_not_empty(). אם המכשיר מקבל חזרה NULL מ-dequeue, הוא לא צריך לשלוח שוב שאילתה לתור עד שמתקבלת מהמקור קריאה ל-notify_request_queue_not_empty().
  4. אם המכשיר קורא לפונקציה buffer_count() ומקבל 0, זה לא אומר שהמסגרת תספק קריאה ל-notify_request_queue_not_empty(). המסגרת תספק התראה כזו רק אחרי שהמכשיר יקבל ערך NULL מ-dequeue, או בהפעלה הראשונית.
  5. הקריאה dequeue() בתגובה ל-notify_request_queue_not_empty() עשויה להיות באותו שרשור כמו הקריאה notify_request_queue_not_empty(), ועשויה להתבצע מתוך הקריאה notify.
  6. צריך להחזיר את כל מאגרי הבקשות שהוצאו מהתור למסגרת באמצעות קריאה ל-free_request, כולל במקרים של שגיאות, בקשה לניקוי המכשיר או כשהמכשיר נכבה.

ההגדרה מופיעה בשורה 220 בקובץ camera2.h .

מסמכי תיעוד של שדה

int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)

אחזור מאגר מטא-נתונים מהמסגרת. הפונקציה מחזירה את הערך OK אם אין שגיאה. אם התור ריק, הפונקציה מחזירה NULL במאגר. במקרה כזה, המכשיר צריך להמתין להודעה ‎notify_request_queue_not_empty()‎ לפני שינסה שוב להסיר את הבקשה מהתור. מאגרים שנוצרים בדרך הזו צריך להחזיר למסגרת באמצעות free_request()‎ .

ההגדרה מופיעה בשורה 237 בקובץ camera2.h .

int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)

החזרת מאגר מטא-נתונים למסגרת אחרי השימוש בו, או אם מתרחשת שגיאה או כיבוי.

ההגדרה מופיעה בשורה 243 בקובץ camera2.h .

int(* request_count)(const struct camera2_request_queue_src_ops *q)

אחזור המספר של מאגרי הבקשות בהמתנה בתור. יכול להיות שהערך CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS יופיע אם מוגדרת כרגע בקשה חוזרת (בקשת סטרימינג). לקריאה לשיטה הזו אין השפעה על הקריאה של ה-framework לשיטה notify_request_queue_not_empty().

ההגדרה מופיעה בשורה 228 בקובץ camera2.h .


התיעוד של המבנה הזה נוצר מהקובץ הבא: