การปรับเสียง

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

เอกสารนี้จะอธิบายวิธีวัดเวลาอุ่นเครื่องของเสียงและวิธีต่างๆ ที่เป็นไปได้ในการลดเวลาอุ่นเครื่อง

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

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

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

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

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

โดยทั่วไปแล้ว คุณสามารถลดเวลาในการอุ่นเครื่องได้โดยใช้วิธีต่อไปนี้ร่วมกัน

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

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