Tags:
Node Thumbnail

Mishaal Rahman นักแกะข้อมูลสาย Android ชื่อดัง รายงานว่ากูเกิลเตรียมใช้ไลบรารีถอดรหัสวิดีโอ AV1 ตัวใหม่ที่มีประสิทธิภาพมากขึ้น ช่วยให้มือถือรุ่นเก่าๆ ที่ไม่มีชิปถอดรหัส AV1 ในตัวสามารถดูวิดีโอ AV1 ด้วยซีพียู แต่ประหยัดแบตเตอรี่กว่าเดิม

เดิมทีนั้น Android ใช้ไลบรารี libgav1 ของกูเกิลเองมาตั้งแต่ Android 10 แต่ไลบรารีถอดรหัสวิดีโอที่นิยมใช้กันในวงการคือ libdav1d ของ VideoLAN ซึ่งมีข้อดีกว่าตรงที่บางส่วนเขียนด้วยภาษาแอสเซมบลี ทำงานกับชิป ARMv8 โดยตรง ช่วยลด overhead ของซีพียูลงได้มาก เหมาะกับการถอดรหัส AV1 บนฮาร์ดแวร์รุ่นเก่าๆ

จากการทดลองของ Rahman เองบนมือถือ Pixel 3 XL รุ่นเก่า การเล่นวิดีโอด้วย libgav1 ได้เฟรมเรตเพียง 10 fps ในขณะที่ libdav1d ได้เฟรมเรตเพิ่มมาเป็น 25-50 fps

สายข่าวของ Rahman บอกว่ากูเกิลตั้งเป้าเปลี่ยนไลบรารี AV1 ผ่าน Google Play System Update (Project Mainline อัพเดตบางส่วนของ OS ได้) ในเดือนมีนาคม 2024 แต่ตอนนี้ยังไม่ชัดว่าต้องเป็น Android เวอร์ชันใดบ้างที่จะได้ไลบรารีตัวใหม่นี้

ที่มา - Android Authority

Get latest news from Blognone

Comments

By: terdsak.s on 29 February 2024 - 08:19 #1306676

overhead => overheat หรือเปล่าครับ

By: Azymik on 29 February 2024 - 08:31 #1306680 Reply to:1306676

ต้นทางก็เป็น overhead ครับ น่าจะหมายถึงช่วยลดภาระการคำนวณ/ใช้หน่วยความจำ บางส่วนลงได้ครับ

By: mk
FounderAndroid
on 29 February 2024 - 09:21 #1306685 Reply to:1306676
mk's picture
By: mr_tawan
ContributoriPhoneAndroidWindows
on 29 February 2024 - 22:34 #1306765 Reply to:1306676
mr_tawan's picture

overhead มันคือการใช้ resource มาก (อาจจะถึงมากกว่าที่ควร) ครับ

ส่วนคำที่เกี่ยวข้องก็คือ headroom ก็คือการมี resource มากเผื่อ overhead

นึกถึงเวลาอยู่บนเครื่องบินก็ได้ครับ overhead คือสิ่งที่อยู่เหนือหัว ส่วน headroom คือพื้นที่ที่อยู่เหนือหัว อะไรงี้ครับ


  • 9tawan.net บล็อกส่วนตัวฮับ
By: rattananen
AndroidWindows
on 29 February 2024 - 10:21 #1306690

บางคนที่คิดว่า Assembly มัน overhead น้อยกว่า compile ภาษาอื่นเอา
นี้เขารู้ว่า compiler มันมี optimization option ให้ด้วยหรือเปล่า?

By: mr_tawan
ContributoriPhoneAndroidWindows
on 29 February 2024 - 22:36 #1306766 Reply to:1306690
mr_tawan's picture

https://godbolt.org/

เขาเปิด assembly ดูได้เลยครับ (แล้วก็เปิดดุกันจริง ๆ นะ) ดังนั้นก็ไม่ต้องมานั่งมโนว่า compiler มันช่วย opimize ได้แล้วออกมาดีจริง ๆ หรือเปล่า


  • 9tawan.net บล็อกส่วนตัวฮับ
By: Ginosty
AndroidWindows
on 29 February 2024 - 22:41 #1306768 Reply to:1306690

Optimization ของ compiler มันไม่ได้ฝากความหวังได้ขนาดนั้นครับ
ยังไม่รวมเรื่องหลายๆงาน มีข้อห้ามเรื่องการใช้ compiler optimization (พวกที่ใช้ในรถยนต์ รถไฟเครื่องบิน และอื่นๆที่มี safety standard กำกับอยู่)

อันนี้ประสบการณ์ตรงๆของผมเอง ...เคยมีคนจ้างให้ optimize matrix functions
ต้นฉบับเขียนมาด้วยภาษา C ปัญหาคือพอเอาไปใช้งานบน MCU บางตัวมันเร็วไม่พอ ต่อให้เปิด optimization สุดแล้วก็ยังไม่พอ
แต่พอเอามาเขียนเป็น assembly หลักๆที่ผมทำก็คือใช้ pipelineให้เต็มที่.... ลดเวลาลงไปได้เยอะอยู่ครับ

แต่ในอีกมุมนึง ถ้าเขียน assembly ล้วนแต่อยากให้ทำงานช้าก็ได้นะครับ

By: btoy
ContributorAndroidWindows
on 1 March 2024 - 08:33 #1306779 Reply to:1306768
btoy's picture

ขอบคุณสำหรับความรู้ฮับ


..: เรื่อยไป

By: rattananen
AndroidWindows
on 1 March 2024 - 11:07 #1306792 Reply to:1306768

พอมี case ที่มันใช้องค์ประกอบ/อุปกรณ์น้อยๆ ให้ลองสักหน่อยไหมครับ มันยังคาใจ

เท่าที่รู้คือ เวลาเรา coding เพื่อให้ compiler มัน optimize ให้เราต้อง express intention/explicit หรือใช้ idiom ไม่งั้นอาจจะ generate code ที่เราไม่ต้องการให้

อย่าง https://godbolt.org/z/sre4x39sa
- ถ้าไม่ใช้ volatile มันจะเปลี่ยนตัวแปรเป็น constant ให้
- idiom สำหรับ change endian จากที่ต้อง bitwise เยอะๆ เป็น bswap คำสั่งเดียว

ฉะนั้นผมโยนงานพวกนี้ให้ compiler ไปเอาเวลาไปคิดอย่างอื่นดีกว่า