camera_info מבנה הפניה

camera_info מבנה הפניה

#include < camera_common.h >

שדות נתונים

int מוּל
int נטייה
uint32_t device_version
const camera_metadata_t * סטטי_camera_characteristics
int עלות_משאב
char ** מתנגשים_מכשירים
size_t אורך_מכשירים_מתנגשים

תיאור מפורט

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

תיעוד שטח

char** התקנים_מתנגשים

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

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

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

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

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

CAMERA_MODULE_API_VERSION_2_3 ומטה:

לא בתוקף. ניתן להניח שהוא NULL. אל תקרא את השדה הזה.

CAMERA_MODULE_API_VERSION_2_4 ומעלה:

תקף תמיד.

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

size_t conflicting_devices_length

אורך המערך נתון בשדה התקנים מתנגשים.

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

CAMERA_MODULE_API_VERSION_2_3 ומטה:

לא בתוקף. ניתן להניח שהוא 0. אל תקרא שדה זה.

CAMERA_MODULE_API_VERSION_2_4 ומעלה:

תקף תמיד.

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

uint32_t device_version

הערך של camera_device_t.common.version.

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

CAMERA_MODULE_API_VERSION_1_0:

לא בתוקף. ניתן להניח שהיא CAMERA_DEVICE_API_VERSION_1_0. אל תקרא את השדה הזה.

CAMERA_MODULE_API_VERSION_2_0 ומעלה:

תקף תמיד

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

int פונה

הכיוון אליו פונה המצלמה. ראה system/core/include/system/camera.h להגדרות של כיוון המצלמה.

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

CAMERA_MODULE_API_VERSION_2_3 ומטה:

זה צריך להיות CAMERA_FACING_BACK או CAMERA_FACING_FRONT.

CAMERA_MODULE_API_VERSION_2_4 ומעלה:

זה צריך להיות CAMERA_FACING_BACK, CAMERA_FACING_FRONT או CAMERA_FACING_EXTERNAL.

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

אוריינטציה אינט

הכיוון של תמונת המצלמה. הערך הוא הזווית שתמונת המצלמה צריכה להיות מסובבת עם כיוון השעון כדי שהיא תראה בצורה נכונה על הצג בכיוון הטבעי שלה. זה צריך להיות 0, 90, 180 או 270.

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

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

CAMERA_MODULE_API_VERSION_2_3 ומטה:

תקף בכל גרסאות camera_module .

CAMERA_MODULE_API_VERSION_2_4 ומעלה:

תקף אם המצלמה פונה CAMERA_FACING_BACK או CAMERA_FACING_FRONT, לא תקף אם המצלמה פונה CAMERA_FACING_EXTERNAL.

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

int resource_cost

"עלות" המשאב הכוללת של שימוש במצלמה זו, מיוצגת כערך מספר שלם בטווח [0, 100] כאשר 100 מייצג את השימוש הכולל של המשאב המשותף המהווה את צוואר הבקבוק המגביל של תת-מערכת המצלמה. זו עשויה להיות הערכה גסה מאוד, והיא משמשת כרמז לשירות המצלמות כדי לקבוע מתי לא לאפשר ליישומים מרובים לפתוח בו זמנית מצלמות שונות המפורסמות על ידי שירות המצלמות.

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

שירות המצלמה עדיין עשוי לנסות לפתוח בו-זמנית שילובים של התקני מצלמה עם עלות משאב כוללת של מעל 100. פעולה זו עשויה להצליח או להיכשל. אם זה יצליח, שילובים של תצורות שאינן נתמכות בגלל אילוצי משאבים של ריבוי התקנים פתוחים אמורים להיכשל במהלך שיחות התצורה. אם עלות המשאב הכוללת היא <= 100, הפתיחה וההגדרה לא אמורה להיכשל עבור הגדרות תצורת זרם או יכולות מכשיר אחרות שבדרך כלל יצליחו עבור מכשיר כשהוא התקן המצלמה הפתוחה היחיד.

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

מקרי שימוש לדוגמה:

לְשֶׁעָבַר. 1: התקן מצלמה 0 = התקן מצלמה אחורית מצלמה 1 = מצלמה קדמית

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

תְצוּרָה:

התקן מצלמה 0 - עלות_משאב = 51 התקנים מתנגשים = null התקן מצלמה 1 - עלות_משאב = 51 התקנים מתנגשים = null

