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

ตั้งแต่ 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

การตรวจสอบ

เรียกใช้การทดสอบ 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);