FFV1
FFV1 copied to clipboard
FFV1 CUDA accelerated version
Hi,
Not sure I'm at the right place to ask this question, but I would like to know if there is any implementation of FFV1 available for CUDA.
If not, do you have any advice on the complexity/feasibility of porting FFV1 on CUDA platform? Is it highly parallelizable?
Don't hesitate to point me to other online resources/repo/person if I'm not at the right place!
Thanks for your time
I would like to know if there is any implementation of FFV1 available for CUDA.
AFAIK there is no CUDA implementation but this is on my todo-list. This is definitely something we need to do as HDTV or 2K are now used with FFV1 and basic CPU processing is not enough for current CPUs, even with multi-thread.
If not, do you have any advice on the complexity/feasibility of porting FFV1 on CUDA platform? Is it highly parallelizable?
I expect that it is highly parallelizable on lot of parts, but the range coder (which consumes the biggest part of the time) may be more tricky to parallelize, we'll know the gain only when it is implemented.
We use an in-house implementation of FFV1 on CUDA (GeForce) on a daily basis since before the pandemic.
The parallelisation could be improved by modifying a little the bitstream syntax.
Thank you for your feedback!
@retokromer: Have you considered to put it in the public domain? If not, do you have an estimation of developper.hour for the development? Can you give a bit more details regarding what you are encoding (resolution/FPS) and which performance you get?
I'm also considering VC-2 as a codec, but FFV1 exists for a long time and seems to be de-facto standard in the video industry. However, VC-2 website provides a good overview of the performance/compression ratio that's achievable. Do you know where I can find such resource for FFV1?
Have you considered to put it in the public domain?
Yes, that’s the plan. Yet no schedule is set, as I do this in my spare time.
Do you know where I can find such resource for FFV1?
I guess @pjotrek-b and @digitensions have some.
On my end, I did prepare figures for NTTW4 in 2019 at Budapest, but I could finally not attend, because of a date conflict. One of the aspects I did explore was the influence of the -slices
flag on encoding time and file size.
Do you know where I can find such resource for FFV1?
We compared FFV1 with JPEG-2000 in a study few years ago.
An old but still relevant study compares FFV1 with a couple of other more or less open lossless formats (but not VC-2/Dirac), here is an excerpt:
There is also a quick study including formats requiring royalties.
That said, we definitely lack of up to date comparison charts about speed and compression.
Have you considered to put it in the public domain?
Yes, that’s the plan. Yet no schedule is set, as I do this in my spare time.
We might put some resources internally on this project, is there anything we can do to make things happen?
On my end, I did prepare figures for NTTW4 in 2019 at Budapest, but I could finally not attend, because of a date conflict. One of the aspects I did explore was the influence of the
-slices
flag on encoding time and file size.
Great, do not hesitate to share, I will start experiementation with FFV1 next week :)
We compared FFV1 with JPEG-2000 in a study few years ago.
This document is gold, thank you for sharing your work! Maybe it can found its place in the Wiki section of this repo?
An old but still relevant study compares FFV1 with a couple of other more or less open lossless formats (but not VC-2/Dirac), here is an excerpt:
Found this one, but I guess every codec have evolved since then!
How exciting! :smile:
@lp35: My performance stats @retokromer refers to can be found here: http://download.das-werkstatt.com/pb/mthk/ffv1_stats/latest/
Since they were generated for/during development of FFV1.2+, they're not only dated (2012) but also a bit hard to read.
In a nutshell: They list compression gain for 2 different things:
- Different encoding parameters (compared to uncompressed)
- GOP=1 vs GOP=300