การอุ่นเครื่องเสียง

การวอร์มเสียงคือเวลาที่วงจรเครื่องขยายเสียงในอุปกรณ์ของคุณได้รับพลังงานเต็มที่และเข้าสู่สถานะการทำงานปกติ ปัจจัยหลักที่ทำให้เวลาในการวอร์มเสียงคือการจัดการพลังงานและตรรกะ "ดีป๊อป" เพื่อทำให้วงจรมีเสถียรภาพ

เอกสารนี้อธิบายวิธีการวัดเวลาวอร์มเสียงและวิธีที่เป็นไปได้ในการลดเวลาวอร์ม

วัดการอุ่นเครื่องเอาต์พุต

เธรด FastMixer ของ AudioFlinger จะวัดการวอร์มอัพเอาต์พุตโดยอัตโนมัติ และรายงานเป็นส่วนหนึ่งของเอาต์พุตของคำสั่ง dumpsys media.audio_flinger เมื่ออุ่นเครื่อง FastMixer จะเรียก write() ซ้ำๆ จนกระทั่งเวลาระหว่างสองครั้ง write() จะเป็นจำนวนที่คาดไว้ FastMixer กำหนดการวอร์มเสียงโดยดูว่า write() ของ Hardware Abstraction Layer (HAL) ใช้เวลานานแค่ไหนในการรักษาเสถียรภาพ

หากต้องการวัดการอุ่นเครื่องของเสียง ให้ทำตามขั้นตอนเหล่านี้สำหรับลำโพงในตัวและหูฟังแบบมีสาย และในเวลาอื่นหลังจากการบูต โดยปกติเวลาในการอุ่นเครื่องจะแตกต่างกันสำหรับอุปกรณ์เอาท์พุตแต่ละเครื่องและทันทีหลังจากบูตอุปกรณ์:

  1. ตรวจสอบให้แน่ใจว่า FastMixer เปิดอยู่
  2. เปิดใช้งานเสียงสัมผัสโดยเลือก การตั้งค่า > เสียง > เสียงสัมผัส บนอุปกรณ์
  3. ตรวจสอบให้แน่ใจว่าปิดเสียงแล้วอย่างน้อยสามวินาที ห้าวินาทีขึ้นไปจะดีกว่า เนื่องจากฮาร์ดแวร์อาจมีตรรกะด้านพลังงานของตัวเองเกินกว่าสามวินาทีที่ AudioFlinger มี
  4. กด Home แล้วคุณจะได้ยินเสียงคลิก
  5. รันคำสั่งต่อไปนี้เพื่อรับการอุ่นเครื่องที่วัดได้:
    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() ตรงกับที่คาดไว้

  6. ทำการวัดห้าครั้งแล้วบันทึกทั้งหมดรวมทั้งค่าเฉลี่ยด้วย หากไม่เหมือนกันทั้งหมดโดยประมาณ ก็มีแนวโน้มว่าการวัดจะไม่ถูกต้อง ตัวอย่างเช่น หากคุณไม่รอนานพอหลังจากปิดเสียงแล้ว คุณจะเห็นเวลาอุ่นเครื่องต่ำกว่าค่าเฉลี่ย

วัดการอุ่นเครื่องอินพุต

ขณะนี้ไม่มีเครื่องมือสำหรับการวัดการอุ่นเครื่องอินพุตเสียง อย่างไรก็ตาม สามารถประมาณเวลาอุ่นเครื่องอินพุตได้โดยการสังเกตเวลาที่จำเป็นสำหรับ startRecording() เพื่อส่งคืน

ลดเวลาการอุ่นเครื่อง

เวลาวอร์มอัพสามารถลดลงได้โดยใช้:

  • การออกแบบวงจรที่ดี
  • การหน่วงเวลาที่แม่นยำในไดรเวอร์อุปกรณ์เคอร์เนล
  • การดำเนินการวอร์มอัพอิสระพร้อมกันแทนที่จะเป็นตามลำดับ
  • การเปิดวงจรทิ้งไว้หรือไม่กำหนดค่านาฬิกาใหม่ (เพิ่มการใช้พลังงานที่ไม่ได้ใช้งาน)
  • การแคชพารามิเตอร์ที่คำนวณ

อย่างไรก็ตาม ระวังการเพิ่มประสิทธิภาพมากเกินไป คุณอาจพบว่าคุณจำเป็นต้องแลกระหว่างเวลาวอร์มอัพที่ต่ำกับการขาดการเด้งเมื่อเปลี่ยนกำลัง