מידע על המבנה camera_module

מידע על המבנה camera_module

#include < camera_common.h >

שדות נתונים

hw_module_t   נפוץ
 
int(*  get_number_of_cameras )(void)
 
int(*  get_camera_info )(int camera_id, struct camera_info *info)
 
int(*  set_callbacks )(const camera_module_callbacks_t *callbacks)
 
void(*  get_vendor_tag_ops )(vendor_tag_ops_t *ops)
 
int(*  open_legacy )(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)
 
int(*  set_torch_mode )(const char *camera_id, bool enabled)
 
int(*  init )()
 
void *  reserved [5]
 

תיאור מפורט

ההגדרה מופיעה בשורה 646 בקובץ camera_common.h .

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

hw_module_t משותף

שיטות נפוצות של מודול המצלמה. הוא חייב להיות המאפיין הראשון של camera_module , כי משתמשים במבנה הזה יבצעו המרה של hw_module_t למצביע camera_module בהקשרים שבהם ידוע ש- hw_module_t מפנה ל- camera_module .

הערכים המוחזרים של common.methods->open עבור camera_module הם:

0: כשמכשיר המצלמה נפתח בהצלחה.

-ENODEV: לא ניתן לפתוח את מכשיר המצלמה בגלל שגיאה פנימית.

-EINVAL: הארגומנטים של הקלט לא תקינים, כלומר המזהה לא תקין ו/או המודול לא תקין.

-EBUSY: מכשיר המצלמה כבר נפתח עבור מזהה המצלמה הזה (באמצעות השיטה הזו או open_legacy), ללא קשר לגרסה של HAL של המכשיר שבה הוא נפתח.

-EUSERS: המספר המקסימלי של מכשירי מצלמה שאפשר לפתוח בו-זמנית כבר נפתח, באמצעות השיטה הזו או באמצעות השיטה open_legacy.

כל שאר ערכי ההחזרה מ-common.methods->open יטופלו כ--ENODEV.

ההגדרה מופיעה בשורה 674 בקובץ camera_common.h .

int(* get_camera_info)(int camera_id, struct camera_info *info)

get_camera_info:

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

ערכים שמוחזרים:

0: בפעולה מוצלחת

-ENODEV: לא ניתן לספק את המידע בגלל שגיאה פנימית.

-EINVAL: הארגומנטים של הקלט לא תקינים, כלומר המזהה לא תקין ו/או המודול לא תקין.

