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