תצורות זרם

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

יישום התייחסות

יש הטמעת הפניה בצד הספק של זרמי התצורה המומלצים ושל ה-API לשאילתה של תכונות שילוב זרם. אתה יכול למצוא יישום זה ב- QCamera3HWI.cpp

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

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

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

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

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

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

יישום

בצע את השלבים הבאים כדי ליישם תכונה זו.

ערכי מטא נתונים

כדי להפעיל תכונה זו, המצלמה HAL חייבת לאכלס את ערכי המטא נתונים הסטטיים הבאים:

  • android.scaler.availableRecommendedStreamConfigurations : קבוצת המשנה המומלצת של תצורות זרם למקרי שימוש ספציפיים. ההצהרה משתמשת במפות סיביות פשוטות המציינות את מקרי השימוש המוצעים בצורה של [1 << PREVIEW | 1 << RECORD..] . מקרי השימוש מרחיבים את הטפול הרגיל (פורמט, רוחב, גובה, קלט) עם כניסה אחת נוספת. מקרי שימוש ציבורי לא קיימים או כל סיביות אחרות שהוגדרו בטווח [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 תמונת מצב של וידאו חייבת לכלול תצורות זרם גדולות לפחות כמו רזולוציות ה-RECORD המקסימליות ורק עם שילוב פורמט BLOB + DATASPACE_JFIF/מרחב נתונים (JPEG). התצורות לא אמורות לגרום לתקלות בתצוגה מקדימה וצריכות להיות מסוגלות לפעול במהירות של 30 פריימים לשנייה.
SNAPSHOT תצורות זרם Snapshot חייבות לכלול לפחות אחת בגודל הקרוב ל- android.sensor.info.activeArraySize עם השילוב של פורמט BLOB + DATASPACE_JFIF/מרחב נתונים (JPEG). בהתחשב בהגבלות על יחס גובה-רוחב, יישור והגבלות אחרות ספציפיות לספק, שטח הגודל המרבי המוצע לא צריך להיות פחות מ-97% משטח גודל מערך החיישנים.
ZSL (אם נתמך) אם נתמך על ידי התקן המצלמה, תצורות זרם קלט מומלצות חייבות להתפרסם רק יחד עם פורמטים אחרים של פלט מעובדים או נתקעים.
RAW (אם נתמך) אם נתמך על ידי התקן המצלמה, תצורות זרם גולמיות מומלצות חייבות לכלול רק פורמטי פלט מבוססי RAW.

מקרי שימוש אחרים

אתה יכול לספק זרמי תצורה מומלצים נוספים למקרי שימוש ספציפיים ליישום שלך.

מַתַן תוֹקֵף

כדי לבדוק את היישום שלך של זרמי התצורה המומלצים, הפעל את בדיקות ה-CTS וה-VTS הבאות:

API לשאילתות על שילובי זרמים

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

תכונה זו גם מאפשרת ללקוחות מצלמה לקבל רשימה של שילובי זרמים המורכבים בהתאם להנחיות עבור CameraDevice ורמת ה-HW הנתמכת. בדיקות CTS זמינות כדי לאכוף את נכונות תוצאות השאילתה ככל האפשר המכסות תת-קבוצה מינורית של שילובי הזרמים הנפוצים ביותר.

אתה יכול לבחור לתמוך בתכונה זו על ידי הטמעת קריאת HIDL API נוספת אחת ב- Camera HAL.

יישום

כדי לתמוך ב-API לשאילתות שילובי זרם, המצלמה HAL חייבת לספק יישום לממשק isStreamCombinationSupported HIDL API. ממשק זה בודק אם התקן המצלמה תומך בשילוב זרם מצלמה שצוין.

כאשר קוראים, ה-API חייב להחזיר אחד מקודי המצב הבאים:

  • OK : שאילתת שילוב הזרם הצליחה.
  • METHOD_NOT_SUPPORTED : התקן המצלמה אינו תומך בשאילתת שילוב הזרם.
  • INTERNAL_ERROR : שאילתת שילוב הזרם אינה יכולה להשלים עקב שגיאה פנימית.

ה-API מחזיר אמת אם שילוב הזרם נתמך. אחרת, הוא מחזיר false.

המסגרת משתמשת ב-API הציבורי isSessionConfigurationSupported כדי לבדוק אם תצורת ההפעלה הספציפית נתמכת על ידי התקן המצלמה.

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

מַתַן תוֹקֵף

כדי לאמת תכונה זו, הפעל את מקרי הבדיקה הבאים של CTS ו-VTS של המצלמה:

מודולי CTS של מצלמה:

מצלמה VTS:

VtsHalCameraProviderV2_4TargetTest.cpp