Yüksek çözünürlüklü ses

Android 10 sürümü, yüksek çözünürlüklü ses için aşağıdaki iyileştirmeleri içerir:

  • Kayan nokta: WAV, FLAC codec'leri ve çıkarıcıları, kayan noktayı (24 bitten fazla kayıpsız hassasiyet) desteklemek için güncellendi. Azaltma ve sanallaştırıcı efektleri, kayan noktalı olarak güncellendi. MediaPlayer (NuPlayer), güncellenmiş hassasiyete izin verir.
  • Yüksek frekans: WAV, FLAC codec'leri ve çıkarıcıları 192 kHz'i destekleyecek şekilde güncellendi. Android tarafından sağlanan varsayılan efektler, standart frekanslarda 192 kHz desteği için test edilir. İzin verilen standart frekanslar 88,2 kHz, 96 kHz, 176,4 kHz ve 192 kHz'dir.
  • Çok kanallı: Varsayılan Android oynatma efektleri, sekiz kanala kadar çok kanallı destek için test edilir.
  • Zamanlama: Zamanlama bilgileri, ses çerçevesine dahil edilir.

Android 9'dan itibaren aşağıdaki iyileştirmeler için iş ortağı uygulaması gerekmez:

  • AudioTrack istemci örnekleri Android 8.x'teki uygulamalar için sorun teşkil ettiğinden, eşzamanlı istemci çıkış kanallarının sayısı 14'ten 40'a yükseltildi.
  • Daha fazla eşzamanlı yüksek çözünürlüklü ses parçasına izin vermek için maksimum istemci/sunucu belleği 4 MB'tan 32 MB'a (toplam cihaz belleğine bağlı olarak) yükseltildi.
  • Uygulamalar ile sistem kullanıcı arayüzü arasındaki kaynak anlaşmazlığını önlemek için toplam karma parça sayısı 32'den 256'ya yükseltildi.

Çıkış efekti değişiklikleri

Android 11 sürümünde yapılan değişiklikler için Ses efektleri bölümüne bakın.

Android 9 sürümünden önce efekt zinciri işleme, stereo int16 örnek biçiminde uygulanıyordu. Bunun bazı sınırlamaları vardı:

  • Tüm çıkış efektleri, kayan nokta ses verilerini int16'a zorla dönüştürerek hassasiyetin kaybolmasına neden oluyordu.
  • Çıkış efektleri, kanal sayısı ikiden fazla olan çıkış alıcılarından reddedildi.

Android 9 sürümünde, efekt zinciri işleme ardışık düzeni çok kanallı kayan nokta biçimini destekleyecek şekilde yükseltildi. Önemli noktalar:

  • Android yazılım efektleri zaten stereo kayan noktaya taşınmıştır.
  • Eski efektler, gerektiğinde float'ı int16'a dönüştüren biçim adaptörleriyle desteklenir.

Çıkış efektlerini uygulama

Çıkış efektleri için referans uygulamayı frameworks/av/media/libeffects altında bulabilirsiniz.

Kendi özel çıkış efektlerini uygulayan iş ortakları, Android 10 sürümü için aşağıdakileri yapmalıdır:

  • Çıkış efektlerini çok kanallı kayan nokta biçimini destekleyecek şekilde güncelleyin:
    • Int16 işleme desteği artık gerekli değildir.
    • 2 ila 8 arasında çıkış kanalı sayısını destekler (gelecekteki uyumluluk için 1 ila 30 arasında sayılar kullanılabilir).
    • Ekleme efektleri için çıkış kanal sayılarıyla eşleşen giriş kanal sayılarını destekler. Yardımcı efektler 1 (mono) giriş kanal sayısı görmeye devam eder.
    • Hem kanal konum maskelerini (standart) hem de (1 << n) - 1 kanal dizini maskelerini destekler.
  • Eski satıcı çıkış efektlerini desteklemeye devam etmeniz gerekiyorsa ve bunları güncelleyemiyorsanız eski kodu aşağıdaki gibi doğrulayın:
    • Eski çıkış (ekleme) efektleri, EFFECT_CMD_SET_CONFIG'de desteklenmeyen yapılandırmaları reddetmelidir.
      • Biçimin int16 olduğundan emin olun.
      • Giriş ve çıkış kanal maskelerinin stereo olup olmadığını kontrol edin.
      • Her iki denetim de başarısız olursa -EINVAL döndürün.
    • Eski çıkış (yardımcı) efektleri, çıkış alıcısının çok kanallı olup olmadığına bağlı olarak AudioFlinger tarafından tek kanallı giriş kanalı maskesi ve muhtemelen çok kanallı çıkış kanalı maskeleriyle yapılandırılır. EFFECT_CMD_SET_CONFIG'de desteklenmeyen yapılandırmaları reddetmesi gerekir.
      • Biçimin int16 olduğundan emin olun.
      • Giriş kanalı maskesinin mono, çıkış kanalı maskesinin ise stereo olduğundan emin olun.
      • Her iki denetim de başarısız olursa -EINVAL döndürün.
    • Eski kodu doğrulayın. Bu yöntemin işe yarayacağını varsaymayın.