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

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

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

נתונים סטטיסטיים של קידוד וידאו

ב-Android 13, מקודד הווידאו מייצא נתונים סטטיסטיים כפי שמוצג בטבלה הבאה.

שם הנתונים הסטטיסטיים של המקודד תיאור
QP ממוצע של בלוקים לכל מסגרת הממוצע של כל ה-QP של הבלוקים במסגרת הווידאו שמקודדים ל-bitstream
סוג התמונה סוג I או P או B

מפתחים יכולים לאחזר נתונים סטטיסטיים לכל פריים באמצעות ה-class למפתחים MediaFormat.

עדכונים במנהל ההתקן של מקודד הווידאו

כדי לתמוך בייצוא של נתונים סטטיסטיים של קידוד וידאו, ספקי SoC צריכים לשנות את מנהל ההתקן של מקודד הווידאו. המפתחות הבאים נוספים בבסיס Codec 2.0 ב-Android 13:

  • KEY_VIDEO_QP_AVERAGE מתאר את הערך הממוצע של QP בבלוק לכל פריים.

    הכללים הבאים חלים על ההטמעה של המפתח KEY_VIDEO_QP_AVERAGE:

    • לפני שהוא פולט ל-Codec 2.0, מקודד ה-SoC צריך לעגל את הממוצע של רכיבי ה-QP של הבלוקים למספר השלם הקרוב ביותר.

    • הערך הממוצע מחושב רק ממישור לומה.

    • אם כל הבלוקים במסגרת הנוכחית נמצאים במצב דילג, מקודד ה-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 שיוצאו משני הקידודים. אם ה-QP הממוצע מהקידוד עם קצב הנתונים הנמוך יותר גבוה מה-QP הממוצע מהקידוד עם קצב הנתונים הגבוה יותר, הבדיקה CTS עוברת.

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

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