گرم کردن صدا

گرم کردن صدا زمانی است که طول می کشد تا مدار تقویت کننده صدا در دستگاه شما به طور کامل تغذیه شود و به حالت عادی کار کند. عوامل اصلی در زمان گرم کردن صدا، مدیریت توان و هرگونه منطق "de-pop" برای تثبیت مدار است.

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

گرم شدن خروجی را اندازه گیری کنید

رشته 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 تعداد میلی‌ثانیه‌ای است که برای تکمیل اولین مجموعه HAL write() طول کشید.

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

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

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

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

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

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

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

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