การอุ่นเครื่องเสียงคือเวลาที่ใช้ในการจ่ายไฟให้วงจรขยายเสียงในอุปกรณ์จนเต็มและเข้าสู่สถานะการทำงานปกติ ปัจจัยหลักที่ส่งผลต่อเวลาอุ่นเครื่องของเสียงคือการจัดการพลังงานและตรรกะ "ลดเสียงป๊อป" เพื่อทำให้วงจรเสถียร
เอกสารนี้จะอธิบายวิธีวัดเวลาอุ่นเครื่องของเสียงและวิธีต่างๆ ที่เป็นไปได้ในการลดเวลาอุ่นเครื่อง
วัดการอุ่นเครื่องเอาต์พุต
เทรด FastMixer ของ AudioFlinger จะวัดการอุ่นเครื่องเอาต์พุตโดยอัตโนมัติ และรายงานเป็นส่วนหนึ่งเอาต์พุตของคำสั่ง dumpsys media.audio_flinger
ในการอุ่นเครื่อง FastMixer จะเรียก write()
ซ้ำๆ จนกว่าเวลาระหว่าง write()
2 รายการจะเท่ากับจำนวนที่คาดไว้
FastMixer จะกำหนดเวลาอุ่นเครื่องเสียงโดยดูว่าเลเยอร์การแยกแยะฮาร์ดแวร์ (HAL) write()
ใช้เวลานานเท่าใดในการทำให้เสถียร
หากต้องการวัดเวลาในการอุ่นเครื่องของเสียง ให้ทำตามขั้นตอนต่อไปนี้สำหรับลำโพงในตัวและหูฟังแบบใช้สาย และวัดในเวลาต่างๆ หลังจากการบูต โดยปกติแล้วเวลาอุ่นเครื่องจะแตกต่างกันไปสำหรับอุปกรณ์เอาต์พุตแต่ละเครื่อง และหลังจากบูตอุปกรณ์
- ตรวจสอบว่าได้เปิดใช้ FastMixer แล้ว
- เปิดใช้เสียงสัมผัสโดยเลือกการตั้งค่า > เสียง > เสียงสัมผัสในอุปกรณ์
- ตรวจสอบว่าเสียงปิดอยู่อย่างน้อย 3 วินาที 5 วินาทีขึ้นไปจะดีกว่า เนื่องจากฮาร์ดแวร์เองอาจมีตรรกะการจ่ายไฟของตัวเองนอกเหนือจาก 3 วินาทีที่ 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()
จะตรงกับที่คาดไว้ - วัดค่า 5 ครั้งและบันทึกค่าทั้งหมด รวมถึงค่าเฉลี่ย หากค่าเหล่านี้ไม่เท่ากันโดยประมาณ แสดงว่าการวัดผลอาจไม่ถูกต้อง ตัวอย่างเช่น หากคุณรอไม่นานพอหลังจากที่ปิดเสียง คุณจะเห็นเวลาอุ่นเครื่องต่ำกว่าค่าเฉลี่ย
วัดการอุ่นเครื่องอินพุต
ขณะนี้ยังไม่มีเครื่องมือสำหรับวัดการอุ่นเครื่องอินพุตเสียง อย่างไรก็ตาม คุณสามารถประมาณเวลาอุ่นเครื่องของอินพุตได้โดยสังเกตเวลาที่จำเป็นสำหรับ startRecording() ให้แสดงผล
ลดเวลาในการอุ่นเครื่อง
โดยทั่วไปแล้ว คุณสามารถลดเวลาในการอุ่นเครื่องได้โดยใช้วิธีต่อไปนี้ร่วมกัน
- การออกแบบวงจรที่ดี
- หน่วงเวลาอย่างถูกต้องในไดรเวอร์อุปกรณ์เคอร์เนล
- การดำเนินการอุ่นเครื่องแบบอิสระพร้อมกันแทนที่จะทําตามลำดับ
- การไม่ปิดวงจรหรือไม่ได้กำหนดค่านาฬิกาใหม่ (เพิ่มการใช้พลังงานขณะที่ไม่ได้ใช้งาน)
- การแคชพารามิเตอร์ที่คำนวณแล้ว
อย่างไรก็ตาม โปรดระวังการเพิ่มประสิทธิภาพมากเกินไป คุณอาจพบว่าต้องเลือกระหว่างเวลาอุ่นเครื่องที่ต่ำกับไม่มีการปรากฏขึ้นของเสียงป๊อปเมื่อเปลี่ยนกำลังไฟฟ้า