Ses ısınma

Ses ısıtma, cihazınızdaki ses yükseltici devresinin tam güçte çalışması ve normal çalışma durumuna ulaşması için geçen süredir. Ses ısınma süresine en çok etki eden faktörler güç yönetimi ve devreyi stabilize etmek için kullanılan "pop giderme" mantığıdır.

Bu dokümanda, ses ısınma süresinin nasıl ölçüleceği ve ısınma süresini azaltmanın olası yolları açıklanmaktadır.

Çıktı ısıtmasını ölçme

AudioFlinger'ın FastMixer iş parçacığı, çıkış ısınmasını otomatik olarak ölçer ve dumpsys media.audio_flinger komutunun çıkışı kapsamında raporlar. Hızlı Karıştırıcı, ısınma sırasında iki write() arasında geçen süre beklenen süreye eşit olana kadar write() sabiti için tekrar tekrar çağrı yapar. FastMixer, donanım soyutlama katmanının (HAL) write() kararlı hale gelmesinin ne kadar sürdüğünü görerek ses ısınmasını belirler.

Ses ısınmasını ölçmek için yerleşik hoparlör ve kablolu kulaklıklar için bu adımları uygulayın ve önyüklemeden sonra farklı zamanlarda ölçüm yapın. Isıtma süreleri genellikle her çıkış cihazı için farklıdır ve cihazın açılmasından hemen sonra:

  1. FastMixer'ın etkinleştirildiğinden emin olun.
  2. Cihazınızda Ayarlar > Ses > Dokunma sesleri'ni seçerek dokunma seslerini etkinleştirin.
  3. Sesin en az üç saniye boyunca kapalı olduğundan emin olun. Donanımın, AudioFlinger'ın sahip olduğu üç saniyenin ötesinde kendi güç mantığı olabileceğinden beş saniye veya daha uzun süre beklemek daha iyidir.
  4. Ana sayfa düğmesine basın. Bir tık sesi duyarsınız.
  5. Ölçülen ısınmayı almak için aşağıdaki komutu çalıştırın:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    Aşağıdaki gibi bir çıkış görürsünüz:

    sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
    

    measuredWarmup=X, ilk HAL write() grubunun tamamlanması için gereken X milisaniye sayısıdır.

    warmupCycles=X, write()'un yürütme süresinin beklenenle eşleşmesi için kaç HAL yazma isteğinin gerektiğidir.

  6. Beş ölçüm yapın ve bunların hepsini ve ortalamasını kaydedin. Hepsi yaklaşık olarak aynı değilse muhtemelen bir ölçüm yanlıştır. Örneğin, ses kapatıldıktan sonra yeterince beklemezseniz ısınma süresinin ortalama değerden daha düşük olduğunu görürsünüz.

Giriş ısıtmasını ölçme

Ses girişi ısınmasını ölçmek için şu anda herhangi bir araç sağlanmamaktadır. Ancak giriş ısıtma süresi, startRecording() işlevinin döndürülmesi için gereken süre gözlemlenerek tahmin edilebilir.

Isıtma süresini azaltma

Isıtma süresi genellikle aşağıdakilerin bir kombinasyonuyla azaltılabilir:

  • İyi devre tasarımı
  • Çekirdek cihaz sürücüsünde doğru zaman gecikmeleri
  • Bağımsız ısıtma işlemlerini sıralı olarak değil, eşzamanlı olarak gerçekleştirme
  • Devrelerin açık bırakılması veya saatlerin yeniden yapılandırılmaması (devre dışı güç tüketimini artırır)
  • Hesaplanmış parametreleri önbelleğe alma

Ancak aşırı optimizasyondan kaçının. Isıtma süresinin kısa olması ile güç geçişlerinde açma/kapatma sesi olmaması arasında bir denge kurmanız gerekebilir.