การวอร์มเสียงคือเวลาที่วงจรเครื่องขยายเสียงในอุปกรณ์ของคุณได้รับพลังงานเต็มที่และเข้าสู่สถานะการทำงานปกติ ปัจจัยหลักที่ทำให้เวลาในการวอร์มเสียงคือการจัดการพลังงานและตรรกะ "ดีป๊อป" เพื่อทำให้วงจรมีเสถียรภาพ
เอกสารนี้อธิบายวิธีการวัดเวลาวอร์มเสียงและวิธีที่เป็นไปได้ในการลดเวลาวอร์ม
วัดการอุ่นเครื่องเอาต์พุต
เธรด FastMixer ของ AudioFlinger จะวัดการวอร์มอัพเอาต์พุตโดยอัตโนมัติ และรายงานเป็นส่วนหนึ่งของเอาต์พุตของคำสั่ง dumpsys media.audio_flinger
เมื่ออุ่นเครื่อง FastMixer จะเรียก write()
ซ้ำๆ จนกระทั่งเวลาระหว่างสองครั้ง write()
จะเป็นจำนวนที่คาดไว้ FastMixer กำหนดการวอร์มเสียงโดยดูว่า write()
ของ Hardware Abstraction Layer (HAL) ใช้เวลานานแค่ไหนในการรักษาเสถียรภาพ
หากต้องการวัดการอุ่นเครื่องของเสียง ให้ทำตามขั้นตอนเหล่านี้สำหรับลำโพงในตัวและหูฟังแบบมีสาย และในเวลาอื่นหลังจากการบูต โดยปกติเวลาในการอุ่นเครื่องจะแตกต่างกันสำหรับอุปกรณ์เอาท์พุตแต่ละเครื่องและทันทีหลังจากบูตอุปกรณ์:
- ตรวจสอบให้แน่ใจว่า FastMixer เปิดอยู่
- เปิดใช้งานเสียงสัมผัสโดยเลือก การตั้งค่า > เสียง > เสียงสัมผัส บนอุปกรณ์
- ตรวจสอบให้แน่ใจว่าปิดเสียงแล้วอย่างน้อยสามวินาที ห้าวินาทีขึ้นไปจะดีกว่า เนื่องจากฮาร์ดแวร์อาจมีตรรกะด้านพลังงานของตัวเองเกินกว่าสามวินาทีที่ AudioFlinger มี
- กด Home แล้วคุณจะได้ยินเสียงคลิก
- รันคำสั่งต่อไปนี้เพื่อรับการอุ่นเครื่องที่วัดได้:
adb shell dumpsys media.audio_flinger | grep measuredWarmup
คุณควรเห็นผลลัพธ์ดังนี้:
sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
measuredWarmup=X
คือจำนวน X ของมิลลิวินาทีที่ใช้ในwrite()
HAL ชุดแรกจนเสร็จสมบูรณ์warmupCycles=X
คือจำนวนคำขอเขียน HAL ที่ใช้จนกระทั่งเวลาดำเนินการของwrite()
ตรงกับที่คาดไว้ - ทำการวัดห้าครั้งแล้วบันทึกทั้งหมดรวมทั้งค่าเฉลี่ยด้วย หากไม่เหมือนกันทั้งหมดโดยประมาณ ก็มีแนวโน้มว่าการวัดจะไม่ถูกต้อง ตัวอย่างเช่น หากคุณไม่รอนานพอหลังจากปิดเสียงแล้ว คุณจะเห็นเวลาอุ่นเครื่องต่ำกว่าค่าเฉลี่ย
วัดการอุ่นเครื่องอินพุต
ขณะนี้ไม่มีเครื่องมือสำหรับการวัดการอุ่นเครื่องอินพุตเสียง อย่างไรก็ตาม สามารถประมาณเวลาอุ่นเครื่องอินพุตได้โดยการสังเกตเวลาที่จำเป็นสำหรับ startRecording() เพื่อส่งคืน
ลดเวลาการอุ่นเครื่อง
เวลาวอร์มอัพสามารถลดลงได้โดยใช้:
- การออกแบบวงจรที่ดี
- การหน่วงเวลาที่แม่นยำในไดรเวอร์อุปกรณ์เคอร์เนล
- การดำเนินการวอร์มอัพอิสระพร้อมกันแทนที่จะเป็นตามลำดับ
- การเปิดวงจรทิ้งไว้หรือไม่กำหนดค่านาฬิกาใหม่ (เพิ่มการใช้พลังงานที่ไม่ได้ใช้งาน)
- การแคชพารามิเตอร์ที่คำนวณ
อย่างไรก็ตาม ระวังการเพิ่มประสิทธิภาพมากเกินไป คุณอาจพบว่าคุณจำเป็นต้องแลกระหว่างเวลาวอร์มอัพที่ต่ำกับการขาดการเด้งเมื่อเปลี่ยนกำลัง