הפנייה למבנה camera2_device_ops
#include < camera2.h >
שדות נתונים | |
int(* | set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* | notify_request_queue_not_empty )(const struct camera2_device *) |
int(* | set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* | get_in_progress_count )(const struct camera2_device *) |
int(* | flush_captures_in_progress )(const struct camera2_device *) |
int(* | construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request) |
int(* | allocate_stream )(const struct camera2_device *, uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, *max_32_)t |
int(* | register_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
int(* | release_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | allocate_reprocess_stream )(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *max_consumer_usage)t |
int(* | allocate_reprocess_stream_from_stream )(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id) |
int(* | release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id) |
int(* | trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
int(* | set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* | get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* | dump )(const struct camera2_device *, int fd) |
int(* | get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata) |
תיאור מפורט
תיעוד שטח
int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *umint32_t *umint3_bufferst) |
allocate_reprocess_stream:
הקצה זרם קלט חדש לשימוש, המוגדר על ידי רוחב מאגר הפלט, גובה ופורמט הפיקסלים. מחזיר את המזהה של הזרם החדש, דגלי השימוש ב-gralloc וספירת חיץ ניתנת לרכישה בו זמנית, עם הצלחה. תנאי שגיאה:
- בקשת שילוב רוחב/גובה/פורמט אינו מופיע כנתמך על ידי המאפיינים הסטטיים של החיישן
- מבקש להגדיר יותר מדי זרמי עיבוד מחדש בבת אחת.
פרמטרי קלט:
- רוחב, גובה, פורמט: מפרט למאגרים שיישלחו דרך הזרם הזה. הפורמט חייב להיות ערך מרשימת HAL_PIXEL_FORMAT_*.
- reprocess_stream_ops: מבנה של מצביעי פונקציות לרכישה ושחרור מאגרים עבור זרם זה. הזרם הבסיסי יוגדר על סמך יציאות השימוש ו-max_buffers.
פרמטרי פלט:
- stream_id: מספר שלם לא חתום המזהה את הזרם הזה. ערך זה משמש בבקשות נכנסות לזיהוי הזרם, ובשחרור הזרם. מזהים אלה ממוספרים בנפרד ממזהי זרם הקלט.
- consumer_usage: מסכת השימוש של gralloc הדרושה למכשיר HAL לצריכת סוג הנתונים המבוקש. זה משמש בהקצאת מאגרי gralloc חדשים עבור תור מאגר הזרם.
- max_buffers: המספר המרבי של מאגרים שייתכן והתקן HAL יצטרך לרכוש בו-זמנית. ייתכן שלמכשיר לא יהיו יותר מאגרים שנרכשו בו-זמנית מערך זה.
int(* allocate_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id) |
allocate_reprocess_stream_from_stream:
הקצה זרם קלט חדש לשימוש, שישתמש במאגרים שהוקצו לזרם פלט קיים. כלומר, לאחר שה-HAL מעמיד בתור מאגר על זרם הפלט, הוא עשוי לראות את אותו מאגר מועבר אליו מזרם עיבוד מחדש של קלט זה. לאחר שה-HAL ישחרר את המאגר בחזרה לזרם העיבוד מחדש, הוא יוחזר לתור הפלט לשימוש חוזר.
תנאי שגיאה:
- שימוש בזרם פלט בגודל/פורמט לא מתאים לבסיס זרם העיבוד מחדש.
- ניסיון להקצות יותר מדי זרמי עיבוד מחדש בבת אחת.
פרמטרי קלט:
- output_stream_id: המזהה של זרם פלט קיים בעל גודל ופורמט המתאימים לעיבוד מחדש.
- reprocess_stream_ops: מבנה של מצביעי פונקציות לרכישה ושחרור מאגרים עבור זרם זה. הזרם הבסיסי ישתמש באותן ידיות חיץ גרפיות שבהן משתמש זרם הפלט.
פרמטרי פלט:
- stream_id: מספר שלם לא חתום המזהה את הזרם הזה. ערך זה משמש בבקשות נכנסות לזיהוי הזרם, ובשחרור הזרם. מזהים אלה ממוספרים בנפרד ממזהי זרם הקלט.
לקוח HAL חייב תמיד לשחרר את זרם העיבוד מחדש לפני שהוא משחרר את זרם הפלט שעליו הוא מבוסס.
int(* allocate_stream)(const struct camera2_device *,uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *2_usage, |
allocate_stream:
הקצה זרם פלט חדש לשימוש, המוגדר על ידי רוחב מאגר הפלט, גובה, יעד ואולי פורמט הפיקסלים. מחזיר את מזהה הזרם החדש, דגלי השימוש ב-gralloc, ספירת חיץ מינימלית בתור, ואולי את פורמט הפיקסלים, עם הצלחה. תנאי שגיאה:
- בקשת שילוב רוחב/גובה/פורמט אינו מופיע כנתמך על ידי המאפיינים הסטטיים של החיישן
- מבקש יותר מדי זרמים מסוג פורמט נתון (2 זרמים גולמיים של Bayer, למשל).
פרמטרי קלט:
- רוחב, גובה, פורמט: מפרט למאגרים שיישלחו דרך הזרם הזה. הפורמט הוא ערך מרשימת HAL_PIXEL_FORMAT_*. אם נעשה שימוש ב-HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, מודול הפלטפורמה gralloc יבחר פורמט המבוסס על דגלי השימוש שסופקו על ידי המצלמה HAL וצרכן הזרם. ה-HAL של המצלמה צריך לבדוק את המאגרים הנמסרים לו בקריאה register_stream_buffers כדי לקבל את הפורמט הספציפי למימוש במידת הצורך.
- stream_ops: מבנה של מצביעי פונקציות להשגת ועמידה בתור מאגרים עבור זרם זה. הזרם הבסיסי יוגדר על סמך יציאות השימוש ו-max_buffers. לא ניתן לקרוא לשיטות במבנה זה אלא לאחר החזרת allocate_stream.
פרמטרי פלט:
- stream_id: מספר שלם לא חתום המזהה את הזרם הזה. ערך זה משמש בבקשות נכנסות לזיהוי הזרם, ובשחרור הזרם.
- usage: מסכת השימוש של gralloc הדרושה למכשיר HAL להפקת סוג הנתונים המבוקש. זה משמש בהקצאת מאגרי gralloc חדשים עבור תור מאגר הזרם.
- max_buffers: המספר המרבי של מאגרים שייתכן שיהיה צורך להשאיר את מכשיר HAL מתור בו-זמנית. ייתכן שהמכשיר לא יפנה יותר מאגרים מהערך הזה בו-זמנית.
int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request) |
צור בקשת ברירת מחדל מלאה עבור מקרי שימוש סטנדרטיים במצלמה.
ההתקן חייב להחזיר בקשה מלאה שמוגדרת כדי לענות על מקרה השימוש המבוקש, שחייב להיות אחד מהסמנים של CAMERA2_TEMPLATE_*. יש לכלול את כל שדות בקרת הבקשות, למעט android.request.outputStreams.
מאגר המטא-נתונים המוחזר חייב להיות מוקצה עם allocate_camera_metadata. המסגרת לוקחת בעלות על החיץ.
int(* dump)(const struct camera2_device *, int fd) |
int(* flush_captures_in_progress)(const struct camera2_device *) |
int(* get_in_progress_count)(const struct camera2_device *) |
int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata) |
קבל מטא נתונים ספציפיים למופעי מכשיר. מטא נתונים אלה חייבים להיות קבועים עבור מופע בודד של התקן המצלמה, אך עשויים להיות שונים בין קריאות open() . מצביע ה-camera_metadata המוחזר חייב להיות תקף עד שנקרא שיטת close() של device.
מידע על הגרסה:
CAMERA_DEVICE_API_VERSION_2_0:
לא זמין. ייתכן שהמסגרת לא תיגש למצביע הפונקציה הזו.
CAMERA_DEVICE_API_VERSION_2_1:
תָקֵף. ניתן לקרוא לפי המסגרת.
int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops) |
int(* notify_request_queue_not_empty)(const struct camera2_device *) |
int(* register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers) |
רשום מאגרים עבור זרם נתון. זה נקרא לאחר קריאת allocate_stream מוצלחת, ולפני שהבקשה הראשונה המתייחסת לזרם מוצבת בתור. שיטה זו נועדה לאפשר למכשיר HAL למפות או להכין בדרך אחרת את המאגרים לשימוש מאוחר יותר. מובטח ש-num_buffers יהיו לפחות max_buffers (מ-allocate_stream), אך עשויים להיות גדולים יותר. המאגרים כבר יהיו נעולים לשימוש. בסיום השיחה, כל המאגרים צריכים להיות מוכנים להחזרה לתור. אם פורמט הזרם הוגדר ל-HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, ה-HAL של המצלמה צריך לבדוק את המאגרים שהועברו כאן כדי לקבוע מידע על פורמט פיקסל פרטי של פלטפורמה.
int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* release_stream)(const struct camera2_device *, uint32_t stream_id) |
int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user) |
int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
התיעוד עבור מבנה זה נוצר מהקובץ הבא:
- hardware/libhardware/include/hardware/ camera2.h