Selur's Little Message Board

Full Version: VPX Encoder problem
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello.
I have a problem with the vp9 encoder, mainly I use it. For some reason it suddenly started to reverse colors of output videos when I encode it with VPX and it doesn't matter if you are using vp8 or vp9. I used all default settings, except that I only changed them to constant quantizer 1pass for a quick test, but on other settings ist happens as well. In the FILTERING tab changing to vapoursynth, avisynth and noXsynth doesnt make any difference, the same result. At first I thought it was a problem with certain videos and color transfer, but this happens with all videos. Changing to ColorSpace BT709 or UNKNOWN doesn't help either. I also tried to replace vpxenc.exe with different versions in a HYBRID 64bit folder, the same result. Then I downloaded ffmpeg from gyan.dev, and tested libvpx-vp9 built into this ffmpeg, and it works good as it should. I tested x264 and x265 in hybrid and they works normal too.

Is it just me has such a problem with the hardware or what? I have already reinstalled all the drivers on the graphics card with a clean install, then K-Lite Codec Pack Standard Version 16.1.0 clean too. IDK what to think more. Hybrid reinstalled to 2021.04.06.1 with deleting all files too.
IDK if debug log will help.
Quote:suddenly started to reverse colors of output videos
sounds like some issue where the colro space isn't properly propagated.

Looking t the encoding call used:
Code:
"C:\Program Files\Hybrid\64bit\ffmpeg.exe" -y -loglevel fatal -noautorotate -nostdin -threads 8 -i "C:\Users\SaberAnasterian\AMV.mkv" -map 0:0 -an -sn -pix_fmt yuv420p -vsync 0 -f rawvideo - | "C:\Program Files\Hybrid\64bit\vpxenc.exe" --codec=vp9 --row-mt=1 --passes=1 --pass=1 --end-usage=q --cq-level=18 --profile=0 --good --cpu-used=3 --undershoot-pct=0 --buf-sz=6 --buf-initial-sz=4 --buf-optimal-sz=5 --drop-frame=0 --resize-allowed=0 --kf-min-dist=0 --kf-max-dist=250 --auto-alt-ref=0 --noise-sensitivity=0 --sharpness=0 --static-thresh=0 --tile-columns=2 --tile-rows=1 --min-gf-interval=0 --max-gf-interval=0 --threads=48 --width=1920 --height=1080 --yv12 --color-space=unknown --target-level=255 --input-bit-depth=8 --bit-depth=8 --ivf -o "C:\Users\SABERA~1\AppData\Local\Temp\2021-04-11@19_02_32_5910_01.ivf" -
I see no problem decoder outputs 'yuv420p' and encoder is configured for '--width=1920 --height=1080 --yv12'.
Tested it here and I can reproduce the issue. (swapped u/v channels)
-> looking into it

Will report back.

Cu Selur
Found the cause of the problem seems like they changed the accepted input color spaces and instead of '--yv12' Hybrid needs to use '--i420'.
-> will build a new dev version which should fix the issue and send you a link in ~30min (after I compiled, packaged and uploaded the dev version) via pm.

Cu Selur
(11.04.2021, 18:36)Selur Wrote: [ -> ]Found the cause of the problem seems like they changed the accepted input color spaces and instead of '--yv12' Hybrid needs to use '--i420'.
-> will build a new dev version which should fix the issue and send you a link in ~30min (after I compiled, packaged and uploaded the dev version) via pm.

Cu Selur

I dont know if its issue but i tried reproduce in CMD if it will help.

When i do:
Code:
ffmpeg -i "C:\Users\SaberAnasterian\speedrun.mkv" -map 0:0 -an -sn -pix_fmt yuv420p -f rawvideo - | vpxenc1.10HYBRID.exe --codec=vp9 --row-mt=1 --passes=1 --pass=1 --end-usage=q --cq-level=18 --profile=0 --good --cpu-used=3 --tile-columns=2 --tile-rows=1  --threads=48 --width=1920 --height=1080 --yv12 --color-space=unknown --target-level=255 --input-bit-depth=8 --bit-depth=8 --webm -o "C:\Users\SaberAnasterian\VPXENCTEST.webm" -


Thats break colors.

But if i make into 2 separate commands:
ffmpeg source MKV to .y4m then .y4m to vpxenc.exe
1.
Code:
ffmpeg -i "speedrun.mkv" "speedrun.y4m"
2.
Code:
vpxenc1.10HYBRID.exe --codec=vp9 --row-mt=1 --passes=1 --pass=1 --end-usage=q --cq-level=18 --profile=0 --good --cpu-used=3 --tile-columns=2 --tile-rows=1  --threads=48 --width=1920 --height=1080 --yv12 --color-space=unknown --target-level=255 --input-bit-depth=8 --bit-depth=8 --webm -o "C:\Users\SaberAnasterian\VPXENCTEST.webm" "C:\Users\SaberAnasterian\speedrun.y4m"

Thats works well like its should.
Since the documentation (--help) doesn't mention that yuv4mpeg is supported I haven't tried using it in ages. Smile
(probably more tests are required to be use y4m is supported via pipe, especially with high bit depth)

Cu Selur
Okay, checked some of Hybrids code and Hybrid should use y4m starting with v1.3+ of vpxenc.
Problem was the way they reported the version changed a bit, which caused Hybrid to not use y4m.
-> looking into it Smile
Created a dev version which fixes the version detection.
Send you a link via pm.

Cu Selur
(11.04.2021, 19:58)Selur Wrote: [ -> ]Created a dev version which fixes the version detection.
Send you a link via pm.

Cu Selur
Works perfect now. THANK YOU!