إحماء الصوت

تدفئة الصوت هي الوقت الذي تستغرقه دائرة مضخّم الصوت في جهازك قيد التشغيل بشكل كامل وتصل إلى حالة التشغيل الطبيعية. المساهمون الرئيسيون إلى وقت إحماء الصوت هي إدارة الطاقة وأي "إزالة موسيقى البوب" منطقية لتحقيق الاستقرار الدائرة.

يصف هذا المستند كيفية قياس مدة إحماء الصوت والطرق المحتملة لتقليل إحماء.

قياس مستوى الاستعداد الناتج

تقيس سلسلة التعليمات FastMixer في AudioFlinger مستوى تدفئة الإخراج تلقائيًا. وتُبلغ عنه كجزء من مخرجات الأمر dumpsys media.audio_flinger. أثناء الإحماء، يتصل FastMixer برقم write() بشكل متكرّر إلى أن تكون المدة بين write() ثانية هي المبلغ المتوقّع. يحدِّد FastMixer فترة التحضير للصوت من خلال معرفة المدة التي يستغرقها write() لاستقرار طبقة HAL.

لقياس عملية الإحماء، اتّبِع هذه الخطوات على مكبّر الصوت المدمج وسماعات الرأس السلكية وفي أوقات مختلفة بعد التشغيل. عادةً ما تختلف مُدد الاستعداد لكل جهاز إخراج. وبعد تشغيل الجهاز مباشرةً:

  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() للرجوع.

تقليل وقت الإحماء

يمكن عادةً تقليل وقت الإعداد من خلال مجموعة من الإجراءات التالية:

  • تصميم دائرة جيدة
  • التأخير الدقيق في الوقت في برنامج تشغيل الجهاز النواة
  • إجراء عمليات تحضيرية مستقلة بشكل متزامن وليس بشكل تسلسلي
  • ترك الدوائر قيد التشغيل أو عدم إعادة ضبط الساعات (زيادة استهلاك الطاقة في وضع عدم النشاط)
  • تخزين المَعلمات المحسوبة مؤقتًا

ومع ذلك، احذر من التحسين المفرط. قد تجد أنك إلى المفاضلة بين وقت الإحماء المنخفض مقابل نقص الفرق عند انتقالات الطاقة.