Ses ısınması

Ses ısınması, cihazınızdaki ses yükseltici devresinin tam olarak çalıştırılıp normal çalışma durumuna ulaşması için geçen süredir. Sesin ısınma süresine en büyük katkıda bulunanlar, güç yönetimi ve devreyi stabilize etmek için herhangi bir "de-pop" mantığıdır.

Bu belgede sesin ısınma süresinin nasıl ölçüleceği ve ısınma süresini azaltmanın olası yolları açıklanmaktadır.

Çıkış ısınmasını ölçün

AudioFlinger'ın FastMixer iş parçacığı, çıktı ısınmasını otomatik olarak ölçer ve bunu dumpsys media.audio_flinger komutunun çıktısının bir parçası olarak bildirir. Isınma sırasında FastMixer, iki write() arasındaki süre beklenen süreye ulaşana kadar art arda write() öğesini çağırır. FastMixer, bir Donanım Soyutlama Katmanı (HAL) write() stabil hale gelmesinin ne kadar sürdüğünü görerek sesin ısınmasını belirler.

Sesin ısınmasını ölçmek için, yerleşik hoparlör ve kablolu kulaklık için ve önyükleme sonrasında farklı zamanlarda bu adımları izleyin. Isınma süreleri genellikle her çıkış cihazı için ve cihaz başlatıldıktan hemen sonra farklıdır:

  1. FastMixer'ın etkin olduğundan emin olun.
  2. Cihazda Ayarlar > Ses > Dokunma sesleri'ni seçerek dokunma seslerini etkinleştirin.
  3. Sesin en az üç saniye boyunca kapalı olduğundan emin olun. Beş saniye veya daha fazlası daha iyidir çünkü donanımın kendisi, AudioFlinger'ın sahip olduğu üç saniyenin ötesinde kendi güç mantığına sahip olabilir.
  4. Ana Sayfa'ya bastığınızda bir tıklama sesi duymalısı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
    

    Çıktıyı şu şekilde görmelisiniz:

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

    measuredWarmup=X ilk HAL write() kümesinin tamamlanması için geçen X milisaniye sayısıdır.

    warmupCycles=X write() işlevinin yürütme süresi beklenenle eşleşene kadar kaç HAL yazma isteğinin gerektiğidir.

  6. Beş ölçüm alın ve ortalamanın yanı sıra hepsini kaydedin. Hepsi yaklaşık olarak aynı değilse ölçümün yanlış olması muhtemeldir. Örneğin, ses kapatıldıktan sonra yeterince beklemezseniz ısınma süresinin ortalama değerden daha düşük olduğunu göreceksiniz.

Giriş ısınmasını ölçün

Şu anda ses girişi ısınmasını ölçmek için herhangi bir araç sağlanmamıştır. Ancak giriş ısınma süresi, startRecording() işlevinin geri dönmesi için gereken süre gözlemlenerek tahmin edilebilir.

Isınma süresini azaltın

Isınma süresi genellikle aşağıdakilerin bir kombinasyonu ile azaltılabilir:

  • İyi devre tasarımı
  • Çekirdek aygıt sürücüsünde doğru zaman gecikmeleri
  • Bağımsız ısınma operasyonlarını sıralı olarak yerine eş zamanlı olarak gerçekleştirmek
  • Devreleri açık bırakmak veya saatleri yeniden yapılandırmamak (boşta güç tüketimini artırır)
  • Hesaplanan parametrelerin önbelleğe alınması

Ancak aşırı optimizasyona dikkat edin. Düşük ısınma süresi ile güç geçişlerinde patlama olmaması arasında denge kurmanız gerektiğini görebilirsiniz.