זמן החימום של האודיו הוא הזמן שלוקח למעגל מגבר האודיו במכשיר לקבל חשמל במלואו ולהגיע למצב הפעולה הרגיל שלו. הגורמים העיקריים לזמן החימום של האודיו הם ניהול צריכת החשמל וכל לוגיקה של 'ביטול רעשי פופ' כדי לייצב את המעגל.
במסמך הזה נסביר איך למדוד את זמן החימום של האודיו ואת הדרכים האפשריות לקצר את זמן החימום.
מדידת התחממות הפלט
חוט FastMixer של AudioFlinger מודד באופן אוטומטי את החימום של הפלט ומדווח עליו כחלק מהפלט של הפקודה dumpsys media.audio_flinger
.
בתקופת החימום, FastMixer קורא ל-write()
berulang kali שוב ושוב עד שהזמן בין שתי קריאות ל-write()
הוא הערך הצפוי.
FastMixer קובע את תקופת החימום של האודיו על סמך משך הזמן שלוקח לשכבת ההפשטה של החומרה (HAL) write()
להגיע ליציבות.
כדי למדוד את הזמן של ההתחממות האודיו, צריך לפעול לפי השלבים הבאים עבור הרמקול המובנה והאוזניות החוטיות, ובזמנים שונים אחרי ההפעלה. בדרך כלל, זמני החימום שונים בכל מכשיר פלט, וגם מיד אחרי הפעלת המכשיר:
- מוודאים ש-FastMixer מופעל.
- כדי להפעיל את צלילי המגע, בוחרים באפשרות הגדרות > קול ושמע > צלילי מגע במכשיר.
- מוודאים שהאודיו מושבת במשך שלוש שניות לפחות. עדיף להגדיר 5 שניות או יותר, כי לחומרה עצמה יכול להיות לוגיקה משלה של צריכת חשמל מעבר ל-3 שניות של AudioFlinger.
- לוחצים על לחצן דף הבית, וצריך להישמע צליל של קליקים.
- מריצים את הפקודה הבאה כדי לקבל את הזמן למצב מוכן למתן שירות שנמדד:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
הפלט אמור להיראות כך:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
הערך של
measuredWarmup=X
הוא מספר אלפיות השנייה שנדרשו להשלמת הקבוצה הראשונה שלwrite()
של HAL.הערך של
warmupCycles=X
הוא מספר בקשות הכתיבה של HAL שנדרשו עד שזמן הביצוע שלwrite()
תואם לציפיות. - מבצעים חמש מדידות ומתעדים את כולן, כולל את הממוצע. אם הם לא זהים בערך, סביר להניח שמדידה אחת שגויה. לדוגמה, אם לא ממתינים מספיק זמן אחרי שהקול מושבת, זמן החימום שיוצג יהיה נמוך מהערך הממוצע.
מדידת החימום של הקלט
אין כרגע כלים למדידת הזמן של חימום הקלט של האודיו. עם זאת, אפשר להעריך את זמן החימום של הקלט על ידי מעקב אחרי הזמן הנדרש להחזרת הפונקציה startRecording().
קיצור זמן החימום
בדרך כלל אפשר לקצר את זמן ההרצה המואצת באמצעות שילוב של:
- תכנון מעגלים טוב
- עיכובים מדויקים בזמן ב-kernel device driver
- ביצוע פעולות עצמאיות של התחממות מראש בו-זמנית במקום ברצף
- השארת מעגלים במצב מופעל או אי-הגדרה מחדש של שעונים (הגברת צריכת החשמל במצב חוסר פעילות)
- שמירת פרמטרים מחושבים במטמון
עם זאת, חשוב להיזהר מאופטימיזציה מוגזמת. יכול להיות שתצטרכו להחליט אם להעדיף זמן הפעלה קצר או להימנע מרעשי פופ במעברי מתח.