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