Android 15 เปิดตัวกระบวนการมาตรฐานสำหรับ การผสานรวมการกำหนดค่าภูมิภาคที่ผู้ใช้สนใจ (RoI) เข้ากับวิดีโอ Android ของ Google Analytics ฟีเจอร์นี้ช่วยให้คุณภาพการบีบอัดสำหรับ RoI มีคุณภาพดีขึ้นได้โดย เสนอ API สาธารณะเพื่อผสานรวมและวิเคราะห์การกำหนดค่าของผู้ใช้ในวิดีโอ โปรแกรมเปลี่ยนไฟล์
การใช้งาน
ผู้ให้บริการ SoC และ OEM สามารถควบคุมการรองรับ RoI สำหรับการเข้ารหัสวิดีโอด้วย
FEATURE_Roi
แจ้ง หากไม่ได้เปิดใช้ FEATURE_Roi
ลักษณะการทำงานของโปรแกรมเปลี่ยนไฟล์วิดีโอจะไม่เปลี่ยนแปลง
การเปลี่ยนแปลงในเฟรมเวิร์กวิดีโอ
ส่วนนี้จะให้รายละเอียดเกี่ยวกับการเปลี่ยนแปลงในเฟรมเวิร์กวิดีโอที่จำเป็นต่อการนำสิ่งนี้ไปใช้
คีย์ในตัวแปลงรหัส 2
ใน Android 15 การแมปพารามิเตอร์ควอนตัม
(QP_map
) และการกําหนดค่าสี่เหลี่ยมผืนผ้า (rect
) กําหนดเป็น RoI
ประเภทการกำหนดค่า นอกจากนี้ ยังมีการเปิดตัวคีย์ 2 คีย์ในตัวแปลงรหัส (C2) เพื่อ
รองรับประเภทใหม่ๆ เหล่านี้ การใช้งานทั้ง 2 คีย์เหมือนกันกับ API สาธารณะ
ภายในลูปเฟรมของโปรแกรมเปลี่ยนไฟล์ การกำหนดค่าจะได้รับการปรับแบบไดนามิก
ระหว่างระยะการทำงาน ก่อนที่บัฟเฟอร์อินพุตจะอยู่ในคิว อธิบายดังนี้
ดังต่อไปนี้:
ในสถานการณ์ติดหนึบ หากไม่มีการกำหนดค่า RoI สำหรับพร็อพเพอร์ตี้ปัจจุบัน เฟรม โปรแกรมเปลี่ยนไฟล์จะใช้การกำหนดค่าเดียวกันกับเฟรมก่อนหน้านี้
ในสถานการณ์แบบไดนามิก ประเภทการกําหนดค่า RoI จะเปลี่ยนแปลงแบบไดนามิกได้
คีย์ใหม่ใน C2 จะอธิบายในส่วนต่อไปนี้
kParamIndexQpOffsetMapBuffer
kParamIndexQpOffsetMapBuffer
สัญญาณหลักที่แมป qp-offset
ของเฟรม ค่าจะกำหนดโดยใช้อินพุต
พารามิเตอร์ PARAMETER_KEY_QP_OFFSET_MAP
จาก setParameters
kParamIndexQpOffsetMapBuffer
คืออาร์เรย์ไบต์ใน
C2InfoBuffer
,
โดยมีแอตทริบิวต์ต่อไปนี้
ความยาว: จำนวนบล็อกขนาด 16x16 ใน 1 เฟรม
ค่า: แต่ละค่าของอาร์เรย์คือค่าชดเชย QP ของบล็อกขนาด 16x16 ในภูมิภาค -51~51 QP ของหน่วยการเขียนโค้ดเป้าหมายที่ใหญ่ที่สุด (LCU) จะคำนวณโดย การควบคุมอัตราของโปรแกรมเปลี่ยนไฟล์บวกออฟเซ็ต หากผลลัพธ์ที่คำนวณได้เกิน 0~51 ระบบจะตัดค่าเป็น 0~51
- หากเป็น 0: ไม่มีการชดเชย QP การควบคุมอัตราเดิมจะเป็นตัวกำหนด QP
- หากไม่เป็น 0: QP คือการควบคุมอัตราเดิมบวกออฟเซ็ต
- หากเป็นลบ: คุณภาพวิดีโอจะได้รับการเพิ่มคุณภาพใน LCU เป้าหมาย
- หากเป็นบวก: คุณภาพวิดีโอลดลงใน LCU เป้าหมาย
การใช้งาน: ผู้ใช้ต้องกำหนดค่าคีย์นี้เป็นบล็อกขนาด 16x16 จะมีการปรับโปรแกรมเปลี่ยนไฟล์ กำหนดค่าเป็นขนาด LCU จริงโดยหาค่าเฉลี่ยค่าของ 16x16 ใน LCU
C2_PARAMKEY_QP_OFFSET_RECTS
C2_PARAMKEY_QP_OFFSET_RECTS
คีย์ (ตั้งค่าเป็น coding.qp-offset-rects
กำหนด RoI เป็น QpOffset-Rects
ค่าจะกำหนดโดยใช้พารามิเตอร์อินพุต PARAMETER_KEY_QP_OFFSET_RECTS
จาก setParameters
เพื่อรองรับคีย์นี้ ให้ใช้โครงสร้างต่อไปนี้ C2QpOffsetRectStruct
เปิดตัว:
struct C2QpOffsetRectStruct : C2Rect {
int32_t qpOffset;
DEFINE_AND_DESCRIBE_C2STRUCT(QpOffsetRect)
C2FIELD(width, "width")
C2FIELD(height, "height")
C2FIELD(left, "left")
C2FIELD(top, "top")
C2FIELD(qpOffset, "qp-offset")
}
สถานที่:
top
และleft
: พิกัดของ RoI ในรูปทรงสี่เหลี่ยมผืนผ้า RoI คือ ให้ยืดออกเพื่อให้สอดคล้องกับขอบเขตของ LCU ค่านี้แสดงถึง มุมซ้ายบนของแต่ละพิกเซล โดยที่ ((0,0), (16, 16)) 16x16 บล็อกเต็มqpOffset
: แต่ละค่าของอาร์เรย์แสดงถึงค่าชดเชย QP ของเป้าหมาย พื้นที่rect
แห่ง มีคำจำกัดความและการใช้งานเหมือนกับkParamIndexQpOffsetMapBuffer
อัลกอริทึมการแมป
ตารางต่อไปนี้แสดงการแมปจากคีย์สาธารณะไปยังวิดีโอ เฟรมเวิร์ก:
คีย์สาธารณะหรือ API | การแมปในเฟรมเวิร์กวิดีโอ |
---|---|
PARAMETER_KEY_QP_OFFSET_MAP |
มีการส่งค่าไปยัง kParamIndexQpOffsetMapBuffer ในรูปแบบ
C2InfoBuffer |
PARAMETER_KEY_QP_OFFSET_RECTS |
ค่าจะแปลงจาก String เป็น
Struct C2QpOffsetRectStruct และส่งไปยัง
C2_PARAMKEY_QP_OFFSET_RECTS |
การจัดการข้อผิดพลาด
การใช้งาน OEM ต้องจัดการกับกรณีข้อผิดพลาดต่อไปนี้
กรณีข้อผิดพลาด | ตัวอย่าง | การใช้งาน |
---|---|---|
ระบบจะใช้ทั้งคีย์ของผู้ให้บริการและคีย์มาตรฐานเพื่อเปิดใช้ RoI | ผู้ใช้เรียกทั้ง setFeatureEnabled(FEATURE_ROI) และ
คีย์ผู้ให้บริการเพื่อเปิด RoI |
ต้องเปิด RoI |
ออฟเซ็ต QP อยู่ภายในช่วงแต่ผู้ให้บริการ SoC ไม่รองรับ | ผู้ใช้ตั้งค่าออฟเซ็ต QP เป็น 12 แต่ SoC รองรับออฟเซ็ต QP สูงสุด 10 เท่านั้น | ช่วงออฟเซ็ต QP ที่รองรับจะเก็บไว้อย่างดีที่สุด ค่าจะเป็น บีบ เป็นช่วงที่รองรับของ SoC |
การกำหนดค่า RoI หลายรายการ (ไม่ว่าจะเป็นคีย์มาตรฐานหรือ คีย์เฉพาะผู้ให้บริการ) ตั้งไว้เป็นเฟรมเดียว | ผู้ใช้ใช้ทั้งคีย์มาตรฐานและคีย์ของผู้ให้บริการสำหรับเฟรม 1 | เฟรมเวิร์กจะยังคงมี rect มาตรฐานแรก (หากมี)
การกำหนดค่า QP_map แบบมาตรฐานครั้งแรก
หรือทั้งสองอย่าง ในแต่ละหมวดหมู่ เฟรมเวิร์กจะส่งข้อมูลมาตรฐานเพียงรายการเดียวเท่านั้น
การกำหนดค่าไปยัง SoC หากมีการกำหนดค่ามาตรฐานให้ใช้งาน
การติดตั้งใช้งาน SoC จะต้องไม่สนใจการกำหนดค่าของผู้ให้บริการ ถ้า
มีการส่งการกำหนดค่าหลายรายการไปยัง SoC ซึ่งผู้ให้บริการ SoC ต้อง
การกำหนดค่า RoI เพียงรายการเดียวและไม่สนใจการกำหนดค่าที่เหลือการกำหนดค่าจะยังคงอยู่ตามลำดับความสำคัญดังนี้
|