תוֹצָאָה:

מכיוון שסכום עלויות המשאב הוא > 100, אם באפליקציה בעדיפות גבוהה יותר יש אחד מהמכשירים פתוחים, שירות המצלמה לא יאפשר ליישומים בעלי עדיפות נמוכה יותר לפתוח אף אחד מהמכשירים. אם אפליקציה בעדיפות נמוכה יותר משתמשת במכשיר שעדיפות גבוהה יותר מנסה לפתוח לאחר מכן, האפליקציה בעדיפות נמוכה יותר תיאלץ לנתק את המכשיר.

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

לְשֶׁעָבַר. 2: התקן מצלמה 0 = התקן מצלמה אחורית שמאלית מצלמה 1 = התקן מצלמה אחורית ימין מצלמה 2 = מצלמת סטריאו משולבת באמצעות חיישני מצלמה אחורית ימין ושמאל המשמשים את המכשירים 0, ומכשיר מצלמה 1 3 = מצלמה קדמית

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

תְצוּרָה:

התקן מצלמה 0 - עלות_משאב = 50 התקנים מתנגשים = { 2 } התקן מצלמה 1 - עלות_משאב = 50 התקנים_מתנגשים = { 2 } התקן מצלמה 2 - עלות_משאב = 100 התקנים_מתנגשים = { 0, 1 } התקן מצלמה מתנגש = מכשיר_5 - מצלמה מתנגשים

תוֹצָאָה:

בהתבסס על השדות המתנגשים_מכשירים, שירות המצלמה מבטיח שהקבוצות הבאות של מכשירים פתוחים לעולם לא יורשו: { 1, 2 }, { 0, 2 }.

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

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

לְשֶׁעָבַר. 3: התקן מצלמה 0 = התקן מצלמה אחורית מצלמה 1 = התקן מצלמה קדמית 2 = מצלמה קדמית בעלת הספק נמוך המשתמשת באותו חיישן כמו מכשיר 1, אך חושפת רק רזולוציות זרם תמונה שניתן להשתמש בהן במצב צריכת חשמל נמוכה

  • שימוש בשתי המצלמות הקדמיות (מכשיר 1, 2) בו-זמנית הוא בלתי אפשרי בגלל חיישן פיזי משותף. שימוש במצלמה הקדמית האחורית וה"חזקה" (מכשיר 1) עשוי להיות בלתי אפשרי עבור תצורות זרם מסוימות עקב מגבלות חומרה, אך ניתן להשתמש באפשרות המצלמה הקדמית "הספק נמוך" מכיוון שיש לה חומרה ייעודית מיוחדת.

    תְצוּרָה:

    התקן מצלמה 0 - עלות_משאב = 100 התקנים מתנגשים = null התקן מצלמה 1 - עלות_משאב = 100 התקנים_מתנגשים = { 2 } התקן מצלמה 2 - עלות_משאב = 0 התקנים_מתנגשים = { 1 } תוצאה:

    בהתבסס על השדות המתנגשים_מכשירים, שירות המצלמה מבטיח שהקבוצות הבאות של מכשירים פתוחים לעולם לא יורשו: { 1, 2 }.

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

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

CAMERA_MODULE_API_VERSION_2_3 ומטה:

לא בתוקף. אפשר להניח שהוא 100. אין לקרוא את השדה הזה.

CAMERA_MODULE_API_VERSION_2_4 ומעלה:

תקף תמיד.

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

const camera_metadata_t * מאפייני_מצלמה_סטטיים

המאפיינים הקבועים של המצלמה, הכוללים את כל המטא-נתונים של המצלמה הסטטית המצוינים ב-system/media/camera/docs/docs.html. זה צריך להיות מאגר מטא נתונים ממוין, ולא ניתן לשנות או לשחרר על ידי המתקשר. המצביע צריך להישאר תקף לכל החיים של מודול המצלמה, וייתכן שהערכים בו לא ישתנו לאחר החזרתו על ידי get_camera_info().

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

CAMERA_MODULE_API_VERSION_1_0:

לא בתוקף. מאפיינים נוספים אינם זמינים. אל תקרא את השדה הזה.

CAMERA_MODULE_API_VERSION_2_0 ומעלה:

תקף אם device_version >= CAMERA_DEVICE_API_VERSION_2_0. אל תקראו אחרת.

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


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