วอร์มอัพเสียง

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

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

วัดการวอร์มอัพเอาต์พุต

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

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

  1. ตรวจสอบว่าเปิดใช้ FastMixer แล้ว
  2. เปิดใช้เสียงแตะโดยเลือกการตั้งค่า > เสียง > เสียงแตะในอุปกรณ์
  3. ตรวจสอบว่าเสียงปิดอยู่อย่างน้อย 3 วินาที อย่างน้อย 5 วินาทีย่อมดีกว่า เนื่องจาก ตัวฮาร์ดแวร์เองอาจมีตรรกะทางกำลังของตัวเองเกิน 3 วินาทีของ AudioFlinger
  4. เมื่อกดหน้าแรก คุณจะได้ยินเสียงคลิก
  5. เรียกใช้คำสั่งต่อไปนี้เพื่อรับวอร์มอัพที่วัดได้
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    คุณควรจะเห็นเอาต์พุตดังนี้

    sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
    

    measuredWarmup=X เป็นจำนวน X ของมิลลิวินาที ที่ใช้เวลาดำเนินการสำหรับ HAL write() ชุดแรก

    warmupCycles=X คือจำนวนคำขอเขียน HAL ที่ใช้ไป จนกว่าเวลาดำเนินการของ write() จะตรงกับที่คาดไว้

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

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

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

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

โดยทั่วไปจะลดเวลาอุ่นเครื่องได้ด้วยการใช้วิธีต่อไปนี้

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

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