החל מ-Android 13, לקוחות אפליקציות יכולים לבקש ממקודד הווידאו לייצא נתונים סטטיסטיים של קידוד לכל פריים וידאו מקודד. בעזרת הנתונים הסטטיסטיים שמתקבלים ממקודד הווידאו, האפליקציות יכולות לבצע אופטימיזציה של משימות קידוד הווידאו שלהן, כמו קידוד בכמה שלבים ועיבוד מקדים של פריים לפני קידוד.
כדי לייצא נתונים סטטיסטיים של קידוד וידאו, ספקי SoC צריכים לשנות את מנהל ההתקן של מקודד הווידאו, כפי שמתואר בקטע עדכונים למנהל ההתקן של מקודד הווידאו.
נתונים סטטיסטיים של קידוד וידאו
ב-Android 13, מקודד הווידאו מייצא נתונים סטטיסטיים כפי שמתואר בטבלה הבאה.
השם של הנתונים הסטטיסטיים של המקודד | תיאור |
---|---|
QP ממוצע של בלוק לכל פריים | הממוצע של כל ערכי ה-QP של הבלוק בפריים של הסרטון שמקודדים בזרם הביט |
סוג התמונה | סוג I או P או B |
מפתחים יכולים לאחזר נתונים סטטיסטיים לכל פריים באמצעות ה-class למפתחים MediaFormat
.
עדכונים במנהל ההתקן של מקודד הווידאו
כדי לתמוך בייצוא של נתונים סטטיסטיים של קידוד וידאו, ספקי SoC צריכים לשנות את מנהל ההתקן של מקודד הווידאו. המפתחות הבאים נוספו בבסיס של Codec 2.0 ב-Android 13:
KEY_VIDEO_QP_AVERAGE
מתאר את הערך הממוצע של QP בבלוק לכל פריים.הכללים הבאים חלים על ההטמעה של המפתח
KEY_VIDEO_QP_AVERAGE
:מקודד ה-SoC צריך לעגל את הממוצע של ערכי ה-QP של הבלוק ל-integer הקרוב ביותר לפני שהוא פולט ל-Codec 2.0.
הערך הממוצע מחושב רק ממישור לומינסנציה.
מקודד ה-SoC חייב להחזיר את הערך
INT_MAX
אם כל הבלוקים בפריים הנוכחי נמצאים במצב דילוג. התנאי הזה מתקיים כשלא מתבצעת קידוד של גורמים ולא מתבצעת קידוד של פרטי QP משמעותיים בפריים.
KEY_PICTURE_TYPE
מתאר את סוג התמונה של הפריים המקודד בתורPICTURE_TYPE_I
,PICTURE_TYPE_P
,PICTURE_TYPE_B
אוPICTURE_TYPE_UNKNOWN
.KEY_VIDEO_ENCODING_STATISTICS_LEVEL
מתאר את רמת המידע על נתונים סטטיסטיים של קידוד שמשודר מהמקודד של הסרטון, באופן הבא:אם המקודד לא יוצר מידע על נתונים סטטיסטיים של קידוד, המפתח הזה מוגדר לערך
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
.כשהמקודד יוצר את
KEY_VIDEO_QP_AVERAGE
ו-KEY_PICTURE_TYPE
לכל פריים, המפתח הזה מוגדר ל-VIDEO_ENCODING_STATISTICS_LEVEL_1
.
להטמעה לדוגמה, עיינו במאמר VideoEncodingStatisticsTest
.
אימות
מריצים את בדיקת CTS VideoEncodingStatisticsTest
כדי לוודא שחלק ה-QP הממוצע של הנתונים הסטטיסטיים של קידוד הווידאו פועל בצורה תקינה: בדיקת CTS מפעילה שני קידודים של אותו סרטון קלט, אחד עם קצב נתונים גבוה יותר והשני עם קצב נתונים נמוך יותר. לאחר מכן, CTS משווה בין שני הערכים הממוצעים של QP שיוצאו משני הקידודים. אם ה-QP הממוצע מהקידוד עם קצב הנתונים הנמוך יותר גבוה מה-QP הממוצע מהקידוד עם קצב הנתונים הגבוה יותר, הבדיקה CTS עוברת.
כדי לאמת את השבתת התכונה של ייצוא סטטיסטיקות קידוד הווידאו כשהיא מופעלת, משתמשים במפתח VIDEO_ENCODING_STATISTICS_LEVEL_NONE
באופן הבא:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);