עזרה בנושא המבנה camera3_stream

עזרה בנושא המבנה camera3_stream

#include < camera3.h >

שדות נתונים

int  stream_type
 
uint32_t  width
 
uint32_t  height
 
int  format
 
uint32_t  שימוש
 
uint32_t  max_buffers
 
void *  priv
 
android_dataspace_t  data_space
 
int  rotation
 
void *  reserved [7]
 

תיאור מפורט

camera3_stream_t:

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

ה-framework הוא הבעלים של מבני הסטרימינג, אבל הפונקציה configure_streams() מעבירה את ההפניות ל- camera3_stream ל-HAL, והן תקפות עד לסיום הקריאה הראשונה הבאה של 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). אפשר לעיין בשדה השימוש בהמשך.

ההגדרה מופיעה בשורה 1523 בקובץ camera3.h .

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

android_dataspace_t data_space

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

ברוב הפורמטים, המאפיין dataSpace מגדיר את מרחב הצבעים של נתוני התמונה. בנוסף, בפורמטים מסוימים, dataSpace מציין אם מתבקש נתון שמבוסס על תמונה או על עומק. פרטים על הפורמטים ועל הערכים התקינים של dataSpace לכל פורמט מופיעים בקובץ system/core/include/system/graphics.h.

פרטי הגרסה:

< CAMERA_DEVICE_API_VERSION_3_3:

לא מוגדר ואין לגשת אליו. צריך להניח ש-dataSpace הוא HAL_DATASPACE_UNKNOWN, ומרחב הצבעים המתאים וכו' צריכים להיקבע לפי דגלי השימוש והפורמט.

‎= CAMERA_DEVICE_API_VERSION_3_3:‎

תמיד מוגדרת על ידי שירות המצלמה. HAL חייב להשתמש במרחב הנתונים הזה כדי להגדיר את השידור למרחב הצבעים הנכון, או כדי לבחור בין פלט צבע ופלט עומק, אם יש תמיכה בכך. הערכים של מרחב הנתונים הם ההגדרות הקודמות בקובץ graphics.h

>= CAMERA_DEVICE_API_VERSION_3_4:

תמיד מוגדרת על ידי שירות המצלמה. HAL חייב להשתמש במרחב הנתונים הזה כדי להגדיר את השידור למרחב הצבעים הנכון, או כדי לבחור בין פלט צבע ופלט עומק, אם יש תמיכה בכך. הערכים של מרחב הנתונים מוגדרים באמצעות הגדרות מרחב הנתונים של V0 בקובץ graphics.h

ההגדרה מופיעה בשורה 1648 בקובץ camera3.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 והחיישן על סמך הגדלים, דגלי השימוש והפורמטים של הזרמים שהוגדרו.

ההגדרה נמצאת בשורה 1565 בקובץ camera3.h .

uint32_t height

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

ההגדרה מופיעה בשורה 1542 בקובץ camera3.h .

uint32_t max_buffers

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

ההגדרה מופיעה בשורה 1608 בקובץ camera3.h .

void* priv

מידע פרטי של HAL לגבי הסטרימינג. לא ייבדקו על ידי קוד המסגרת.

ההגדרה נמצאת בשורה 1614 בקובץ camera3.h .

void* reserved[7]

ההגדרה מופיעה בשורה 1677 בקובץ camera3.h .

רוטציית int

סיבוב הפלט הנדרש של הסטרימינג, אחד מהערכים של camera3_stream_rotation_t. HAL צריך לבדוק את זה יחד עם רוחב ועומק הזרם. לדוגמה, אם הזווית של הסיבוב היא 90 מעלות והרוחב והגובה של הסטרימינג הם 720 ו-1,280 בהתאמה, שירות המצלמה יספק מאגרים בגודל 720x1,280, ו-HAL צריך לצלם תמונה בגודל 1,280x720 ולסובב את התמונה ב-90 מעלות נגד כיוון השעון. שדה הסיבוב לא פועל כשסוג הסטרימינג הוא קלט. Camera 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.

ההגדרה מופיעה בשורה 1674 בקובץ camera3.h .

int stream_type

סוג הסטרימינג, אחד מהערכים של camera3_stream_type_t.

ההגדרה מופיעה בשורה 1532 בקובץ camera3.h .

שימוש ב-uint32_t

דגלי השימוש של gralloc לזרם הזה, לפי הצורך של HAL. דגלים של שימוש מוגדרים ב- gralloc.h (GRALLOC_USAGE_*), או בכותרות ספציפיות למכשיר.

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

ההגדרה מופיעה בשורה 1601 בקובץ camera3.h .

רוחב uint32_t

רוחב המאגרים בשידור הזה, בפיקסלים

ההגדרה מופיעה בשורה 1537 בקובץ camera3.h .


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