מידע על המבנה 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 .
התיעוד של המבנה הזה נוצר מהקובץ הבא:
- hardware/libhardware/include/hardware/ camera_common.h