Bản phát hành Android 10 bao gồm những điểm cải tiến sau đây cho âm thanh độ phân giải cao:
- Số thực: Bộ mã hoá và giải mã, cũng như trình trích xuất WAV, FLAC được cập nhật để hỗ trợ số thực (độ chính xác không tổn hao từ 24 bit trở lên). Hiệu ứng Trộn kênh và Trình ảo hoá được cập nhật thành số thực. MediaPlayer (NuPlayer) hỗ trợ độ chính xác mới cập nhật.
- Tần số cao: Bộ mã hoá và giải mã, cũng như trình trích xuất WAV, FLAC được cập nhật để hỗ trợ 192 kHz. Các hiệu ứng do Android cung cấp theo mặc định được kiểm thử để hỗ trợ 192 kHz ở tần số tiêu chuẩn. Các tần số tiêu chuẩn được phép là 88,2 kHz, 96 kHz, 176,4 kHz và 192 kHz.
- Đa kênh: Các hiệu ứng phát lại mặc định của Android được kiểm thử để hỗ trợ đa kênh cho 8 kênh.
- Thời gian: Thông tin về thời gian được đưa vào toàn bộ khung âm thanh.
Kể từ Android 9, những điểm cải tiến sau đây không yêu cầu đối tác triển khai:
- Số lượng bản âm thanh đầu ra đồng thời của ứng dụng tăng từ 14 lên 40, vì các phiên bản ứng dụng bị hạn chế của
AudioTracklà vấn đề mà các ứng dụng trong Android 8.x gặp phải. - Bộ nhớ tối đa của máy khách/máy chủ tăng từ 4 MB lên 32 MB (tuỳ thuộc vào tổng bộ nhớ của thiết bị) để cho phép phát nhiều bản âm thanh độ phân giải cao hơn cùng lúc.
- Tổng số bản âm thanh được trộn tăng từ 32 lên 256 để ngăn chặn tình trạng tranh chấp tài nguyên giữa các ứng dụng và Giao diện người dùng hệ thống.
Các thay đổi về hiệu ứng đầu ra
Xem bài viết Hiệu ứng âm thanh để biết các thay đổi trong bản phát hành Android 11.
Trước bản phát hành Android 9, quá trình xử lý chuỗi hiệu ứng được triển khai ở định dạng mẫu int16 âm thanh nổi. Điều này có một số hạn chế:
- Tất cả hiệu ứng đầu ra đều buộc phải chuyển đổi từ dữ liệu âm thanh dấu phẩy động sang int16, gây mất độ chính xác.
- Hiệu ứng đầu ra bị từ chối từ các bộ xuất âm có số lượng kênh lớn hơn 2.
Trong bản phát hành Android 9, quy trình xử lý chuỗi hiệu ứng được nâng cấp để hỗ trợ định dạng số thực đa kênh. Các điểm chính:
- Các hiệu ứng phần mềm Android đã được di chuyển sang dạng âm thanh nổi sử dụng số thực.
- Các hiệu ứng cũ được hỗ trợ bằng bộ chuyển đổi định dạng, chuyển đổi số thực thành int16 khi cần.
Triển khai hiệu ứng đầu ra
Bạn có thể tham khảo cách triển khai hiệu ứng đầu ra trong
frameworks/av/media/libeffects.
Các đối tác triển khai hiệu ứng đầu ra tuỳ chỉnh của riêng mình nên làm như sau cho bản phát hành Android 10:
- Cập nhật hiệu ứng đầu ra để hỗ trợ định dạng số thực đa kênh:
- Không còn cần hỗ trợ xử lý Int16.
- Hỗ trợ số lượng kênh đầu ra từ 2 đến 8 (để tương thích trong tương lai hãy cân nhắc số lượng từ 1 đến 30).
- Hỗ trợ số lượng kênh đầu vào khớp với số lượng kênh đầu ra cho hiệu ứng chèn. Các hiệu ứng phụ trợ tiếp tục có số lượng kênh đầu vào là 1 (mono).
- Hỗ trợ cả mặt nạ vị trí kênh (chuẩn tắc) và mặt nạ chỉ mục kênh
của
(1 << n) - 1.
- Nếu bạn phải tiếp tục hỗ trợ các hiệu ứng đầu ra cũ của nhà cung cấp và không thể
cập nhật các hiệu ứng đó, hãy xác minh mã cũ như sau:
- Các hiệu ứng đầu ra (chèn) cũ phải từ chối
các cấu hình không được hỗ trợ trong
EFFECT_CMD_SET_CONFIG.- Kiểm tra để đảm bảo định dạng là int16.
- Kiểm tra để đảm bảo mặt nạ kênh đầu vào và đầu ra là âm thanh nổi.
- Nếu một trong hai bước kiểm tra không thành công, hãy trả về
-EINVAL.
- Các hiệu ứng đầu ra (phụ trợ) cũ được AudioFlinger
định cấu hình bằng mặt nạ kênh đầu vào mono và có thể là mặt nạ kênh đầu ra đa kênh, tuỳ thuộc vào việc bộ xuất âm là đa kênh hay không.
Các hiệu ứng này phải từ chối các cấu hình không được hỗ trợ trong
EFFECT_CMD_SET_CONFIG.- Kiểm tra để đảm bảo định dạng là int16.
- Kiểm tra để đảm bảo mặt nạ kênh đầu vào là mono và mặt nạ kênh đầu ra là âm thanh nổi.
- Nếu một trong hai bước kiểm tra không thành công, hãy trả về
-EINVAL.
- Xác minh mã cũ. Đừng mặc định rằng mã sẽ hoạt động đúng!
- Các hiệu ứng đầu ra (chèn) cũ phải từ chối
các cấu hình không được hỗ trợ trong