Bắt đầu từ Android 13, ứng dụng khách có thể yêu cầu bộ mã hóa video xuất số liệu thống kê mã hóa cho từng khung hình video được mã hóa. Với số liệu thống kê thu được từ bộ mã hóa video, các ứng dụng có thể tối ưu hóa tác vụ mã hóa video như mã hóa nhiều lượt và xử lý trước khung trước khi mã hóa.
Để xuất số liệu thống kê mã hóa video, nhà cung cấp SoC phải thay đổi trình điều khiển bộ mã hóa video như được mô tả trong Cập nhật trình điều khiển bộ mã hóa video .
Dữ liệu thống kê mã hóa video
Với Android 13, bộ mã hóa video xuất dữ liệu thống kê như trong bảng sau.
Tên thống kê mã hóa | Sự miêu tả |
---|---|
QP khối trung bình trên mỗi khung hình | Giá trị trung bình của tất cả các QP khối trong khung hình video được mã hóa thành dòng bit |
Loại hình ảnh | Loại I hoặc P hoặc B |
Nhà phát triển có thể truy xuất thông tin thống kê cho từng khung bằng cách sử dụng lớp nhà phát triển MediaFormat
.
Cập nhật trình điều khiển bộ mã hóa video
Để hỗ trợ xuất số liệu thống kê mã hóa video, nhà cung cấp SoC phải thay đổi trình điều khiển bộ mã hóa video. Các khóa sau được thêm vào cơ sở Codec 2.0 trong Android 13:
KEY_VIDEO_QP_AVERAGE
mô tả QP khối trung bình trên mỗi khung hình.Các quy tắc sau áp dụng cho việc triển khai khóa
KEY_VIDEO_QP_AVERAGE
:Bộ mã hóa SoC phải làm tròn giá trị trung bình của QP khối đến số nguyên gần nhất trước khi phát ra Codec 2.0.
Giá trị trung bình chỉ được tính từ mặt phẳng luma.
Bộ mã hóa SoC phải trả về
INT_MAX
nếu tất cả các khối trong khung hiện tại ở chế độ bị bỏ qua. Tình trạng này xảy ra khi không có hệ số nào được mã hóa và không có thông tin QP quan trọng nào được mã hóa trong khung.
KEY_PICTURE_TYPE
mô tả loại hình ảnh của khung được mã hóa làPICTURE_TYPE_I
,PICTURE_TYPE_P
,PICTURE_TYPE_B
hoặcPICTURE_TYPE_UNKNOWN
.KEY_VIDEO_ENCODING_STATISTICS_LEVEL
mô tả mức độ mã hóa thông tin thống kê phát ra từ bộ mã hóa video như sau:Khi bộ mã hóa không tạo ra thông tin về thống kê mã hóa, khóa này được đặt thành
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
.Khi bộ mã hóa tạo
KEY_VIDEO_QP_AVERAGE
vàKEY_PICTURE_TYPE
cho mỗi khung hình, khóa này được đặt thànhVIDEO_ENCODING_STATISTICS_LEVEL_1
.
Xem VideoEncodingStatisticsTest
để biết cách triển khai tham khảo.
Thẩm định
Chạy thử nghiệm CTS VideoEncodingStatisticsTest
để xác thực rằng phần QP trung bình của thống kê mã hóa video hoạt động chính xác: CTS chạy hai mã hóa của cùng một video đầu vào, một mã hóa có tốc độ bit cao hơn và một mã hóa khác có tốc độ bit thấp hơn. Sau đó, CTS so sánh hai giá trị QP trung bình được xuất từ hai bảng mã. Nếu QP trung bình từ mã hóa có tốc độ bit thấp hơn cao hơn QP trung bình từ mã hóa có tốc độ bit cao hơn thì CTS sẽ vượt qua.
Để xác thực việc tắt tính năng thống kê mã hóa video xuất khi được bật, hãy sử dụng khóa VIDEO_ENCODING_STATISTICS_LEVEL_NONE
như sau:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);