החל מ-Android 13, לקוחות של אפליקציות יכולים לבקש ממקודד הווידאו לייצא נתונים סטטיסטיים של קידוד לכל פריים מקודד של וידאו. באמצעות הנתונים הסטטיסטיים שמתקבלים ממקודד הווידאו, אפליקציות יכולות לבצע אופטימיזציה של משימות קידוד הווידאו שלהן, כמו קידוד מרובה מעברים ועיבוד מקדים של פריימים לפני הקידוד.
כדי לייצא נתונים סטטיסטיים של קידוד וידאו, ספקי SoC צריכים לשנות את מנהל ההתקן של מקודד הווידאו, כמו שמתואר במאמר עדכונים במנהל ההתקן של מקודד הווידאו.
נתונים סטטיסטיים של קידוד וידאו
ב-Android 13, מקודד הווידאו מייצא נתונים סטטיסטיים כמו שמוצג בטבלה הבאה.
| שם נתוני הסטטיסטיקה של המקודד | תיאור |
|---|---|
| ממוצע QP של בלוק לכל פריים | הערך הממוצע של כל ערכי QP של בלוקים בפריים של הסרטון שמקודדים לזרם הביטים |
| סוג התמונה | מקלידים I, P או B |
מפתחים יכולים לאחזר נתונים סטטיסטיים של כל פריים באמצעות מחלקת המפתחים MediaFormat.
עדכונים במנהל ההתקן של מקודד הווידאו
כדי לתמוך בייצוא של נתונים סטטיסטיים על קידוד וידאו, ספקי SoC צריכים לשנות את מנהל ההתקן של מקודד הווידאו. המפתחות הבאים נוספים בבסיס Codec 2.0 ב-Android 13:
KEY_VIDEO_QP_AVERAGEמתאר את ממוצע ה-QP של הבלוק לכל פריים.הכללים הבאים חלים על ההטמעה של
KEY_VIDEO_QP_AVERAGEkey:מקודד ה-SoC צריך לעגל את הממוצע של ערכי QP של הבלוק למספר השלם הקרוב ביותר לפני שהוא משדר ל-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 הממוצע מהקידוד עם קצב העברת הנתונים הגבוה יותר, הבדיקה עוברת.
כדי לוודא שהשבתתם את התכונה של ייצוא נתוני קידוד הווידאו כשהיא מופעלת, משתמשים במקש VIDEO_ENCODING_STATISTICS_LEVEL_NONE באופן הבא:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);