View Full Version : OpenAPV ?


Selur
13th October 2025, 16:56
Seeing that https://github.com/m-ab-s/media-autobuild_suite builds:
OpenAPV (https://github.com/AcademySoftwareFoundation/openapv) which like ProRes seems to aim for 'Perceptually lossless video quality', I was wondering whether someone compared it to ProRes or similar formats?

Cu Selur

Z2697
13th October 2025, 18:18
There haven't been a detailed comparison by fellow forum members (yet).
https://forum.doom9.org/showthread.php?t=185868

Jamaika
13th October 2025, 20:41
Hugely — it’s the reason a file is small or large. In general, a newer compressed codec will be more efficient and have higher image quality than an older codec at the same data rate. Another way to look at it: older compressed codecs need to use higher data rates to achieve the same image quality as newer ones. But also remember that different encoding apps can achieve different results.

GeoffreyA
18th October 2025, 09:09
Using an FFV1 YUV420P8 copy of Sol Levante:


ffmpeg -i sol.mkv -c:v prores prores.mkv
ffmpeg -i sol.mkv -c:v apv apv.mkv

APV = 1.86 GB
ProRes = 3.7 GB
FFV1 = 4.6 GB

With another source, I noticed that APV had mild compression noise, the default setting being too strong. I think it can be adjusted but haven't gone into that. Both APV and ProRes forced YUV422P10 as their default pixel format.

Jamaika
18th October 2025, 09:18
ProRes forced YUV422P10 as their default pixel format.
OpenAPV and ProRes isn't 8bit, yuv420p.
https://en.wikipedia.org/wiki/Apple_ProRes

Zebulon84
29th June 2026, 22:42
Just saw on Phoronix that OpenAPV 0.3 is out, with RAW Encoding/Decoding Support.
https://www.phoronix.com/news/OpenAPV-0.3

As I'm not a video professional, I have no idea if this is useful or not.

Jamaika
30th June 2026, 07:50
Tested by Jamaica. You can create your own encoders. I tested it with my latest ffmpeg with pthread. (yuv422p10le)
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v hap -format hap -chunks 4 -compressor snappy -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_hap.mkv
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v prores -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_prores.mkv {ffmpeg doesn't encode 12bit ProRes}
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v ffv1 -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_ffv1.mkv
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v liboapv -preset placebo -qp 0 -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_oapv.mkv {the video doesn't play smoothly at 60fps, slow compression, ffmpeg doesn't encode 12bit APV1}
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v dnxhd -profile 4 -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_dnxhd.mkv {ffmpeg doesn't encode 12bit DNxHR}
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v libsvtjpegxs -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_svtjxs.mts {successor MJPEG 2000, there is no madness}
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v cfhd -quality 0 -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_cfhd.mkv {old codec, not recommended}
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v v210 -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_v210.mkv

output_hap.mkv 967727149 (rgb)
output_prores.mkv 754493923 (yuv422p10le)
output_ffv1.mkv 1510382592 (yuv422p10le)
output_oapv.mkv 2090983041 (yuv422p10le)
output_dnxhd 917549717 (yuv422p10le)
output_svtjxs.mts 5297038180 (yuv422p10le)
output_cfhd.mkv 1124165667 (yuv422p10le)
output_v210.mkv 5529647908 (yuv422p10le)

Testing codecs in terms of quality and size, e.g. for q 75(0-100) is unrealistic.

Z2697
30th June 2026, 08:50
Tested by Jamaica. You can create your own encoders. I tested it with my latest ffmpeg. (yuv422p10le)
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v libtheora -q:v 0 -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_theora.ogg
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v hap -format hap -chunks 4 -compressor snappy -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_hap.mkv
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v prores -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_prores.mkv
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v ffv1 -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_ffv1.mkv
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v liboapv -preset placebo -qp 0 -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_oapv.mkv {the video doesn't play smoothly at 60fps, slow compression}
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v libsvtjpegxs -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_svtjxs.mts
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v cfhd -quality 0 -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_cfhd.mkv {old codec, not recommended}
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v r210 -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_r210.mkv

output_hap.mkv 967727149 (rgb)
output_prores.mkv 754493923 (yuv422p10le)
output_ffv1.mkv 1510382592 (yuv422p10le)
output_oapv.mkv 2090983041 (yuv422p10le)
output_svtjxs.mts 5297038180 (yuv422p10le)
output_cfhd.mkv 1124165667 (yuv422p10le)
output_r210.mkv 8294448177 (yuv422p10le)

This test is basically useless though.
Almost nothing is controlled.
It only tells one thing, that is these encoders are functional.

Jamaika
30th June 2026, 09:02
This test is basically useless though.
Almost nothing is controlled.
It only tells one thing, that is these encoders are functional.
I understand that the question is which encoder provides the smallest lossless file size for private archiving not necessarily in the cloud.. What compression capabilities does the encoder have? The user is concerned about whether they aren't wasting time and money. It has to work, otherwise it ends up in the trash and that's it.
The most important question in this thread. What new capabilities does the OpenAPV codec offer?

Z2697
30th June 2026, 10:46
i understand that the question is which encoder provides the smallest lossless file size for private archiving not necessarily in the cloud.. What compression capabilities does the encoder have? The user is concerned about whether they aren't wasting time and money. It has to work, otherwise it ends up in the trash and that's it.
The most important question in this thread. What new capabilities does the openapv codec offer?

they are NOT lossless
apv offer nothing new but open.

benwaggoner
1st July 2026, 19:00
they are NOT lossless
apv offer nothing new but open.
VC-6 strikes me as the most interesting of the new potential mezzanine codecs due to its ability to decode specific regions or resolutions only. It's maybe 20% better efficiency than ProRes, but that's not enough to drive a market change.

Compression efficiency isn't the most important thing for mezzanine codecs. It's about "good enough" with stable visually lossless multigenerational quality. That's particularly useful for AI applications, like determining an OCR bounding box and only reading that region at just the needed resolution and bit depth.

CruNcher
2nd July 2026, 19:46
Surely this was also one of Samsung thoughts when they developled it for their Phone Ecosystem as well their own AI Research Precision
Samsung Researchers are very active trying to fight the Chinese overflood and Samsung/LG are really having to show themselves like never before against this flood of Teams from China that do multiple goals and at some point combine them together ;)
Teams that have the Time to reinvent CUDA from Scratch that neither really AMD got done

Jamaika
3rd July 2026, 07:53
Tested by Jamaica.
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v liboapv -preset placebo -qp 0 -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_oapv.mkv {the video doesn't play smoothly at 60fps, slow compression, ffmpeg doesn't encode 12bit APV1}

Edit: Not recommended. It's best to throw this option in the trash.
Recommended options are 10/12bit via Vulkan. I'm sure an amateur will figure this out. :D
ffmpeg_vulkan_avx2.exe -v verbose -hide_banner -an -init_hw_device vulkan=vkdev:0 -filter_hw_device vkdev -i "input.mp4" -y -c:v apv_vulkan -preset medium -qp 0 -an -vf "scale=1920:1080,format=yuv422p12le,hwupload" -pix_fmt vulkan -frames:v 1000 output_apv_vulkan.mkv
Codec AVOption preset (Encoding preset for setting encoding speed (optimization level control)) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some decoder which was not actually used for any stream.
Tested by Jamaica.
ffmpeg_vulkan_avx2.exe -v verbose -i "input.mp4" -y -c:v dnxhd -profile 4 -an -vf "scale=1920:1080,format=yuv422p10le" -frames:v 1000 output_dnxhd.mkv {ffmpeg doesn't encode 12bit DNxHR}

Edit: I don't recommend. https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23680
ffmpeg_vulkan_avx2.exe -v verbose -hide_banner -an -init_hw_device vulkan=vkdev:0 -filter_hw_device vkdev -i "input.mp4" -y -c:v dnxhd_vulkan -profile 0 -an -vf "scale=1920:1080,format=yuv422p12le,hwupload" -pix_fmt vulkan -frames:v 1000 output_dnxhd_vulkan.mkv
[dnxhd_vulkan @ 0000020B9E8649E0] No DNxHD profile matches 1920x1080 at 200000 bit/s. Set an explicit -b:v.
[dnxhd_vulkan @ 00000268DA8C5240] Only 8-bit 4:2:2 (yuv422p) is supported.
[dnxhd_vulkan @ 000001B883830020] Value 4.000000 for parameter 'profile' out of range [0 - 0]
[dnxhd_vulkan @ 000001B883830020] Error setting option profile to value 4.

Edit: Test ffmpeg encode/decode without pthread.
Changing the HAVE_PTHREADS function to HAVE_W32THREADS doesn't change the decoding problem and vice versa in ffmpeg.
When the default QP is 22 decoder works without any problems. When QP is 0 decoder doesn't work correctly at 60 fps.

Z2697
3rd July 2026, 12:34
Jamaika... you don't know what you are doing.
Somehow you've managed to patch FFmpeg and build things without build system but the basic knowledges seem missing. I think there's a bit of mismatch.

BTW libsvtjpegxs in FFmpeg is a CBR encoder with bitrate default to a 1/1.5 fraction of the uncompressed bitrate (without padding e.g. 10->16).
v210 is uncompressed padded so it's definitely NOT gonna look like that with only a tiny difference in size.
hap is using texture (like in games) compression and has a fixed ratio (well, there's snappy that comes after).

Z2697
4th July 2026, 12:48
Edit: Not recommended. It's best to throw this option in the trash.
Recommended options are 10/12bit via Vulkan. I'm sure an amateur will figure this out. :D
ffmpeg_vulkan_avx2.exe -v verbose -hide_banner -an -init_hw_device vulkan=vkdev:0 -filter_hw_device vkdev -i "input.mp4" -y -c:v apv_vulkan -preset medium -qp 0 -an -vf "scale=1920:1080,format=yuv422p12le,hwupload" -pix_fmt vulkan -frames:v 1000 output_apv_vulkan.mkv
Codec AVOption preset (Encoding preset for setting encoding speed (optimization level control)) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some decoder which was not actually used for any stream.

Edit: I don't recommend. https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23680
ffmpeg_vulkan_avx2.exe -v verbose -hide_banner -an -init_hw_device vulkan=vkdev:0 -filter_hw_device vkdev -i "input.mp4" -y -c:v dnxhd_vulkan -profile 0 -an -vf "scale=1920:1080,format=yuv422p12le,hwupload" -pix_fmt vulkan -frames:v 1000 output_dnxhd_vulkan.mkv
[dnxhd_vulkan @ 0000020B9E8649E0] No DNxHD profile matches 1920x1080 at 200000 bit/s. Set an explicit -b:v.
[dnxhd_vulkan @ 00000268DA8C5240] Only 8-bit 4:2:2 (yuv422p) is supported.
[dnxhd_vulkan @ 000001B883830020] Value 4.000000 for parameter 'profile' out of range [0 - 0]
[dnxhd_vulkan @ 000001B883830020] Error setting option profile to value 4.

Edit: Test ffmpeg encode/decode without pthread.
Changing the HAVE_PTHREADS function to HAVE_W32THREADS doesn't change the decoding problem and vice versa in ffmpeg.
When the default QP is 22 decoder works without any problems. When QP is 0 decoder doesn't work correctly at 60 fps.

https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/23679

Jamaika
4th July 2026, 12:56
Thanks, I see but it'll take a while. Currently in red. ;)
Let Selur whine about it for a while.
https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23698

Z2697
4th July 2026, 19:06
Thanks, I see but it'll take a while. Currently in red. ;)
Let Selur whine about it for a while.
https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23698

What is Selur has to do with this?

Jamaika
4th July 2026, 20:28
This is his thread and he is sometimes interested in ffmpeg features in hybrid.