camera_module Struct Reference

camera_module Struct Reference

#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)
בָּטֵל(* 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 )()
בטל* שמור [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 ומעלה:

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

הגדרה בשורה 727 של הקובץ camera_common.h .

int(* get_number_of_cameras)(void)

קבל_מספר_מצלמות:

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

CAMERA_MODULE_API_VERSION_2_2: חוקי להתקשרות על ידי המסגרת.

הגדרה בשורה 778 של הקובץ camera_common.h .

int(* init)()

init:

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

ניתן להשתמש בו על ידי יישומי HAL לביצוע אתחול ופעולות חד פעמיות אחרות.

מידע גרסה (מבוסס על camera_module_t.common.module_api_version):

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

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 API של התקן נתמכות על ידי מודול HAL זה של המצלמה. לדוגמה, אם מודול המצלמה תומך הן ב-CAMERA_DEVICE_API_VERSION_1_0 והן ב-CAMERA_DEVICE_API_VERSION_3_2 API עבור אותו מזהה מצלמה, המסגרת יכולה לקרוא לפונקציה זו כדי לפתוח את התקן המצלמה כמכשיר CAMERA_DEVICE_API_VERSION_1_0.

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

CAMERA_MODULE_API_VERSION_2_3: חוקי להתקשרות על ידי המסגרת.

ערכי החזרה:

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

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

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

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

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

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

הגדרה בשורה 824 של הקובץ camera_common.h .

בטל* שמור[5]

הגדרה בשורה 912 של הקובץ camera_common.h .

int(* set_callbacks)(const camera_module_callbacks_t *callbacks)

set_callbacks:

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

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. מסגרת לא תקרא לפונקציה הזו.

CAMERA_MODULE_API_VERSION_2_4: חוקי להתקשרות על ידי המסגרת.

ערכי החזרה:

0: על מבצע מוצלח.

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

-EBUSY: התקן המצלמה כבר בשימוש.

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

-EINVAL: זיהוי המצלמה אינו חוקי.

הגדרה בשורה 878 של הקובץ camera_common.h .


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