camera3_callback_ops הפניה למבנים

camera3_callback_ops הפניה למבנים

#include < camera3.h >

שדות נתונים

בָּטֵל(* process_capture_result ) (const struct camera3_callback_ops *, const camera3_capture_result_t * תוצאה)
בָּטֵל(* להודיע ) (const struct camera3_callback_ops *, const camera3_notify_msg_t * msg)

תיאור מפורט

הגדרה בשורה 2397 של קובץ camera3.h .

תיעוד בשטח

void (* notify) (const struct camera3_callback_ops *, const camera3_notify_msg_t * msg)

לְהוֹדִיעַ:

החזרת הודעה אסינכרונית מה- HAL, פוטרה מסיבות שונות. רק למידע שאינו תלוי בצילום מסגרת, או הדורש תזמון ספציפי. הבעלות על מבנה ההודעות נותרה עם ה- HAL, וה- msg צריך להיות תקף רק למשך שיחה זו.

אשכולות מרובים עשויים להתקשר ל- Notify () בו זמנית.

<= CAMERA_DEVICE_API_VERSION_3_1:

ההודעה על תחילת החשיפה לבקשה נתונה חייבת להישלח על ידי ה- HAL לפני ביצוע השיחה הראשונה ל- process_capture_result () עבור אותה בקשה.

> = CAMERA_DEVICE_API_VERSION_3_2:

מאגרים המועברים למסגרת לא ישלחו לשכבת היישום עד שתקבל התחלת חשיפת זמן חשיפה (או חותמת זמן התחלת חשיפה של תמונת קלט לבקשת עיבוד מחדש) באמצעות שיחת הודעה () של תריס. מומלץ מאוד לשלוח את השיחה מוקדם ככל האפשר.


דרישות ביצועים:

זו שיחה שאינה חוסמת. המסגרת תחזיר את השיחה הזו בעוד 5ms.

הגדרה בשורה 2499 בקובץ camera3.h .

בטל (* process_capture_result) (const struct camera3_callback_ops *, const camera3_capture_result_t * תוצאה)

process_capture_result:

שלח תוצאות מלכידה שהושלמה למסגרת. process_capture_result () עשוי להיות מופעל על ידי ה- HAL מספר פעמים בתגובה לבקשת לכידה אחת. זה מאפשר, למשל, להחזיר את המטא-נתונים ואת מאגרי הרזולוציה הנמוכה בשיחה אחת, ומאגרי JPEG שעובדו לאחר מכן בשיחה מאוחרת יותר, לאחר שיהיה זמין. כל שיחה חייבת לכלול את מספר המסגרת של הבקשה שהיא מחזירה מטא-נתונים או מאגרים עבורם.

רכיב (מאגר או מטא נתונים) של התוצאה המלאה יכול להיכלל רק בשיחת process_capture_result. חיץ עבור כל זרם ואת מטא הנתונים של התוצאה, צריך להיות מוחזר על ידי ה- HAL עבור כל בקשה באחת משיחות process_capture_result, גם במקרה של שגיאות שמייצרות חלק מהפלט. אין להתקשר לשינוי process_capture_result () ללא מאגרי פלט או מטא נתונים של תוצאות.

סדר החזרת המטא נתונים והמאגרים לתוצאה בודדת לא משנה, אך יש להחזיר מאגרים לזרם נתון בסדר FIFO. לכן יש להחזיר את המאגר לבקשה 5 לזרם A תמיד לפני המאגר לבקשה 6 לזרם A. זה חל גם על מטא הנתונים של התוצאה; יש להחזיר את המטא-נתונים לבקשה 5 לפני המטא-נתונים לבקשה 6.

עם זאת, זרמים שונים אינם תלויים זה בזה, ולכן מקובל ומצופה כי המאגר לבקשה 5 עבור זרם A עשוי להיות מוחזר לאחר שהמאגר לבקשה 6 עבור זרם B הוא. ומקובל שמטא-הנתונים של התוצאה לבקשה 6 עבור זרם B יוחזרו לפני שהמאגר לבקשה 5 עבור זרם A הוא.

ה- HAL שומר על בעלות על מבנה התוצאה, אשר רק צריך להיות תקף לגישה במהלך שיחה זו. המסגרת תעתיק את כל מה שהיא צריכה לפני שיחה זו תחזור.

את מאגרי הפלט אין עדיין צורך למלא; המסגרת תמתין בגדר הסינכרון לשחרור מאגר הזרם לפני קריאת נתוני המאגר. לכן, יש לקרוא ל- HAL לשיטה זו בהקדם האפשרי, אפילו אם חלק ממאגרי הפלט עדיין נמצאים במילוי. על ה- HAL לכלול גדרות סינכרון שחרור תקפות לכל ערך מאגר זרם של output_buffers, או -1 אם מאגר הזרם הזה כבר מלא.

אם לא ניתן לבנות את חיץ התוצאה לבקשה, על ה- HAL להחזיר חיץ מטא-נתונים ריק, אך עדיין לספק את מאגרי הפלט וגדרות הסינכרון שלהם. בנוסף, חייבים להתקשר אל הודעה () עם הודעת ERROR_RESULT.

אם לא ניתן למלא חיץ פלט, יש להגדיר את שדה הסטטוס שלו ל STATUS_ERROR. בנוסף, יש להתקשר ל- notify () עם הודעת ERROR_BUFFER.

אם הלכידה כולה נכשלה, עדיין יש לקרוא לשיטה זו כדי להחזיר את מאגרי הפלט למסגרת. כל סטטוסי החיץ צריכים להיות STATUS_ERROR, ומטא הנתונים של התוצאה צריכים להיות מאגר ריק. בנוסף, יש להתקשר ל- notify () עם הודעת ERROR_REQUEST. במקרה זה, אין לשלוח הודעות ERROR_RESULT / ERROR_BUFFER בודדות.

דרישות ביצועים:

זו שיחה שאינה חוסמת. המסגרת תחזיר את השיחה הזו בעוד 5ms.

זמן ההשהיה של הצינור (ראה הגדרה S7) צריך להיות קטן או שווה ל -4 מרווחי מסגרות, ועליו להיות קטן או שווה למרווחי 8 פריימים.

הגדרה בשורה 2466 של קובץ camera3.h .


התיעוד למבנה זה נוצר מהקובץ הבא:
  • חומרה / libhardware / include / hardware / camera3.h