"مدة التحضير للصوت" هي الوقت الذي يستغرقه مسار تضخيم الصوت في جهازك ليعمل بكامل طاقته ويصل إلى حالة التشغيل العادية. إنّ العوامل الرئيسية التي تساهم في مدّة التحضير للصوت هي إدارة الطاقة وأي منطق "لإزالة الأصوات الخاطئة" بهدف تثبيت الدائرة.
يوضّح هذا المستند كيفية قياس وقت الإعداد الصوتي والطُرق المحتمَلة لتقليل وقت الإعداد.
قياس فترة التحضير للإخراج
يقيس خيط FastMixer في AudioFlinger تلقائيًا فترة التحضير للإخراج
ويُبلغ عنها كجزء من إخراج الأمر dumpsys media.audio_flinger
.
في مرحلة الإعداد، يستدعي FastMixer write()
بشكل متكرّر إلى أن يصبح الوقت بين كل write()
هو المبلغ المتوقّع.
يحدِّد FastMixer فترة التحضير للصوت من خلال معرفة المدة التي يستغرقها write()
لاستقرار طبقة HAL.
لقياس وقت التحضير للصوت، اتّبِع الخطوات التالية للمكبّر المدمج وسماعات الرأس السلكية وفي أوقات مختلفة بعد التشغيل. تختلف أوقات التحضير عادةً لكل جهاز إخراج وبعد تشغيل الجهاز مباشرةً:
- تأكَّد من تفعيل FastMixer.
- يمكنك تفعيل أصوات اللمس من خلال اختيار الإعدادات > الصوت > أصوات اللمس على الجهاز.
- تأكَّد من أنّه تم إيقاف الصوت لمدة ثلاث ثوانٍ على الأقل. من الأفضل استخدام خمس ثوانٍ أو أكثر، لأنّه قد يكون للجهاز نفسه منطق الطاقة الخاص به الذي يتجاوز الثلاث ثوانٍ التي يستخدمها AudioFlinger.
- اضغط على زر الشاشة الرئيسية، ومن المفترض أن تسمع صوت نقرة.
- شغِّل الأمر التالي لتلقّي فترة التحضير المقاسة:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
من المفترض أن يظهر لك ناتج على النحو التالي:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
measuredWarmup=X
هو عدد X من المللي ثانية التي استغرقتها المجموعة الأولى من عمليات HALwrite()
لإكمالها.يشير
warmupCycles=X
إلى عدد طلبات الكتابة في HAL التي تم إجراؤها إلى أن يتطابق وقت تنفيذwrite()
مع الوقت المتوقّع. - يمكنك إجراء خمسة قياسات وتسجيلها جميعًا، بالإضافة إلى المتوسط. إذا لم تكن جميعها متماثلة تقريبًا، من المحتمل أن يكون أحد القياسات غير صحيح. على سبيل المثال، إذا لم تنتظر وقتًا كافيًا بعد إيقاف الصوت، ستلاحظ وقتًا أقصر للتأهّل مقارنةً بالقيمة المتوسطة.
قياس فترة التحضير للإدخال
لا تتوفّر حاليًا أي أدوات لقياس فترة الاستعداد للإدخال الصوتي. ومع ذلك، يمكن تقدير وقت إعداد الإدخال من خلال مراقبة الوقت اللازم لظهور startRecording().
تقليل وقت الإعداد
يمكن عادةً تقليل وقت الإعداد من خلال مجموعة من الإجراءات التالية:
- تصميم الدائرة الكهربائية الجيد
- تأخيرات زمنية دقيقة في برنامج تشغيل جهاز kernel
- تنفيذ عمليات إعداد مستقلة بشكل متزامن بدلاً من تسلسلي
- ترك الدوائر الكهربائية مفعّلة أو عدم إعادة ضبط الساعات (يزيد من استهلاك الطاقة في وضع السكون)
- تخزين المَعلمات المحسوبة مؤقتًا
ومع ذلك، احرِص على عدم إجراء عمليات تحسين مفرطة. قد تحتاج إلى التوازن بين وقت الإعداد المنخفض مقابل عدم ظهور صوت فرقعة عند تغييرات الطاقة.