گرم کردن صدا

زمان گرم شدن صدا مدت زمانی است که طول می‌کشد مدار تقویت‌کننده صدا در دستگاهتان به‌طور کامل روشن شود و به وضعیت عملکرد عادی خود برسد. عوامل اصلی مؤثر بر زمان گرم شدن صدا عبارت‌اند از مدیریت مصرف برق و هرگونه منطق «حذف صدای پاپ» برای پایدار کردن مدار.

این سند نحوه اندازه‌گیری زمان گرم کردن صدا و روش‌های ممکن برای کاهش زمان گرم کردن را توضیح می‌دهد.

گرم کردن برونداد اندازه‌گیری

رشته FastMixer در AudioFlinger به‌طور خودکار گرم کردن برونداد را اندازه‌گیری می‌کند و آن را به‌عنوان بخشی از برونداد فرمان dumpsys media.audio_flinger گزارش می‌کند. در مرحله گرم کردن، FastMixer به‌طور مکرر write() را فرا می‌خواند تا زمانی که فاصله بین دو write() به مقدار مورد انتظار برسد. ‫FastMixer با دیدن اینکه چقدر طول می‌کشد تا «لایه انتزاع سخت‌افزار» (HAL) write() پایدار شود، گرم کردن صدا را تعیین می‌کند.

برای اندازه‌گیری گرم شدن صدا، این مراحل را برای بلندگوی داخلی و هدفون سیمی و در زمان‌های مختلف پس‌از راه‌اندازی دنبال کنید. زمان‌های گرم کردن معمولاً برای هر دستگاه خروجی متفاوت است و درست پس‌از راه‌اندازی دستگاه:

  1. مطمئن شوید FastMixer فعال باشد.
  2. با انتخاب تنظیمات > صدا > صداهای لمس در دستگاه، صداهای لمس را فعال کنید.
  3. مطمئن شوید که صدا حداقل سه ثانیه خاموش بوده است. پنج ثانیه یا بیشتر بهتر است، زیرا سخت‌افزار ممکن است منطق قدرت خود را فراتر از سه ثانیه‌ای که AudioFlinger دارد داشته باشد.
  4. «صفحه اصلی» را فشار دهید و باید صدای کلیک بشنوید.
  5. برای دریافت گرم‌سازی اندازه‌گیری‌شده، فرمان زیر را اجرا کنید:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    باید خروجی‌ای شبیه به این ببینید:

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

    measuredWarmup=X تعداد X میلی‌ثانیه است که اولین مجموعه از write()های HAL برای تکمیل شدن صرف کرده است.

    ‫warmupCycles=X تعداد درخواست‌های نوشتن HAL است که تا زمانی که زمان اجرای write() با زمان موردانتظار مطابقت پیدا کند طول می‌کشد.

  6. پنج اندازه‌گیری انجام دهید و همه آن‌ها را به‌همراه میانگین ثبت کنید. اگر همه آن‌ها تقریباً یکسان نباشند، احتمالاً اندازه‌گیری نادرست است. برای مثال، اگر پس‌از خاموش شدن صدا مدت کافی صبر نکنید، زمان گرم کردن کمتری نسبت‌به مقدار میانگین خواهید دید.

اندازه‌گیری گرم شدن ورودی

درحال‌حاضر هیچ ابزاری برای اندازه‌گیری آماده‌سازی ورودی صوتی ارائه نشده است. بااین‌حال، زمان گرم شدن ورودی را می‌توان با مشاهده زمان لازم برای بازگشت startRecording() تخمین زد.

کاهش زمان گرم شدن

زمان گرم کردن معمولاً با ترکیب این موارد کاهش می‌یابد:

  • طراحی مدار خوب
  • تأخیرهای زمانی دقیق در درایور دستگاه هسته
  • انجام هم‌زمان عملیات گرم‌سازی مستقل به‌جای انجام آن‌ها به‌صورت متوالی
  • روشن گذاشتن مدارها یا پیکربندی مجدد نکردن ساعت‌ها (مصرف برق در حالت آماده‌به‌کار را افزایش می‌دهد)
  • ذخیره کردن پارامترهای محاسبه‌شده در حافظه نهان

بااین‌حال، مراقب بهینه‌سازی بیش‌ازحد باشید. ممکن است متوجه شوید که باید بین زمان گرم شدن پایین و عدم ایجاد صدا در انتقال قدرت مصالحه کنید.