החל מ-Android 13, לקוחות אפליקציות יכולים לבקש ממקודד הווידאו לייצא נתונים סטטיסטיים של קידוד לכל פריים וידאו מקודד. ב- את הנתונים הסטטיסטיים שמתקבלים ממקודד הווידאו, האפליקציות יכולות לבצע אופטימיזציה של הסרטונים משימות קידוד כגון קידוד Multipass ועיבוד מראש של פריימים לפני באמצעות הקידוד.
כדי לייצא נתונים סטטיסטיים של קידוד וידאו, ספקי SoC צריכים לשנות את מנהל ההתקן של מקודד הווידאו, כפי שמתואר בקטע עדכונים למנהל ההתקן של מקודד הווידאו.
נתונים סטטיסטיים של קידוד וידאו
ב-Android 13, מקודד הווידאו מייצא נתונים סטטיסטיים כפי שמתואר בטבלה הבאה.
השם של הנתונים הסטטיסטיים של המקודד | תיאור |
---|---|
QP ממוצע של בלוקים לכל מסגרת | הממוצע של כל ה-QP של הבלוקים במסגרת הווידאו שמקודדים ל-bitstream |
סוג תמונה | סוג I או P או B |
מפתחים יכולים לאחזר נתונים סטטיסטיים לכל פריים באמצעות הכיתה למפתחים 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
להטמעת קובץ עזר.
אימות
להריץ את VideoEncodingStatisticsTest
בדיקת CTS כדי לאמת שה-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);