פרטי הגרסה (על סמך camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_4 ואילך:

כשמצלמה מנותקת, מזהה המצלמה שלה הופך ללא תקף. קריאה ל-method עם מזהה המצלמה הלא חוקי הזה תגרום לקבלת הערך ‎-EINVAL ומטא-נתונים סטטיים של מצלמה עם ערך NULL ( ‎camera_info.static_camera_characteristics ).

ההגדרה מופיעה בשורה 727 בקובץ camera_common.h .

int(* get_number_of_cameras)(void)

get_number_of_cameras:

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

פרטי הגרסה (על סמך camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 ואילך:

הערך כאן חייב להיות סטטי, ואי אפשר לשנות אותו אחרי הקריאה הראשונה לשיטה הזו.

CAMERA_MODULE_API_VERSION_2_4 ואילך:

הערך כאן חייב להיות סטטי, וחייבים לספור רק מצלמות מובנות עם ערכי כיוון מצלמה של CAMERA_FACING_BACK או CAMERA_FACING_FRONT ( camera_info.facing ). ה-HAL לא חייב לכלול את המצלמות החיצוניות ( camera_info.facing == CAMERA_FACING_EXTERNAL) בערך המוחזר של הקריאה הזו. מסגרות יעזרו ב-camera_device_status_change כדי לנהל את מספר המצלמות החיצוניות.

ההגדרה מופיעה בשורה 701 בקובץ camera_common.h .

void(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

get_vendor_tag_ops:‏

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

המבנה vendor_tag_ops שנעשה בו שימוש כאן מוגדר בקובץ: system/media/camera/include/system/vendor_tags.h

פרטי הגרסה (על סמך camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1: לא מסופק על ידי מודול HAL. לא ניתן לקרוא לפונקציה הזו מה-Framework.

CAMERA_MODULE_API_VERSION_2_2: הקריאה על ידי המסגרת תקפה.

ההגדרה מופיעה בשורה 778 בקובץ camera_common.h .

int(* init)()

init:‎

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

הטמעות HAL יכולות להשתמש בו כדי לבצע אתחול ופעולות חד-פעמיות אחרות.

פרטי הגרסה (על סמך camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: לא מסופק על ידי מודול HAL. ה-Framework לא יפעיל את הפונקציה הזו.

CAMERA_MODULE_API_VERSION_2_4: אם הערך לא NULL, המסגרת תמיד תיצור קריאה לשיטה הזו פעם אחת אחרי טעינת מודול ה-HAL, לפני קריאה לכל שיטה אחרת של מודול HAL.

ערכים שמוחזרים:

0: בפעולה מוצלחת.

-ENODEV: לא ניתן להשלים את האינטליגנציה עקב שגיאה פנימית. צריך להניח שה-HAL נמצא במצב לא פעיל.

ההגדרה מופיעה בשורה 909 בקובץ camera_common.h .

int(* open_legacy)(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)

open_legacy:‎

פתיחת מכשיר HAL מצלמה מדור קודם ספציפי, אם מודול ה-HAL של המצלמה תומך במספר גרסאות של HAL API למכשיר. לדוגמה, אם מודול המצלמה תומך גם ב-API של המכשיר CAMERA_DEVICE_API_VERSION_1_0 וגם ב-API של המכשיר CAMERA_DEVICE_API_VERSION_3_2 לאותו מזהה מצלמה, ה-framework יכול לקרוא לפונקציה הזו כדי לפתוח את מכשיר המצלמה כמכשיר CAMERA_DEVICE_API_VERSION_1_0.

זוהי שיטה אופציונלית. מודול HAL של מצלמה לא צריך לתמוך ביותר מגרסה אחת של HAL למכשיר, ומודול כזה עשוי להחזיר את הערך -ENOSYS לכל הקריאות לשיטה הזו. לגרסאות ישנות יותר של HAL device API שלא נתמכות, יכול להיות שהיא תחזיר את הערך -EOPNOTSUPP. במקרים כאלה, המערכת תשתמש במקום זאת בשיטה הרגילה open()‎ (common.methods->open).

פרטי הגרסה (על סמך camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2: לא מסופק על ידי מודול HAL. ה-Framework לא יפעיל את הפונקציה הזו.

CAMERA_MODULE_API_VERSION_2_3: הקריאה על ידי המסגרת תקפה.

ערכים שמוחזרים:

0: כשמכשיר המצלמה נפתח בהצלחה.

-ENOSYS אין תמיכה בשיטה הזו.

-EOPNOTSUPP: שיטת ה-HAL הזו לא תומכת בגרסה המבוקשת.

-EINVAL: הארגומנטים של הקלט לא תקינים, כלומר המזהה לא תקין ו/או המודול לא תקין.

-EBUSY: מכשיר המצלמה כבר נפתח למזהה המצלמה הזה (באמצעות השיטה הזו או השיטה common.methods->open), ללא קשר לגרסה של HAL של המכשיר שבה הוא נפתח.

-EUSERS: המספר המקסימלי של מכשירי מצלמה שאפשר לפתוח בו-זמנית כבר נפתח, באמצעות השיטה הזו או באמצעות השיטה common.methods->open.

ההגדרה מופיעה בשורה 824 בקובץ camera_common.h .

void* reserved[5]

ההגדרה מופיעה בשורה 912 בקובץ camera_common.h .

int(* set_callbacks)(const camera_module_callbacks_t *callbacks)

set_callbacks:

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

פרטי הגרסה (על סמך camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0, ‏ CAMERA_MODULE_API_VERSION_2_0:

לא מסופק על ידי מודול HAL. לא ניתן לקרוא לפונקציה הזו מה-Framework.

CAMERA_MODULE_API_VERSION_2_1:

התקינה לקריאה על ידי המסגרת.

ערכים שמוחזרים:

0: בפעולה מוצלחת

-ENODEV: לא ניתן להשלים את הפעולה בגלל שגיאה פנימית.

-EINVAL: ארגומנטים הקלט לא תקינים, כלומר פונקציות ה-callbacks הן null

ההגדרה מופיעה בשורה 758 בקובץ camera_common.h .

int(* set_torch_mode)(const char *camera_id, bool enabled)

set_torch_mode:

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

למכשיר המצלמה יש עדיפות גבוהה יותר לגישה ליחידה של הפלאש. כשיש התנגשויות משאבים, למשל קריאה ל-open() כדי לפתוח מכשיר מצלמה, מודול ה-HAL צריך להודיע למסגרת באמצעות camera_module_callbacks.torch_mode_status_change() שהמצב של תאורת הפנס מושבת ומצב תאורת הפנס השתנה ל-TORCH_MODE_STATUS_NOT_AVAILABLE. כשהמשאבים להפעלת מצב הפנס יהיו זמינים שוב, מודול ה-HAL צריך להודיע למסגרת באמצעות camera_module_callbacks.torch_mode_status_change() שהמצב של מצב הפנס הפך ל-TORCH_MODE_STATUS_AVAILABLE_OFF כדי ש set_torch_mode() תתקבל קריאה.

כשהמסגרת קוראת ל- set_torch_mode()‎ כדי להפעיל את מצב הפנס של יחידת הפנס, אם HAL לא יכול להפעיל כמה מצבי פנס בו-זמנית, HAL צריך להשבית את מצב הפנס שהופעל על ידי קריאה קודמת ל- set_torch_mode()‎ ולהודיע למסגרת שמצב הפנס של יחידת הפנס הזו הפך ל-TORCH_MODE_STATUS_AVAILABLE_OFF.

פרטי הגרסה (על סמך camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: לא מסופק על ידי מודול HAL. ה-Framework לא יפעיל את הפונקציה הזו.

CAMERA_MODULE_API_VERSION_2_4: הקריאה על ידי המסגרת תקפה.

ערכים שמוחזרים:

0: בפעולה מוצלחת.

-ENOSYS: מכשיר המצלמה לא תומך בפעולה הזו. הפונקציה מחזירה את הערך הזה רק אם הערך של android.flash.info.available הוא false.

-EBUSY: מכשיר המצלמה כבר נמצא בשימוש.

-EUSERS: המשאבים הנדרשים להפעלת מצב הפנס לא זמינים, בדרך כלל כי מכשירים אחרים עם מצלמה משתמשים במשאבים האלה ולא ניתן להשתמש ביחידה של הפנס.

-EINVAL: camera_id לא תקין.

ההגדרה מופיעה בשורה 878 בקובץ camera_common.h .


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