התכונה 'פרמטרים של סשן' מפחיתה את העיכובים על ידי מתן אפשרות ללקוחות המצלמות לבצע את הפעולות הבאות: להגדיר באופן פעיל את קבוצת המשנה של פרמטרים יקרים של בקשה, כלומר, סשן כחלק משלב האתחול של סשן הצילום. עכשיו אפשר תכונת ה-HAL מקבלת את הפרמטרים של הלקוח במהלך את שלב הגדרת הסטרימינג במקום בבקשת הלכידה הראשונה, ויכול להיות, בהתאם לערכים שלהם, להכין ולפתח את צינור עיבוד הנתונים הפנימי ביעילות רבה יותר.
ב-Android 10, אפשר לשפר את הביצועים באמצעות את תכונת השאילתה האופציונלית להגדרת הפעלה מחדש של הסשן, כדי לקבל יותר שליטה לוגיקת הגדרה מחדש של פרמטר של סשן פנימי. מידע נוסף זמין במאמר הבא: שאילתה להגדרת סשן מחדש.
דוגמאות ומקור
הטמעת פרמטר של סשן הפניה היא כבר חלק cameraHal. ערך HAL הזה משתמש בגרסה הקודמת של Hal API. התוכן המקושר אפליקציית CameraHal שמטמיעה את ממשק ה-API של המצלמה HIDL חייבת להשתמש ב-HIDL המתאים sessionParams כדי לגשת לפרמטרים חדשים של סשן נכנס במהלך הגדרת השידור.
לקוחות המצלמה יכולים לשלוח שאילתות על המקשים של כל הפרמטרים הנתמכים של הסשן באמצעות
getAvailableSessionKeys()
ובסופו של דבר להגדיר את הערכים הראשוניים שלהם
setSessionParameters()
הטמעה
ההטמעה של CameraHal חייבת לאכלס את
ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
במטא-נתונים הסטטיים המתאימים של המצלמה, ומספקים קבוצת משנה של
ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS
,
שמכיל רשימת מפתחות שקשה ליישם בכל פריים,
עלולות לגרום לעיכובים לא צפויים במהלך השינוי של משך החיים של סשן הצילום.
דוגמאות אופייניות כוללות פרמטרים שמחייבים חומרה שצורכת זמן רב. הגדרה מחדש או שינוי בצינור עיבוד הנתונים של המצלמה הפנימית. שליטה בסשן עדיין אפשר להפעיל פרמטרים בבקשות לתיעוד, אבל הלקוחות צריכים להיות מודעים וצפויים עיכובים באפליקציה שלהם.
ה-framework עוקב אחרי כל הבקשות הנכנסות ואם הוא מזהה שינוי של פרמטר סשן, הוא מגדיר מחדש את המצלמה באופן פנימי. הגרסה החדשה הגדרת הסטרימינג שמועברת אל CameraHal כוללת את הסשן המעודכן ערכי פרמטרים שמשמשים להגדרת צינור עיבוד הנתונים של המצלמה ביעילות רבה יותר.
התאמה אישית
ניתן להגדיר תגים ברשימת הפרמטרים הזמינים של הסשן, שמאוכלסת ב- הצד של CameraHal. התכונה הזו לא פעילה אם CameraHal עוזב את רשימת הפרמטרים הזמינים של הסשנים ריקה.
אימות
CTS כולל את המקרים החדשים הבאים של פרמטרים של סשן בדיקה:
CameraDeviceTest#testSessionConfiguration
CameraDeviceTest#testCreateSessionWithParameters
CameraDeviceTest#testSessionParametersStateLeak
NativeCameraDeviceTest#testCameraDevicePreviewWithSessionParameters
באופן כללי, אחרי שפרמטר מסוים נכלל ברשימת המפתחות של הסשנים, הערך הנוכחי נכלל כחלק מהפרמטרים של הסשן שמועברים במהלך השידור בשכבת ה-HAL.
יש לבחור בקפידה את הפרמטרים של הסשן. הערכים לא אמורים להשתנות לעיתים קרובות, אם בכלל, בין תצורות השידור. פרמטרים שמשתנים לעיתים קרובות, כמו תיעוד של כוונה, והם לא מתאימים ומוסיפים אותם רשימת הפרמטרים של הסשנים עלולה לגרום לכשלים ב-CTS בגלל כמות גדולה מדי של פרמטרים פנימיים. הגדרה מחדש.
שאילתה לגבי הגדרה מחדש של הסשן
ב-Android 10 נוסף סשן אופציונלי
הגדרת שאילתה מחדש
שיפור הביצועים בעקבות הגדרות אישיות של השידור, שנובעות מסשן
שינויים בערכי פרמטרים עלולים לפגוע בביצועים. כדי לטפל בבעיה הזו,
hiDL
ICameraDeviceSession
גרסה 3.5 ומעלה תומכת
isReconfigurationRequired
השיטה הזו, שמספקת שליטה פרטנית על פרמטר הסשן הפנימי.
לוגיקת ההגדרות האישיות. בשיטה הזו אפשר להגדיר מחדש את השידור
בדיוק כשהדבר נדרש.
הארגומנטים של isReconfigurationRequired
מספקים את המידע הנדרש לגבי כל פרמטר של סשן בהמתנה
שמאפשר לבצע סוגים שונים של התאמות אישיות שספציפיות למכשיר.
התכונה הזו מוטמעת רק בשירות המצלמה ובמצלמה עם HAL. יש אין ממשקי API שמיועדים לציבור. אם התכונה הזו מוטמעת, לקוחות המצלמה צריכים לראות שיפורי ביצועים כשעובדים עם פרמטרים של סשנים.
הטמעה
כדי לתמוך בשאילתות לגבי הגדרות אישיות של סשנים, עליכם להטמיע את
isReconfigurationRequired
כדי לבדוק אם נדרשת הגדרה מלאה של השידור
בערכי הפרמטרים של סשן.
אם הלקוח משנה את הערך של פרמטר סשן שפורסם, המצלמה
תוכנת framework קוראת ל-isReconfigurationRequired
. בהתאם לערכים הספציפיים, תקן HAL קובע אם
נדרשת הגדרה מחדש של השידור. אם HAL מחזיר false
, המצלמה
framework מדלג על ההגדרה הפנימית. אם ה-HAL מחזיר true
, הפונקציה
framework מגדיר מחדש את השידורים ומעביר את ערכי הפרמטרים של הסשנים החדשים
בהתאם.
ל-framework אפשר לקרוא ל-method isReconfigurationRequired
בשלב מסוים
לפני שבקשה עם פרמטרים חדשים נשלחת ל-HAL, והבקשה
לפני שליחתה. לכן, חל איסור על שימוש
כדי לשנות את ההתנהגות שלה באופן כלשהו.
הטמעת תקן HAL צריכה לעמוד בדרישות הבאות:
- ל-framework צריכה להיות אפשרות לקרוא ל-method
isReconfigurationRequired
בכל שלב אחרי הגדרת הסשן הפעיל. - לא צריכה להיות השפעה על הביצועים של בקשות בהמתנה למצלמה. לחשבון במיוחד, אסור שיהיו תקלות או עיכובים במהלך שימוש במצלמה רגילה בסטרימינג.
המכשיר והטמעת תקן HAL צריכים לעמוד בדרישות הביצועים הבאות דרישות:
- אין לשנות את הגדרות המצלמה של החומרה והתוכנה.
- אסור שמשתמשים יוכלו לראות את ביצועי המצלמה.
isReconfigurationRequired
הפונקציה לוקחת את הארגומנטים הבאים:
oldSessionParams
: פרמטרים של סשן מהסשן הקודם. בדרך כלל הפרמטרים הקיימים של הסשן.newSessionParams
: פרמטרים חדשים של סשן המוגדרים על ידי הלקוח.
קודי הסטטוס הצפויים של ההחזרה הם:
OK
: השאילתה שנדרשת להגדרה מחדש הושלמה.METHOD_NOT_SUPPORTED
: המצלמה במכשיר לא תומכת שאילתה בנושא הגדרה מחדש.INTERNAL_ERROR
: לא ניתן להשלים את שאילתת ההגדרה מחדש בגלל שגיאה פנימית.
הערכים המוחזרים הם:
true
: נדרשת הגדרה מחדש של מקור הנתונים.false
: אין צורך להגדיר מחדש את הסטרימינג.
כדי להתעלם משאילתה לגבי שינוי הגדרת הסשן, רכיב ה-HAL מחזיר
METHOD_NOT_SUPPORTED
או false
. התוצאה תהיה שירות המצלמה שמוגדר כברירת מחדל
התנהגות שבה ההגדרה מחדש של השידור מופעלת לכל פרמטר של סשן
שינוי.
אימות
ניתן לאמת את תכונת השאילתה לשינוי ההגדרות של הסשן באמצעות בדיקת VTS
גודל אות
CameraHidlTest#configureStreamsWithSessionParameters