Bắt đầu từ Android 10 (API cấp 29) trở lên, có các phương thức trong
MediaCodecInfo tiết lộ thêm thông tin về một bộ mã hoá và giải mã:
isSoftwareOnly()- Trả về true nếu bộ mã hoá và giải mã chỉ chạy trong phần mềm. Bộ mã hoá và giải mã phần mềm không đảm bảo về hiệu suất kết xuất.
isHardwareAccelerated()- Trả về true nếu một bộ mã hoá và giải mã được tăng tốc bằng phần cứng.
isVendor()- Trả về true nếu bộ mã hoá và giải mã do nhà cung cấp thiết bị cung cấp hoặc false nếu do nền tảng Android cung cấp.
isAlias()MediaCodecListcó thể chứa các mục bổ sung cho cùng một bộ mã hoá và giải mã cơ bản bằng cách sử dụng (các) tên bộ mã hoá và giải mã thay thế (bí danh). Phương thức này trả về true nếu bộ mã hoá và giải mã trong mục này là bí danh cho một bộ mã hoá và giải mã khác.
Ngoài ra,
MediaCodec.getCanonicalName()
trả về tên bộ mã hoá và giải mã cơ bản cho các bộ mã hoá và giải mã được tạo thông qua bí danh.
Điểm hiệu suất
Một điểm hiệu suất thể hiện khả năng kết xuất video của bộ mã hoá và giải mã ở một
chiều cao, chiều rộng và tốc độ khung hình cụ thể. Ví dụ: điểm hiệu suất UHD_60
thể hiện video có độ phân giải siêu cao (3840x2160 pixel) được kết xuất ở tốc độ 60 khung hình
trên giây.
Phương thức
MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()
trả về danh sách các mục
PerformancePoint
mà bộ mã hoá và giải mã có thể kết xuất hoặc chụp.
Bạn có thể kiểm tra xem một PerformancePoint nhất định có bao gồm một PerformancePoint.covers(PerformancePoint) khác hay không bằng cách gọi
.
Ví dụ: UHD_60.covers(UHD_50) trả về true.
Danh sách các điểm hiệu suất được cung cấp cho tất cả bộ mã hoá và giải mã được tăng tốc bằng phần cứng. Đây có thể là danh sách trống nếu bộ mã hoá và giải mã không đáp ứng ngay cả điểm hiệu suất tiêu chuẩn thấp nhất.
Xin lưu ý rằng các thiết bị đã nâng cấp lên Android 10 (API cấp 29) trở lên mà không
cập nhật hình ảnh nhà cung cấp sẽ không có dữ liệu điểm hiệu suất, vì dữ liệu này
đến từ HAL nhà cung cấp. Trong trường hợp này, getSupportedPerformancePoints()
trả về giá trị rỗng.