הפנייה למבנה camera2_device_ops

הפנייה למבנה 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)

תיאור מפורט

הגדרה בשורה 527 של הקובץ camera2.h .

תיעוד שטח

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 יצטרך לרכוש בו-זמנית. ייתכן שלמכשיר לא יהיו יותר מאגרים שנרכשו בו-זמנית מערך זה.

הגדרה בשורה 708 של הקובץ camera2.h .

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 חייב תמיד לשחרר את זרם העיבוד מחדש לפני שהוא משחרר את זרם הפלט שעליו הוא מבוסס.

הגדרה בשורה 754 של קובץ camera2.h .

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 מתור בו-זמנית. ייתכן שהמכשיר לא יפנה יותר מאגרים מהערך הזה בו-זמנית.

הגדרה בשורה 632 של הקובץ camera2.h .

int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request)

צור בקשת ברירת מחדל מלאה עבור מקרי שימוש סטנדרטיים במצלמה.

ההתקן חייב להחזיר בקשה מלאה שמוגדרת כדי לענות על מקרה השימוש המבוקש, שחייב להיות אחד מהסמנים של CAMERA2_TEMPLATE_*. יש לכלול את כל שדות בקרת הבקשות, למעט android.request.outputStreams.

מאגר המטא-נתונים המוחזר חייב להיות מוקצה עם allocate_camera_metadata. המסגרת לוקחת בעלות על החיץ.

הגדרה בשורה 580 של הקובץ camera2.h .

int(* dump)(const struct camera2_device *, int fd)

מצב dump של חומרת המצלמה

הגדרה בשורה 801 של הקובץ camera2.h .

int(* flush_captures_in_progress)(const struct camera2_device *)

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

הגדרה בשורה 567 של קובץ camera2.h .

int(* get_in_progress_count)(const struct camera2_device *)

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

הגדרה בשורה 558 של קובץ camera2.h .

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:

תָקֵף. ניתן לקרוא לפי המסגרת.

הגדרה בשורה 820 של הקובץ camera2.h .

int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops)

קבל שיטות לשאילתה לגבי מידע מטא-נתונים של תג הספקים. עשוי להגדיר אופציות ל-NULL אם לא מוגדרות תגיות הרחבות של ספקים.

הגדרה בשורה 795 של קובץ camera2.h .

int(* notify_request_queue_not_empty)(const struct camera2_device *)

הודע למכשיר שתור הבקשות אינו ריק יותר. יש לקרוא רק כאשר המאגר הראשון מתווסף תור חדש, או לאחר שהמקור החזיר NULL בתגובה לקריאת תור.

הגדרה בשורה 544 של קובץ camera2.h .

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 של המצלמה צריך לבדוק את המאגרים שהועברו כאן כדי לקבוע מידע על פורמט פיקסל פרטי של פלטפורמה.

הגדרה בשורה 657 של הקובץ camera2.h .

int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id)

שחרר זרם עיבוד מחדש. מחזירה שגיאה אם ​​נקראת כאשר get_in_progress_count אינו אפס, או אם מזהה הזרם אינו חוקי.

הגדרה בשורה 765 של הקובץ camera2.h .

int(* release_stream)(const struct camera2_device *, uint32_t stream_id)

שחרר זרם. מחזירה שגיאה אם ​​נקראת כאשר get_in_progress_count אינו אפס, או אם מזהה הזרם אינו חוקי.

הגדרה בשורה 667 של הקובץ camera2.h .

int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)

העברת שיטות ממשק תור של מסגרת פלט

הגדרה בשורה 549 של קובץ camera2.h .

int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)

הגדרת התקשרות חוזרת של התראות

הגדרה בשורה 787 של קובץ camera2.h .

int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)

העברת שיטות ממשק תור בקשות קלט.

הגדרה בשורה 536 של קובץ camera2.h .

int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)

הפעל פעילות אסינכרונית. זה משמש להפעלת התנהגויות מיוחדות של שגרות המצלמה 3A כשהן בשימוש. עיין בתיעוד עבור CAMERA2_TRIGGER_* למעלה לפרטים על מזהי הטריגר והטיעונים שלהם.

הגדרה בשורה 779 של קובץ camera2.h .


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