Bản phát hành Android 10 có những điểm cải tiến sau đây đối với âm thanh có độ 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 âm và Bộ ảo hoá được cập nhật thành số thực. MediaPlayer (NuPlayer) cho phép độ chính xác được cập nhật.
- Tần số cao: Bộ mã hoá và giải mã cũng như bộ trích xuất WAV, FLAC được cập nhật để hỗ trợ tần số 192 kHz. Các hiệu ứng mặc định do Android cung cấp được kiểm thử để hỗ trợ tần số 192 kHz ở các 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 mặc định của Android được kiểm thử để hỗ trợ đa kênh cho 8 kênh.
- Timing (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 nhạc đầ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
AudioTrack
là một vấn đề đối với các ứng dụng trong Android 8.x. - 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 có nhiều bản âm thanh độ phân giải cao hơn cùng lúc.
- Tổng số bản phối 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.
Thay đổi hiệu ứng đầu ra
Xem Hiệu ứng âm thanh để biết các thay đổi trong bản phát hành Android 11.
Trước khi 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ả các hiệu ứng đầu ra đều buộc 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 đích đầu ra 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 nhiều kênh. Các điểm chính:
- Các hiệu ứng phần mềm Android đã được di chuyển sang định dạng nổi âm thanh nổi.
- 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 cho các hiệu ứng đầu ra trong frameworks/av/media/libeffects
.
Đối tác triển khai hiệu ứng đầu ra tuỳ chỉnh của riêng họ nên làm như sau đối với 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 nhiều kênh:
- Không còn cần thiết phải hỗ trợ xử lý Int16 nữa.
- Hỗ trợ số lượng kênh đầu ra từ 2 đến 8 (để đảm bảo khả năng 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 các hiệu ứng chèn. Các hiệu ứng phụ vẫn có số lượng kênh đầu vào là 1 (mono).
- Hỗ trợ cả mặt nạ vị trí kênh (chuẩn) 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ủa nhà cung cấp cũ 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 quy trình kiểm tra không thành công, hãy trả về
-EINVAL
.
- Các hiệu ứng đầu ra cũ (phụ trợ) được AudioFlinger định cấu hình bằng mặt nạ kênh đầu vào đơn âm và có thể là mặt nạ kênh đầu ra đa kênh, tuỳ thuộc vào việc nguồn đầu ra có phải là đa kênh hay không.
Chúng 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à đơn âm và mặt nạ kênh đầu ra là âm thanh nổi.
- Nếu một trong hai quy trình kiểm tra không thành công, hãy trả về
-EINVAL
.
- Xác minh mã cũ. Đừng cho rằng nó sẽ hoạt độ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