pigpeppa/xin26x

[Windows] Build - and not only - issues

Opened this issue · 15 comments

Hi there,
since the provided exe won't run on my W11x64 system, I've asked John Edwards (aka John33, the dev behind RareWares) to build an optimized - ICL 19 - bin and here's his reply about:

Bit of a puzzle, really! The 'make-solutions.bat' file generates a VisualStudio sln file that loads into VS and compiles but the resulting executable does nothing. I'm not convinced that all the necessary code is included. I tried to link to the dll that is provided, but that doesn't appear to work either. I can't generate a usable output file even using the exe that is provided but that could be me not generating a suitable input file correctly!

...can you help to fix the problem?

Thanks in advance.

Wow, thanks for the lightning-fast reply !

There are two ways to run xin26x

  1. Directly to run pre-built xin26x_test.exe under testbin folder.

My W11x64 system won't run it 'cause claims - with a popup Windows system message (not a commandline error, to be clear) - that it's not compatible (is it a x32 build ?).

BTW, is it mandatory to place the file in a folder called "testbin" ?

Thanks again.

Ok, I finally encoded my 1st video.

Here's the commandline and log:

C:\testbin>xin26x_test -i test.y4m -a 0 -p 3 -T 0 -o out.y4m

STATUS: Xin26x lib build date: Aug 18 2023 21:23:17
STATUS: yuv size 1280x720 fps:30.000 frame num:500
STATUS: algorithm:0 encoder mode:3 rdoq:0 screen mode:0
STATUS: smp:0 mctf:1 sao:1 deblock:1 alf:1
STATUS: tmvp:1 mctf:1 cclm:0 dmvr:1
STATUS: sbTmvp:0 affine:0 mts:0 sign bit hidden:1
STATUS: ctuSize:64, minCuSize:8, minQtSize:8, maxBtSize:64, maxTtSize:64
STATUS: rc mode:5 target bit:1000000
STATUS: b frame num:15 ref num:3
STATUS: thread num:4 wpp:1 fpp:1
Start coding...
500 frames encoded, coding speed fps:43.2227 bitrate: 1100.84 kbps.
Complete coding.

Performance is quite nice - considering that the encode has been executed on i3-4160 - but the result seems "uncorrect":

SOURCE: https://media.xiph.org/video/derf/y4m/ducks_take_off_420_720p50.y4m

OUTPUT: https://raw.githubusercontent.com/forart/HyMPS/main/out.y4m

...can you explain what's wrong with this commandline ? Thanks !

note: it would be nice to link test files for newbie users (https://media.xiph.org/video/derf/)

xin26x only supports yuv420 raw yuv file. It does not support y4m file.

Can you please point me to some suitable files - among those available at https://media.xiph.org/video/ - to perform encoding tests ?

note: it could be useful to list suitable files @ xin26x's readme.md

Ok, did more encoding tests using - as suggested - that "stripped" .yuv input file so here's my feedback:

  1. encoder goes in a "deadlock" state if -b parameter is set.
    Example: xin26x_test -i test.yuv -a 0 -p 3 -T 0 -F 1 -W 1 --lookAhead 100 -b 1500 -o out.yuv
  2. the -q parameter doesn't affect the result the output, regardless the value set;
  3. it slows down high framerate inputs (doesn't decimate correctly);

Hope that helps.

forart: it slows down high framerate inputs (doesn't decimate correctly);
Peppa: I do not quite understand your meaning.

Here's the encoded result: https://raw.githubusercontent.com/forart/HyMPS/main/out50.yuv

(commandline used: xin26x_test -i test.yuv -a 0 -p 3 -T 0 -F 1 -W 1 -w 1280 -h 720 -f 50 -d 1 --lookAhead 100 -r 1 -b 1500000 -o out50.yuv)

As you can see, it's NOT 50fps (nor decimated 25fps), but same numeber of frames slowed down.

Thanks for your help.

It works inside MKV container (muxed using MKVToolNix) too: https://raw.githubusercontent.com/forart/HyMPS/main/outHQ.mkv

So here's last 2 questions:

  1. Is this the best bitrate-based HEVC commandline to achieve both speed and quality ? Any suggestion to squeeze more ?
    xin26x_test -i test.yuv -a 0 -p 6 -T 0 -wpp 1 -fpp 1 -w 1280 -h 720 -f 50 -d 1 --lookAhead 100 -r 1 -b 1750000 -o out.yuv
  2. Can xin26x be used by piping ffmpeg/ffplay into it to get rid of ffmpeg -i example.y4m test.yuv ?

Thanks again.

note: I've added xin26x under HyMPS \ VIDEO \ Tools - Encoders