ייצוא נתוני סטטיסטיקה של קידוד וידאו

החל מ-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_AVERAGE key:

    • מקודד ה-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 מתאר את רמת המידע של נתונים סטטיסטיים על קידוד שמופק ממקודד הווידאו, באופן הבא:

לדוגמה להטמעה, אפשר לעיין במאמר VideoEncodingStatisticsTest.

אימות

מריצים את בדיקת ה-CTS‏ VideoEncodingStatisticsTest כדי לוודא שהחלק הממוצע של QP בסטטיסטיקות של קידוד הווידאו פועל בצורה תקינה: מערכת ה-CTS מריצה שני קידודים של אותו סרטון קלט, אחד עם קצב העברת נתונים גבוה יותר ואחד עם קצב העברת נתונים נמוך יותר. לאחר מכן, מערכת CTS משווה בין שני ערכי QP הממוצעים שיוצאו משני הקידודים. אם איכות התמונה הממוצעת מהקידוד עם קצב העברת הנתונים הנמוך יותר גבוהה יותר מאיכות התמונה הממוצעת מהקידוד עם קצב העברת הנתונים הגבוה יותר, הבדיקה עוברת.

כדי לוודא שהשבתתם את התכונה של ייצוא נתוני קידוד הווידאו כשהיא מופעלת, משתמשים במקש VIDEO_ENCODING_STATISTICS_LEVEL_NONE באופן הבא:

format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);