DEV Community

Tuan Thanh Tan
Tuan Thanh Tan

Posted on

SPO600 - Project Stage 3

Introduction

Hello everyone, my name is Dustin. Today I'd like to talk about my last stage of spo600 project.

In my previous blog, I had a little discussion about ffmpeg and how it is important to us. So for this stage, I'm going to give some suggestions on how ffmpeg should be extended to support Scalable Vector Extensions v2(SVE2)

About SVE2

Speaking about SVE2, it is a superset of SVE and Neon. SVE2 gives more function domains, because it inherits its previous concepts including vector registers, and operation principles. So people are able to opt for hardware with a maximum of 2048 bits. Refer here

Recommendation

Because ffmpeg focuses much on process multimedia content such as audio, video, subtitles and related metadata, which are considered to be quite heavy as it involves a lot of decoding, encoding,... So SVE2 would bring a huge benefit in terms of options, flexibility. The good old SIMD instructions to do some color conversions or scaling routines can be improved by a library which is called libswscale. This library will tremendously bring ffmpeg to a whole new level as it help improve the process time. Apart from that, ffmpeg is using Neon in order to do some vector thing which can be improved by switching to SVE2 in order to utilize its benefits as it allows vector code to adapt to a wide range of vector lengths during execution time.

Wrap up

SVE2 has 32 scalable vector registers which ranges from Z0 to Z31 and it can be implemented from 128 bits up to 2045 bits with 128 increment which is amazing so by taking advantage of SVE2, people can actually maximize the usage of ffmpeg. This is a powerful tool but when given an add-on, it will offer more strength that facilitates users.

Top comments (0)