ส่งออกสถิติการเข้ารหัสวิดีโอ

ตั้งแต่ 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_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 รันการเข้ารหัสวิดีโออินพุตเดียวกัน 2 รายการ รายการหนึ่งมีบิตเรตสูงกว่า และอีกรายการใช้บิตเรตต่ำกว่า จากนั้น CTS จะเปรียบเทียบค่า QP เฉลี่ยที่ส่งออกทั้งสองค่าจากการเข้ารหัสทั้งสองรายการ หาก QP เฉลี่ยจากการเข้ารหัสด้วยบิตเรตต่ำกว่าสูงกว่า QP เฉลี่ยจากการเข้ารหัสด้วยบิตเรตที่สูงกว่า CTS จะผ่านไป

หากต้องการตรวจสอบการปิดคุณลักษณะสถิติการเข้ารหัสวิดีโอการส่งออกเมื่อเปิดใช้งาน ให้ใช้คีย์ VIDEO_ENCODING_STATISTICS_LEVEL_NONE ดังต่อไปนี้:

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