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

ตั้งแต่ Android 13 เป็นต้นไป ลูกค้าแอปจะขอให้โปรแกรมเปลี่ยนไฟล์วิดีโอส่งออกสถิติการเข้ารหัสสำหรับเฟรมวิดีโอที่เข้ารหัสแต่ละเฟรมได้ สถิติที่ได้จากผู้เข้ารหัสวิดีโอจะช่วยให้แอปเพิ่มประสิทธิภาพงานการเข้ารหัสวิดีโอได้ เช่น การเข้ารหัสแบบหลายรอบและการประมวลผลเฟรมก่อนการเข้ารหัส

ผู้ให้บริการ SoC ต้องเปลี่ยนไดรเวอร์โปรแกรมเปลี่ยนไฟล์วิดีโอตามที่อธิบายไว้ในการอัปเดตไดรเวอร์โปรแกรมเปลี่ยนไฟล์วิดีโอเพื่อส่งออกสถิติการเข้ารหัสวิดีโอ

ข้อมูลสถิติการเข้ารหัสวิดีโอ

เมื่อใช้ Android 13 โปรแกรมเปลี่ยนไฟล์วิดีโอจะส่งออกข้อมูลสถิติดังที่แสดงในตารางต่อไปนี้

ชื่อสถิติโปรแกรมเปลี่ยนไฟล์ คำอธิบาย
QP บล็อกโดยเฉลี่ยต่อเฟรม ค่าเฉลี่ยของ QP บล็อกทั้งหมดในเฟรมวิดีโอที่เข้ารหัสเป็นบิตสตรีม
ประเภทรูปภาพ พิมพ์ I หรือ P หรือ B

นักพัฒนาแอปจะเรียกดูข้อมูลสถิติของแต่ละเฟรมได้โดยใช้คลาสสำหรับนักพัฒนาซอฟต์แวร์ MediaFormat

การอัปเดตไดรเวอร์โปรแกรมเปลี่ยนไฟล์วิดีโอ

หากต้องการรองรับการส่งออกสถิติการเข้ารหัสวิดีโอ ผู้ให้บริการ SoC จะต้องเปลี่ยนไดรเวอร์โปรแกรมเปลี่ยนไฟล์วิดีโอ คีย์ต่อไปนี้จะเพิ่มในฐานของตัวแปลงรหัส 2.0 ใน Android 13

  • KEY_VIDEO_QP_AVERAGE อธิบาย QP เฉลี่ยของบล็อกต่อเฟรม

    กฎต่อไปนี้ใช้กับการใช้งานคีย์ KEY_VIDEO_QP_AVERAGE

    • โปรแกรมเปลี่ยนไฟล์ SoC ต้องปัดเศษค่าเฉลี่ยของ QP ของบล็อกเป็นจำนวนเต็มใกล้ที่สุดก่อนส่งไปยังตัวแปลงรหัส 2.0

    • ค่าเฉลี่ยจะคำนวณจากระนาบ Luma เท่านั้น

    • ตัวเข้ารหัส 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 ครั้ง โดย 1 รายการมีอัตราบิตสูงกว่าและอีกรายการมีอัตราบิตต่ำกว่า จากนั้น 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);