ตั้งแต่ 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ตัวเข้ารหัส SoC ต้องปัดเศษค่าเฉลี่ยของ QP ของบล็อกเป็นจำนวนเต็มที่ใกล้เคียงที่สุดก่อนที่จะส่งไปยัง Codec 2.0
ระบบจะคำนวณค่าเฉลี่ยจากระนาบความสว่างเท่านั้น
ตัวเข้ารหัส SoC ต้องแสดงผล
INT_MAXหากบล็อกทั้งหมดในเฟรมปัจจุบันอยู่ในโหมดข้าม เงื่อนไขนี้จะเกิดขึ้นเมื่อไม่มีการเข้ารหัสสัมประสิทธิ์และไม่มีการเข้ารหัสข้อมูล QP ที่สำคัญในเฟรม
KEY_PICTURE_TYPEอธิบายประเภทรูปภาพของเฟรมที่เข้ารหัสเป็นPICTURE_TYPE_I,PICTURE_TYPE_P,PICTURE_TYPE_B, หรือPICTURE_TYPE_UNKNOWNKEY_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 จะเรียกใช้การเข้ารหัสวิดีโออินพุตเดียวกัน 2 รายการ รายการหนึ่งมี
บิตเรตสูงกว่า และอีกรายการหนึ่งมีบิตเรตต่ำกว่า จากนั้น CTS จะเปรียบเทียบค่า QP เฉลี่ยที่ส่งออก 2 ค่าจากการเข้ารหัส 2 รายการ หาก QP เฉลี่ยจากการเข้ารหัสที่มีบิตเรตต่ำกว่าสูงกว่า QP เฉลี่ยจากการเข้ารหัสที่มีบิตเรตสูงกว่า CTS จะผ่าน
หากต้องการตรวจสอบการปิดฟีเจอร์การส่งออกสถิติการเข้ารหัสวิดีโอเมื่อเปิดใช้ ให้ใช้คีย์ VIDEO_ENCODING_STATISTICS_LEVEL_NONE ดังนี้
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);