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. Başlıca katkıda bulunanlar güç yönetimi ve her türlü "de-pop" sesi dengeleme mantığı devreye girer.
Bu dokümanda, sesin ısınma süresinin nasıl ölçüleceği ve azaltmanın olası yolları açıklanmaktadır. ısınma süresidir.
Çıkış ısınmasını ölçme
AudioFlinger'ın FastMixer iş parçacığı otomatik olarak çıkış ısınmasını ölçer
ve dumpsys media.audio_flinger
komutunun çıkışının bir parçası olarak bildirir.
Isınma sırasında FastMixer, write()
numarasını çağırır
iki write()
arasındaki süre beklenen miktara ulaşıncaya kadar tekrar tekrar basın.
FastMixer
write()
katmanının (HAL) dengelenmesi gerekiyor.
Sesin ısınmasını ölçmek için dahili hoparlör ve kablolu kulaklıkta aşağıdaki adımları uygulayın zaman alıyor. Isıtma süreleri genellikle her çıkış cihazı için farklıdır ve cihazı açtıktan hemen sonra:
- FastMixer'ın etkinleştirildiğinden emin olun.
- Ayarlar > Ses > Cihazdaki dokunma sesleri.
- Sesin en az üç saniye boyunca kapalı olduğundan emin olun. Beş saniye veya daha uzun süre daha iyidir çünkü donanımın kendi güç mantığı, AudioFlinger'ın sahip olduğu üç saniyeden fazla olabilir.
- Ana sayfa düğmesine basın. Bir tık sesi duyarsınız.
- Ö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
, X milisaniye sayısıdır ilk HALwrite()
grubunun tamamlanması sürdü.warmupCycles=X
, kaç HAL yazma isteği aldığını gösterirwrite()
paketinin yürütme zamanı beklenenlerle eşleşene kadar. - Beş ölçüm yapın ve bunların hepsini ve ortalamasını kaydedin. Hepsi yaklaşık olarak aynı değilse ölçüm yanlış olabilir. Örneğin, ses kapatıldıktan sonra yeterince beklemezseniz ortalama değerden daha düşük bir ısınma süresi 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 girdi ısınma süresi gözlemleyerek startRecording() için gereken süre geri dönün.
Isınma süresini azaltın
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ınma işlemlerini sıralı bir şekilde değil eşzamanlı olarak gerçekleştirme
- Devrelerin açık bırakılması veya saatlerin yeniden yapılandırılmaması (boşta güç tüketimini artırır)
- Hesaplanan parametreleri önbelleğe alma
Ancak aşırı optimizasyondan kaçının. Daha sonra düşük ısınma süresi ile düşük ısınma süresi arasında güç geçişlerinde patlama olmaması.