الاحماء الصوتي

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

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

قياس الاحماء الناتج

يقوم مؤشر 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() .

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

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

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

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