מערכת Android כוללת תכונות שמאפשרות ללקוחות מצלמה לבחור את שידורי המצלמה האופטימליים לתרחישי שימוש ספציפיים, ולוודא ששילוב מסוים של שידורים נתמך במכשיר המצלמה. הגדרה של מקור נתונים מתייחסת הסטרימינג במצלמה שהוגדר במכשיר המצלמה ושילוב של סטרימינג מתייחס לקבוצת סטרימינג אחת או יותר שהוגדרה במכשיר המצלמה. למידע נוסף על של התכונות האלה, ההגדרות המומלצות של השידורים API לשליחת שאילתות לגבי שילובי תכונות.
הטמעת קובצי עזר
יש הטמעה של הפניה של הבעלים של השירות של מקורות הנתונים המומלצים וה-API לשליחת שאילתות לגבי תכונות שילוב של מקורות נתונים. אפשר למצוא כאן בזמן QCamera3HWI.cpp
הגדרות מומלצות לשידור
ספקי מצלמות יכולים לפרסם הגדרות סטרימינג מומלצות לשימוש ספציפי עבור לקוחות של מצלמות. הגדרות הסטרימינג המומלצות האלה, שהן קבוצות משנה של StreamConfigurationMap, יכולות לעזור ללקוחות המצלמה לבחור את ההגדרות האופטימליות.
למרות StreamConfigurationMap שמספק מידע מקיף על תצורת השידור ללקוחות של מצלמות, לא מספק מידע על היעילות, ההספק או הביצועים ההשפעה של בחירת שידור אחד על פני אחר. לקוחות המצלמה יכולים לבחור באופן חופשי מבין כל הגדרות הסטרימינג האפשריות, אבל במקרים רבים הדבר מוביל ללקוחות שמשתמשים בהגדרות מצלמה לא אופטימליות, ואפליקציות שמבצעות חיפושים מקיפים שגוזלים זמן רב.
לדוגמה, יש צורך בפורמטים מסוימים של YUV מעובד, וצריך שתהיה תמיכה בהם, אבל יכול להיות שלמצלמה לא תהיה תמיכה מובנית בפורמטים האלה. כתוצאה מכך, נדרש עוד שלב עיבוד להמרת הפורמט, והיעילות יורדת. הגודל ויחס הגובה-רוחב המתאימים יכולים להיות גם בעלי מאפיינים דומים השפעה על הפיכת מאפיינים מסוימים לעדיפים מבחינת עוצמה או של ביצועים.
המפות המומלצות של הגדרות המקור לא חייבות להיות מפורטות כמו StreamConfigurationMap. מפות ההגדרות המוצעות חייבות לעמוד בדרישות שמפורטות בקטע הטמעה, והן יכולות לכלול את כל הפורמטים, הגדלים או הערכים האחרים שזמינים ב-StreamConfigurationMap. אי אפשר לכלול במפות ההגדרה המומלצות של הסטרימינג פורמטים, גדלים או ערכים אחרים מוסתרים שלא מופיעים ב-StreamConfigurationMap.
כל הבדיקות יישארו ללא שינוי ולא יתרככו בהתאם להגדרות המומלצות של הסטרימינג.
ההגדרות המומלצות של הסטרימינג בהטמעת המצלמה הן אופציונלי ולקוח המצלמה יכול להתעלם מהן.
הטמעה
כדי להטמיע את התכונה הזו, יש לפעול לפי השלבים הבאים.
רשומות של מטא-נתונים
כדי להפעיל את התכונה הזו, ה-HAL של המצלמה צריך לאכלס את רשומות המטא-נתונים הסטטיות הבאות:
android.scaler.availableRecommendedStreamConfigurations
: קבוצת המשנה המומלצת של הגדרות הסטרימינג לתרחישי שימוש ספציפיים. משתמשת במפת סיביות (bitmaps) שמשקפת את התרחישים לדוגמה המוצעים בפורמט של[1 << PREVIEW | 1 << RECORD..]
. תרחישים לדוגמה מוסיפים רשומה נוספת לקבוצת הערכים (tuple) הרגילה (format, width, height, input). תרחישים ציבוריים שאינם קיימים, או ביטים אחרים שהוגדרו בטווח[PUBLIC_END, VENDOR_START]
אסורים.המידע הזה מאוחסן בתג המטא-נתונים
availableRecommendedStreamConfigurations
.בדוגמה הבאה מוצגת מערך של הגדרת סטרימינג מומלצת למכשיר מצלמה שתומך רק ב-4K וב-1080p. שתי הרזולוציות האלה עדיפות לצילום וידאו, אבל מומלץ להשתמש רק ב-1080p בתצוגה המקדימה.
[3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT, (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT), 1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED, ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT, (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT | 1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
android.depth.availableRecommendedDepthStreamConfigurations
(זמין רק אם המכשיר תומך בכך): הגדרות הסטרימינג המומלצות של מרחב הנתונים של עומק התמונה למצלמה הזו. דומה ל- מעל רשומת המטא-נתונים, מפת סיביות נוספת של תרחיש לדוגמה מציינת את במקרים שונים.המידע הזה מאוחסן בתג המטא-נתונים
availableRecommendedInputOutputFormatsMap
.android.scaler.availableRecommendedInputOutputFormatsMap
(זמין רק אם נתמך במכשיר): המיפוי של פורמטים מומלצים של תמונות מוצעים עבור מכשיר המצלמה הזה עבור שידורי קלט, את הפורמטים התואמים של הפלט.המידע הזה מאוחסן בתג המטא-נתונים
availableRecommendedDepthStreamConfigurations
.
המידע הזה זמין ללקוחות המצלמה דרך RecommendedStreamConfigurationMap API.
תרחישים לדוגמה נדרשים
צריך לספק הגדרות מומלצות לשידור עבור התרחישים הבאים, תוך עמידה בדרישות המתאימות:
תרחיש לדוגמה | דרישה |
---|---|
PREVIEW |
התצוגה המקדימה חייבת לכלול רק הגדרות של סטרימינג מעובד ללא השהיה, עם פורמטים של פלט כמו YUV_420_888 ו-IMPLEMENTATION_DEFINED . |
RECORD |
רשומת הווידאו חייבת לכלול הגדרות שידור שתואמות להגדרות שפורסמו
פרופילים של מדיה נתמכים
בפורמט IMPLEMENTATION_DEFINED . |
VIDEO_SNAPSHOT |
קובץ snapshot של וידאו חייב לכלול הגדרות של מקור נתונים (stream) שגדולות לפחות כמו הרזולוציות המקסימליות של ההקלטה, ורק בשילוב של הפורמט/מרחב הנתונים BLOB + DATASPACE_JFIF (JPEG). ההגדרות האישיות לא אמורה לגרום לתקלות בתצוגה המקדימה והיא אמורה להיות מסוגלת לפעול בקצב של 30 FPS. |
SNAPSHOT |
הגדרות של מקור נתונים של קובץ snapshot חייבות לכלול לפחות מקור אחד בגודל קרוב ל-android.sensor.info.activeArraySize עם השילוב של הפורמט/מרחב הנתונים BLOB + DATASPACE_JFIF (JPEG). בהתחשבות
הגבלות על יחס גובה-רוחב, התאמה והגבלות אחרות ספציפיות לספק,
השטח של הגודל המקסימלי המוצע לא יכול להיות קטן מ-97% מהחיישן
של גודל המערך. |
ZSL (אם נתמך) |
אם נתמכות במכשיר המצלמה, ההגדרות המומלצות של מקור הקלט יש לפרסם רק יחד עם פלט אחר מעובד או מושהה פורמטים. |
RAW (אם נתמך) |
אם התכונה נתמכת במכשיר המצלמה, מומלץ להגדיר את הסטרימינג הגולמי חייבת לכלול רק פורמטים של פלט המבוססים על RAW. |
תרחישים אחרים לדוגמה
אתם יכולים לספק עוד מקורות מומלצים להגדרות אישיות לתרחישים לדוגמה ספציפיים להטמעה שלכם.
אימות
כדי לבדוק את ההטמעה של עדכוני ההגדרות המומלצים, מריצים את בדיקות CTS ו-VTS הבאות:
ממשק API לשליחת שאילתות לגבי שילובי פיצ'רים
החל מגרסה 15 של Android, פלטפורמת Android מספקת API לשליחת שאילתות לגבי שילובי תכונות. ממשק ה-API הזה מאפשר ללקוחות מצלמה לבדוק אם המכשיר תומך בשילוב ספציפי של תכונות. ה-API הזה נדרש כי ממשק ה-API של Camera2 בונה תכונות שונות, כגון 4k, 60fps, סרטונים HDR, UltraHDR, זום Ultrawide וייצוב כפקדים אורתוגונליים.
הדרישות
כדי לתמוך ב-API לשליחת שאילתות לגבי שילובי פיצ'רים, תכונת ה-HAL של המצלמה צריכה להטמיע
גרסה 3 של הממשק של ICameraDevice
. פרטים נוספים זמינים בקטע הטמעה.
כשיש תמיכה ב-API, היציבות של התצוגה המקדימה צריכה להיות אורתוגונלית לתכונות אחרות. כלומר, בשביל מכשיר מצלמה שתומך בתצוגה מקדימה
ייצוב, הערך המוחזר של isStreamCombinationWithSettingsSupported
עבור שילוב מסוים חייב להיות אותו הערך כאשר ייצוב התצוגה המקדימה
מופעלת או כבויה. כך אפשר לצמצם את נפח החיפוש לשאילתות על שילוב תכונות.
בנוסף, כדי לעמוד בדרישות של רמת הביצועים 15 של מדיה, המצלמה הראשית האחורית חייבת לתמוך ביציבות התצוגה המקדימה עם תצוגה מקדימה של HLG10 ב-10 ביט לתצוגה מקדימה של 1080p ו-720p ולקובצי JPEG בגודל מקסימלי. פרטים נוספים על הדרישות האלה מופיעים בקטע 2.2.7.2. מצלמה של ה-CDD.
הטמעה
כדי לתמוך ב-API לשליחת שאילתות לגבי שילובי תכונות, צריך להטמיע את הרכיבים הבאים
ממשקי API של שאילתות שילוב פיצ'רים בגרסה 3 של
ICameraDevice
constructDefaultRequestSettings
: יצירת הגדרות ברירת המחדל לסוגCaptureRequest
מסוים. HAL יכול להשתמשICameraDeviceSession::constructDefaultRequestSettings
יישום בפועל.isStreamCombinationWithSettingsSupported
: בדיקה אם המכשיר תומך בשילוב ספציפי של סטרימינג ממצלמה עם פרמטרים של סשן ומפתחותCaptureRequest
נוספים. הפונקציה חייבת להחזיר את הערךtrue
בשילובים נתמכים ואת הערךfalse
בשילובים של תכונות שלא נתמכים. צוות HAL יכול להשתמשisStreamCombinationSupported
יישום והוספה של תמיכה כדי לבדוק את ההגדרות שלCaptureRequest
מועבר ב-sessionParams
.getSessionCharacteristics
: מקבל תמיכה משולב עם הפרמטרים של הסשן, ומחזיר את הפונקציה במאפיינים ספציפיים לסשן.INFO_SESSION_CONFIGURATION_QUERY_VERSION
רשימה של כל הגדרות הסשן הנפוצות. ההגדרות האלה מאומתות באמצעות בדיקות תאימות.
בגרסאות שקודמות לגרסה 3 של הממשק ICameraDevice
, הנחיות HAL
ליישם
isStreamCombinationSupported
.
מידע נוסף על שילובי התכונות שמופקים על ידי ה-API מופיע במסמכי העזרה של sessionConfigurationQueryVersion
ב-system/media/camera/docs/metadata_definitions.xml
.
להטמעה לדוגמה של התכונה הזו, ראו hardware/google/camera/devices/EmulatedCamera/hwl/
.
ממשקי API ציבוריים
אפליקציות יכולות להשתמש בממשקי ה-API הציבוריים הבאים כדי לשלוח שאילתות לגבי שילובי התכונות הנתמכים במכשיר:
CameraDevice.CameraDeviceSetup
: ייצוג מוגבל שלCameraDevice
שאפשר להשתמש בו כדי לשלוח שאילתות לגבי שילובי תכונות בלי צורך במכונה שלCameraDevice
.getCameraDeviceSetup
הפונקציה מקבלת אובייקטCameraDeviceSetup
למזהה מצלמה נתון אםisCameraDeviceSetupSupported
מחזירהtrue
.INFO_SESSION_CONFIGURATION_QUERY_VERSION
: תמיכה בשאילתות של שילובי תכונות אם הערך הזה הואVANILLA_ICE_CREAM
או גבוה ממנו.OutputConfiguration
סיווג שמתאר את הפלט של המצלמה, שיכול להכיל משטח מוגדר מראש של המטרה של שאילתות לשילוב תכונות עם זמן אחזור קצר.SessionConfiguration
מחלקה של שירותים שמתארת את הגדרת הסשן, כולל השידור שילובים ופרמטרים של סשנים, שבהם אפשר להשתמש כדי להציג שאילתות משולבות.
אימות
כדי לאמת את ההטמעה של התכונה הזו, צריך להשתמש ב-VTS, CTS ועוד בדיקות ITS (CTS Verifier) של המצלמה:
VTS
CTS
- cts/tests/camera/src/android/hardware/camera2/cts/FeatureCombinationTest.java
- cts/tests/camera/src/android/hardware/camera2/cts/cameraDeviceSetupTest.java
מצלמה ITS