Bộ mã hoá và giải mã nội dung nghe nhìn

Kể từ Android 10 (API cấp 29) trở lên, có các phương thức trong MediaCodecInfo cho biết thêm thông tin về một codec:

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 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ề giá trị true nếu bộ mã hoá và giải mã do nhà cung cấp thiết bị cung cấp hoặc giá trị false nếu do nền tảng Android cung cấp.
isAlias()
MediaCodecList có 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ác) tên bộ mã hoá và giải mã thay thế (bí danh). Phương thức này sẽ trả về giá trị true nếu codec trong mục này là một bí danh cho một codec khác.

Ngoài ra, MediaCodec.getCanonicalName() trả về tên codec cơ bản cho các codec được tạo thông qua một biệt hiệu.

Điểm hiệu suất

Điểm hiệu suất thể hiện khả năng của một bộ mã hoá và giải mã trong việc kết xuất video ở 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 biểu thị video có độ phân giải siêu cao (3840x2160 pixel) được kết xuất ở tốc độ 60 khung hình/giây.

Phương thức MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints() trả về một danh sách các mục PerformancePoint mà bộ mã hoá và giải mã có thể kết xuất hoặc ghi lại.

Bạn có thể kiểm tra xem một PerformancePoint nhất định có bao phủ một PerformancePoint khác hay không bằng cách gọi PerformancePoint.covers(PerformancePoint). 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ả các bộ mã hoá và giải mã được tăng tốc bằng phần cứng. Đây có thể là một 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 những thiết bị đã được 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 của nhà cung cấp. Trong trường hợp này, getSupportedPerformancePoints() sẽ trả về giá trị rỗng.