Âm thanh độ phân giải cao

Bản phát hành Android 10 bao gồm các cải tiến sau cho âm thanh độ phân giải cao:

  • Float: Các codec WAV, FLAC và trình trích xuất được cập nhật để hỗ trợ float (hơn 24 bit có độ chính xác không mất dữ liệu). Hiệu ứng Downmix và Virtualizer được cập nhật để nổi. Độ chính xác cập nhật được MediaPlayer (NuPlayer) cho phép.
  • Tần số cao: Các codec WAV, FLAC và bộ trích xuất được cập nhật để hỗ trợ 192 kHz. Các hiệu ứng mặc định do Android cung cấp đã được thử nghiệm để 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 thử nghiệm để hỗ trợ đa kênh cho tám kênh.
  • Thời gian: Thông tin về thời gian được bao gồm trong toàn bộ khung âm thanh.

Bắt đầu từ Android 9, những cải tiến sau đây không yêu cầu bất kỳ đối tác triển khai nào:

  • Số lượng bản nhạc đầu ra máy khách đồng thời tăng từ 14 lên 40 vì các phiên bản máy khách 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ớ máy khách/máy chủ tối đa tăng từ 4 MB lên 32 MB (tùy thuộc vào tổng bộ nhớ của thiết bị) để cho phép nhiều bản âm thanh có độ phân giải cao đồng thời hơn.
  • Tổng số bản nhạc hỗn hợp tăng từ 32 lên 256 để ngăn chặn sự 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 cho các thay đổi khi 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 âm thanh nổi int16. Điều này có một số hạn chế:

  • Tất cả các hiệu ứng đầu ra 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ị loại bỏ từ phần chìm đầu ra có số lượng kênh lớn hơn hai.

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 float đa kênh. Những điểm chính:

  • Hiệu ứng phần mềm Android đã được chuyển sang âm thanh nổi nổi.
  • Các hiệu ứng kế thừa được hỗ trợ bằng bộ điều hợp định dạng, giúp chuyển đổi float thành int16 nếu cần.

Thực hiện hiệu ứng đầu ra

Việc triển khai tham chiếu cho các hiệu ứng đầu ra có sẵn trong frameworks/av/media/libeffects .

Các đối tác triển khai hiệu ứng đầu ra tùy chỉnh của riêng mình nên thực hiện những việc 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 float đa kênh:
    • Hỗ trợ xử lý Int16 không còn cần thiết nữa.
    • Hỗ trợ số kênh đầu ra từ 2–8 (để tương thích trong tương lai, hãy cân nhắc số lượng từ 1–30).
    • Hỗ trợ số lượng kênh đầu vào khớp với số lượng kênh đầu ra để chèn hiệu ứng. 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) 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 chúng, hãy xác minh mã cũ như sau:
    • Các hiệu ứng đầu ra (chèn) kế thừa phải từ chối các cấu hình không được hỗ trợ trong EFFECT_CMD_SET_CONFIG .
      • Kiểm tra xem định dạng có phải là int16 không.
      • Kiểm tra xem mặt nạ kênh đầu vào và đầu ra có phải là âm thanh nổi không.
      • Nếu một trong hai lần kiểm tra không thành công, hãy trả về -EINVAL .
    • Các hiệu ứng đầu ra (phụ trợ) kế thừa được AudioFlinger định cấu hình với mặt nạ kênh đầu vào đơn âm và mặt nạ kênh đầu ra có thể là đa kênh, tùy thuộc vào việc bồn rửa đầu ra có phải là đa kênh hay không. Họ phải từ chối các cấu hình không được hỗ trợ trong EFFECT_CMD_SET_CONFIG .
      • Kiểm tra xem định dạng có phải là int16 không.
      • Kiểm tra xem 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 lần kiểm tra không thành công, hãy trả về -EINVAL .
    • Xác minh mã kế thừa. Đừng cho rằng nó hoạt động!