camera3_stream Reference Struct
#include < camera3.h >
שדות נתונים | |
int | stream_type |
uint32_t | רוֹחַב |
uint32_t | גוֹבַה |
int | פוּרמָט |
uint32_t | נוֹהָג |
uint32_t | max_buffers |
בטל* | priv |
android_dataspace_t | data_space |
int | רוֹטַציָה |
בטל* | שמור [7] |
תיאור מפורט
camera3_stream_t:
ידית לזרם קלט או פלט של מצלמה בודדת. זרם מוגדר על ידי המסגרת לפי רזולוציית המאגר והפורמט שלו, ובנוסף על ידי ה-HAL עם דגלי השימוש של gralloc וספירת המאגר המקסימלית בטיסה.
מבני הזרמים הם בבעלות ה-framework, אך מצביעים ל- camera3_stream המועברים ל-HAL על-ידי configure_streams() תקפים עד לסוף הקריאה הראשונה של configure_streams() הבאה שלא כוללת את ה- camera3_stream כארגומנט, או עד סוף הקריאה של close().
כל החברים הנשלטים על המסגרת של camera3_stream ניתנים לשינוי ברגע שה- camera3_stream מועבר לתוך configure_streams(). ה-HAL רשאי לשנות רק את הפרמטרים הנשלטים על ידי HAL במהלך קריאה ל-configure_streams(), למעט התוכן של המצביע הפרטי.
אם קריאה configure_streams() מחזירה שגיאה לא קטלנית, כל הזרמים הפעילים יישארו תקפים כאילו לא נקרא configure_streams().
נקודת הקצה של הזרם אינה גלויה למכשיר HAL של המצלמה. ב-DEVICE_API_VERSION_3_1, זה שונה כדי לשתף דגלי שימוש בזרמים שבהם המצלמה היא מפיקה (סוגי OUTPUT ו-BIDIRECTIONAL) ראה את שדה השימוש למטה.
תיעוד שטח
android_dataspace_t data_space |
שדה המתאר את תוכן המאגר. מידות הפורמט והמאגר מגדירים את פריסת הזיכרון והמבנה של מאגרי הזרם, בעוד ש-dataSpace מגדיר את המשמעות של הנתונים בתוך המאגר.
עבור רוב הפורמטים, dataSpace מגדיר את מרחב הצבע של נתוני התמונה. בנוסף, עבור פורמטים מסוימים, dataSpace מציין אם מתבקשים נתונים מבוססי תמונה או עומק. ראה system/core/include/system/graphics.h לפרטים על פורמטים וערכי DataSpace חוקיים עבור כל פורמט.
מידע על הגרסה:
< CAMERA_DEVICE_API_VERSION_3_3:
לא מוגדר ואין לגשת אליו. יש להניח ש-dataSpace הוא HAL_DATASPACE_UNKNOWN, ויש לקבוע את מרחב הצבע המתאים וכו' על פי דגלי השימוש והפורמט.
= CAMERA_DEVICE_API_VERSION_3_3:
תמיד מוגדר על ידי שירות המצלמה. HAL חייבת להשתמש ב-dataSpace זה כדי להגדיר את הזרם למרחב הצבעים הנכון, או כדי לבחור בין פלטי צבע ועומק אם הוא נתמך. ערכי מרחב הנתונים הם ההגדרות מדור קודם ב-graphics.h
>= CAMERA_DEVICE_API_VERSION_3_4:
תמיד מוגדר על ידי שירות המצלמה. HAL חייבת להשתמש ב-dataSpace זה כדי להגדיר את הזרם למרחב הצבעים הנכון, או כדי לבחור בין פלטי צבע ועומק אם הוא נתמך. ערכי מרחב הנתונים נקבעים באמצעות הגדרות מרחב הנתונים V0 ב-graphics.h
פורמט int |
פורמט הפיקסלים למאגרים בזרם זה. פורמט הוא ערך מרשימת HAL_PIXEL_FORMAT_* ב-system/core/include/system/graphics.h, או מכותרות ספציפיות למכשיר.
אם נעשה שימוש ב-HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, מודול הפלטפורמה gralloc יבחר פורמט המבוסס על דגלי השימוש שסופקו על ידי התקן המצלמה ונקודת הקצה השנייה של הזרם.
<= CAMERA_DEVICE_API_VERSION_3_1:
התקן HAL של המצלמה חייב לבדוק את המאגרים שנמסרו לו בקריאה הבאה register_stream_buffers() כדי לקבל את פרטי הפורמט הספציפי למימוש, במידת הצורך.
>= CAMERA_DEVICE_API_VERSION_3_2:
register_stream_buffers() לא ייקרא על ידי המסגרת, כך שה-HAL צריך להגדיר את צינור ה-ISP והחיישנים בהתבסס אך ורק על הגדלים, דגלי השימוש והפורמטים עבור הזרמים המוגדרים.
uint32_t max_buffers |
בטל* priv |
סיבוב int |
סיבוב הפלט הנדרש של הזרם, אחד מערכי camera3_stream_rotation_t. זה חייב להיבדק על ידי HAL יחד עם רוחב וגובה הנחל. לדוגמה, אם הסיבוב הוא 90 מעלות ורוחב וגובה הזרם הם 720 ו-1280 בהתאמה, שירות המצלמה יספק מאגרים בגודל 720x1280, ו-HAL אמור לצלם תמונה בגודל 1280x720 ולסובב את התמונה ב-90 מעלות נגד כיוון השעון. שדה הסיבוב אינו פועל כאשר סוג הזרם מוקלט. המצלמה HAL חייבת להתעלם משדה הסיבוב עבור זרם קלט.
<= CAMERA_DEVICE_API_VERSION_3_2:
לא מוגדר ואין לגשת אליו. אסור להחיל HAL כל סיבוב על תמונות פלט.
>= CAMERA_DEVICE_API_VERSION_3_3:
תמיד מוגדר על ידי שירות המצלמה. HAL חייב לבדוק את השדה הזה במהלך תצורת הזרם ולהחזיר -EINVAL אם HAL לא יכול לבצע סיבוב כזה. HAL חייבת תמיד לתמוך ב-CAMERA3_STREAM_ROTATION_0, כך שקריאת configure_streams() אינה חייבת להיכשל עבור סיבוב לא נתמך אם שדה הסיבוב של כל הזרמים הוא CAMERA3_STREAM_ROTATION_0.
שימוש uint32_t |
דגלי השימוש ב-gralloc עבור זרם זה, לפי הצורך של ה-HAL. דגלי השימוש מוגדרים ב- gralloc.h (GRALLOC_USAGE_*), או בכותרות ספציפיות למכשיר.
עבור זרמי פלט, אלו הם דגלי השימוש של היצרן של HAL. עבור זרמי קלט, אלו הם דגלי השימוש לצרכן של HAL. דגלי השימוש של היצרן והצרכן ישולבו יחד ולאחר מכן יועברו למודול הפלטפורמה gralloc HAL להקצאת מאגרי gralloc לכל זרם.
מידע על הגרסה:
== CAMERA_DEVICE_API_VERSION_3_0:
אין ערך התחלתי מובטח כאשר מועבר דרך configure_streams(). HAL לא יכול להשתמש בשדה זה כקלט, ועליו לכתוב מעל שדה זה עם דגלי השימוש שלו.
>= CAMERA_DEVICE_API_VERSION_3_1:
עבור stream_type OUTPUT ו-BIDIRECTIONAL, כאשר מועברים דרך configure_streams(), הערך ההתחלתי של זה הוא דגלי השימוש של הצרכן. ה-HAL עשוי להשתמש בדגלי הצרכן הללו כדי להחליט על תצורת הזרם. עבור stream_type INPUT, כאשר הוא מועבר דרך configure_streams(), הערך ההתחלתי של זה הוא 0. עבור כל הזרמים המועברים באמצעות configure_streams(), ה-HAL חייב לכתוב מעל שדה זה עם דגלי השימוש שלו.
התיעוד עבור מבנה זה נוצר מהקובץ הבא:
- hardware/libhardware/include/hardware/ camera3.h