ไขความลับแก้ดีเลย์วิดีโอบน Raspberry Pi ในโปรเจกต์โคลนจอย Wii U ได้สำเร็จ

บอร์ดคอมพิวเตอร์ขนาดเล็กอย่าง Raspberry Pi ถือเป็นอุปกรณ์ยอดนิยมในหมู่นักประดิษฐ์สำหรับการประมวลผลภาพและวิดีโอ อย่างไรก็ตาม การส่งสัญญาณภาพมักจะมาพร้อมกับปัญหาความหน่วงหรือความล่าช้า (Latency) เสมอ ซึ่งเป็นความท้าทายสำคัญที่ [MattKC] ต้องเผชิญระหว่างการพัฒนาโปรเจกต์ส่วนตัวในการสตรีมสัญญาณวิดีโอจากเครื่องคอนโซล Wii U มายังบอร์ด Raspberry Pi Zero 2W เพื่อโคลนจอยควบคุมขึ้นมาใหม่

ในช่วงเริ่มต้นโปรเจกต์ เขาต้องพบกับปัญหาความหน่วงประหลาดขนาด 3 เฟรมในกระบวนการส่งสัญญาณวิดีโอที่แก้ไขอย่างไรก็ไม่หาย แม้จะพยายามทดลองด้วยการแทรกเฟรมจำลอง (Dummy frames) เข้าไปในระบบและสั่งให้ระบบข้ามการทำงานในขั้นตอนการแสดงผลแล้วก็ตาม แต่ความล่าช้านี้ก็ยังคงปรากฏอยู่ จนกระทั่งเขาตระหนักว่าต้นตอของปัญหานั้นไม่ได้เกิดจากจำนวนเฟรม แต่เกิดขึ้นจากเวลาที่สูญเสียไปประมาณ 50 มิลลิวินาที

เมื่อตรวจสอบอย่างละเอียดลึกซึ้งขึ้น เขาพบข้อบกพร่องในวิธีที่เฟรมภาพถูกส่งเข้าไปและรับออกจากตัวถอดรหัสภาพ (Decoder) โดยเฟรมแรกสุดจะใช้เวลาถอดรหัสนานถึง 50 มิลลิวินาที ในขณะที่เฟรมต่อๆ ไปจะใช้เวลาเพียงแค่ 5 มิลลิวินาทีเท่านั้น แต่เนื่องจากโค้ดดั้งเดิมไม่ได้ออกแบบมาเพื่อดึงเฟรมออกไปใช้งานทันทีที่ถอดรหัสเสร็จสิ้น ส่งผลให้ความหน่วงเริ่มต้นของเฟรมแรกนั้นสะสมและส่งผลกระทบต่อเนื่องลากยาวไปเรื่อยๆ

เพื่อแก้ไขปัญหาดังกล่าว [MattKC] ได้ปรับปรุงระบบให้มีการสแกนเพื่อตรวจสอบสถานะการทำงานของตัวถอดรหัสสัญญาณภาพอย่างสม่ำเสมอ (Polling) เพื่อดึงภาพออกมาใช้งานทันทีที่กระบวนการถอดรหัสเฟรมนั้นๆ เสร็จสิ้น ผลลัพธ์สุดท้ายคือ Raspberry Pi Zero 2W สามารถประมวลผลและแสดงผลสัญญาณภาพจาก Wii U ได้อย่างลื่นไหลและรวดเร็วเทียบเท่ากับจอย Wii U Gamepad ดั้งเดิมของนินเทนโด


🏷️ หมวดหมู่: Nintendo Hacks, nintendo, nintendo wiiu, raspberry pi, WiiU

🔗 อ่านบทความฉบับเต็ม: hackaday