Flash 10.2 Beta พร้อมฟีเจอร์ Stage Video กินซีพียูเกือบ 0%

by mk
5 December 2010 - 10:13

ปัญหาของ Flash ที่ทุกคนรู้กันดีคือเรื่องประสิทธิภาพ แม้ในอดีตที่ผ่านมา Adobe จะ "ขี้เกียจ" ไปบ้าง แต่ช่วงหลังเราก็เห็นพัฒนาการของ Flash ในทิศทางที่ดีขึ้น

ล่าสุด Adobe เปิดตัว Flash Player 10.2 รุ่นเบต้า ฟีเจอร์ที่สำคัญที่สุดของมันคือ Stage Video ซึ่งจะส่งผลให้การเล่นวิดีโอบน Flash กินซีพียูเกือบ 0% ถ้านับกรณีที่ดีที่สุด

Stage Video

Stage Video คืออะไร? ก่อนอื่นต้องเข้าใจวิธีการประมวลผลวิดีโอของ Flash เสียก่อน

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

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

ใน Flash 10.2 จึงเปลี่ยนวิธีจัดการกับวิดีโอใหม่ โดยมองว่ามันเป็น "ออปเจคต์พิเศษ" ชื่อ StageVideo แทน ออปเจคต์ชนิดนี้จะถูกเรนเดอร์แยกจากออปเจคต์อื่นๆ ดังภาพ

StageVideo จะมีฟีเจอร์แบบ Flash น้อยลง เช่น หมุนเอียงอิสระไม่ได้ (ต้องหมุนเป็นมุมฉากเท่านั้น), แปลงสีหรือแปลงเป็น 3 มิติไม่ได้, ใส่ฟิลเตอร์ไม่ได้ ฯลฯ แต่ก็มีข้อดีในมุมกลับคือต้องการพลังประมวลผลน้อยลงมาก

การประมวลผลวิดีโอใน Flash 10.2

ฟีเจอร์ที่เพิ่มเข้ามาใน Flash 10.1 คือการใช้ GPU ช่วยถอดรหัส (decode) วิดีโอ ซึ่งต้องเข้ารหัสมาเป็น H.264 จึงจะใช้ฟีเจอร์นี้ได้

แต่ Flash 10.1 ใช้ GPU ได้กับตัววิดีโอโดยตรงเท่านั้น ส่วนประกอบอื่นๆ ในการเรนเดอร์วิดีโอ (video pipeline) เช่น การปรับสี การขยายขนาดวิดีโอ ฯลฯ พวกนี้ยังต้องใช้ซีพียูช่วยทำงานอยู่

ฟีเจอร์ Stage Video ใน Flash 10.2 จะเข้ามาช่วยในกระบวนการหลัง นั่นคือ ถ้าไฟล์ Flash ที่ต้องการแสดงผล ฝังวิดีโอด้วยวิธี Stage Video และเปิดเล่นด้วย Flash Player 10.2 กระบวนการเรนเดอร์วิดีโอจะถูกโยกไปทำงานใน GPU โดยอัตโนมัติ แปลว่ากระบวนการแสดงผลวิดีโอทั้งหมดจะไม่ต้องใช้ซีพียูเลย

สรุปอีกครั้งเพื่อความเข้าใจที่ดีขึ้น ตอนนี้เรามีสถานการณ์ทั้งหมด 4 แบบ

  • สร้างวิดีโอเป็นออปเจคต์ปกติ, ไม่ได้เข้ารหัสวิดีโอเป็น H.264 ทุกอย่างจะประมวลผลในซีพียู
  • สร้างวิดีโอเป็นออปเจคต์ปกติ, เข้ารหัสวิดีโอเป็น H.264 การถอดรหัสจะใช้ GPU, การเรนเดอร์จะยังทำโดยซีพียู (นี่คือกรณีของ Flash 10.1)
  • สร้างวิดีโอด้วย Stage Video, ไม่ได้เข้ารหัสวิดีโอเป็น H.264 การถอดรหัสจะใช้ซีพียู, การเรนเดอร์จะทำใน GPU
  • สร้างวิดีโอด้วย Stage Video, เข้ารหัสวิดีโอเป็น H.264 ทุกอย่างจะอยู่ใน GPU (นี่คือกรณีที่ดีที่สุดของ Flash 10.2)

Adobe โฆษณาว่าสามารถเล่นวิดีโอ 1080p โดยใช้ซีพียูที่เกือบ 0% ได้ รายละเอียดเรื่อง Stage Video อ่านเพิ่มได้จาก Getting started with stage video

ผู้ที่สนใจสามารถติดตั้ง Flash Player 10.2 Beta แล้วทดสอบกับ เดโมของ Adobe ซึ่งเราจะได้ทดสอบกรณีที่ 3 กับกรณีที่ 4 เทียบกัน

หรือถ้าไม่อยากทดสอบเอง ก็ดูผลการทดสอบจากเว็บไซต์ Phoronix แทนได้ครับ อันนี้รันบนลินุกซ์

จะเห็นว่า Flash 10.2 จะใช้ซีพียูประมวลผลน้อยกว่า Flash 10.1 มาก แม้งานจะถูกโยกไปรันใน GPU แทน แต่ก็เปลืองพลัง GPU ไม่มากนักคือประมาณ 20-25% เท่านั้น

ฟีเจอร์ Stage Video นี้ถูกใช้อยู่ก่อนแล้วใน Flash Player รุ่นที่อยู่บน Google TV และตอนนี้ YouTube ก็รองรับฟีเจอร์นี้เรียบร้อยแล้ว

ฟีเจอร์อื่นๆ ของ Flash 10.2

นอกจากเรื่อง Stage Video ที่เป็นเรื่องสำคัญแล้ว Flash 10.2 ก็ยังมีฟีเจอร์อื่นเพิ่มเข้ามาด้วย

  • ใช้ฟีเจอร์ GPU Acceleration ของ IE9 ช่วยประมวลผลกราฟิก (เป็นฟีเจอร์ใน Flash Player "Square")
  • เล่นวิดีโอแบบเต็มจอบนจอภาพหนึ่ง และทำงานอื่นบนอีกจอภาพหนึ่ง
  • สร้างเคอร์เซอร์แบบ native ได้แล้ว จากเดิมที่ต้องวาดเคอร์เซอร์เอง
  • ปรับปรุงการเรนเดอร์ตัวอักษรให้ดีขึ้น

ที่มา - Adobe Blog

หมายเหตุ: ฟีเจอร์ Stage Video บนลินุกซ์ ใช้ได้เฉพาะการ์ดจอ NVIDIA เท่านั้น คนที่ใช้ Intel/ATI ก็ต้องรอไปก่อนครับ - OSNews

Blognone Jobs Premium