Selur's Little Message Board
[INFO] Feature Request: Per scene encoding - Printable Version

+- Selur's Little Message Board (https://forum.selur.net)
+-- Forum: Hybrid - Support (https://forum.selur.net/forum-1.html)
+--- Forum: Problems & Questions (https://forum.selur.net/forum-3.html)
+--- Thread: [INFO] Feature Request: Per scene encoding (/thread-2401.html)

Pages: 1 2


RE: Feature Request: Per scene encoding - Selur - 08.04.2022

Nope, path is okay. I just made a typo.
Instead of '-vmaf-model-path' it needs to be '--vmaf-model-path'. Wink
-> will fix and send you a new link to a dev once I recompiled and packaged it.

Cu Selur


RE: Feature Request: Per scene encoding - Werve - 08.04.2022

Now it seems to work  Smile 
(didn't finished the encoding because it needed 100x the time of source with currently settings -I'll read the previous articles linked before change it)


RE: Feature Request: Per scene encoding - Werve - 09.04.2022

Edit: (in this case is better to edit or make a new reply? -edits are notified?-)

I read the articles and I concluded to add the following arguments in the encoding
--passes=2 --lag-in-frames=48 --enable-cdef=1 --enable-restoration=0 --enable-qm=1
But it seems it is not possible because --passes is already set to 1 in Constant Quality mode (and there isn't the two-passes one in hybrid)

Also, is right that Tune: none and Tune: VMAF with pre-processing have the same arguments? (without vmaf model path)


RE: Feature Request: Per scene encoding - Selur - 09.04.2022

Quote:(in this case is better to edit or make a new reply? -edits are notified?-)
Assuming there is more than a few minutes after your first post, make a new reply.

Quote:But it seems it is not possible because --passes is already set to 1 in Constant Quality mode (and there isn't the two-passes one in hybrid)
There is no contant quality rate control mode.
--end-usage=<arg>           Rate control mode
                                             vbr, cbr, cq, q
vbr = variable bit rate
cbr = constrant bit rate
cq = constrained quality
q = constant quantizer

Hybrid offers '--passes=2' with 'vbr' and 'cq' as 2pass doesn't make sense for constant quantizer or constant bit rate rate control.

Also, is right that Tune: none and Tune: VMAF with pre-processing have the same arguments? (without vmaf model path)
No that's a bug. Smile I will look at it. Smile (it's a typo, the option in the dropdown is missing an 'g' at the end. Smile)

Cu Selur


RE: Feature Request: Per scene encoding - Werve - 09.04.2022

(09.04.2022, 10:04)Selur Wrote:
Quote:But it seems it is not possible because --passes is already set to 1 in Constant Quality mode (and there isn't the two-passes one in hybrid)
There is no contant quality rate control mode.
            --end-usage=<arg>           Rate control mode
                                             vbr, cbr, cq, q
vbr = variable bit rate
cbr = constrant bit rate
cq = constrained quality
q = constant quantizer

Hybrid offers '--passes=2' with 'vbr' and 'cq' as 2pass doesn't make sense for constant quantizer or constant bit rate rate control.

Sorry I mean 'q' constant quantizer. Based on the previous linked articles the encoder need 2pass to enable scene-detection.

Quote:2-pass was extremely important in vpxenc-vp9, as not only was it the only way for the encoder to utilize scene-detection, but it also allowed for the placement of alternate reference frames. Not doing that seriously cripples the encoder in what it can do. It also disables other stuff, but this also applies to aomenc-av1, so letÂ’s move on to the AV1 encoder again.

In aomenc-av1, 2-pass allows for these things in particular:
- More advanced scene detection when the lookahead buffer is high enough.
- Partition recoding: the encoder itself can decide whether or not to redo partition selection based on the preset on other conditions, resulting in better partition selection.
- Better auto-alt-ref placement through the encoded stream.

It also does some more advanced things, so IÂ’d advise keeping it on if you can

So yeah, always use 2-pass if you can. Luckily, itÂ’s set by default in the standalone encoder, so you donÂ’t need to do anything if you utilize a utility like nmkoder or av1an



RE: Feature Request: Per scene encoding - Selur - 09.04.2022

Have you actually tried using 2pass with constant quantizer?
With a fixed quantizer, there should be no rate control, so I don't see how you could benefit from running 2passes.

Cu Selur


RE: Feature Request: Per scene encoding - Werve - 09.04.2022

(08.04.2022, 17:00)Werve Wrote: Now it seems to work  Smile 
(didn't finished the encoding because it needed 100x the time of source with currently settings -I'll read the previous articles linked before change it)

Unfortunately it don't work.
Almost at the end of encoding it says Crashed with exit status 1

Quote:Have you actually tried using 2pass with constant quantizer?

Not yet, I'm still experimenting


RE: Feature Request: Per scene encoding - Selur - 09.04.2022

Debug output shows that
after over an hour and encoding 226 frames:
22673F Pass 1/1 frame  226/178  1378917B 4556693 ms 2.98 fpm [ETA  unknown]
the encoder crashes with:
process finished with exitcode: -1073740940 and exitStatus: 1
Since the encoding starts, the calls must be okay
doing a quick test with;
ffmpeg -y -loglevel fatal -noautorotate -nostdin -threads 8 -i "G:\TestClips&Co\files\test.avi" -map 0:0 -an -sn -vf zscale=rangein=tv:range=tv -pix_fmt yuv420p10le -strict -1 -vsync 0 -f yuv4mpegpipe - | aomenc --passes=1 --pass=1 --end-usage=cq --cq-level=10 --target-bitrate=15000 --profile=0 --cpu-used=5 --min-q=1 --max-q=63 --undershoot-pct=0 --overshoot-pct=0 --buf-sz=6 --buf-initial-sz=4 --buf-optimal-sz=5 --drop-frame=0 --kf-min-dist=0 --kf-max-dist=250 --auto-alt-ref=0 --noise-sensitivity=0 --denoise-noise-level=0 --sharpness=0 --static-thresh=0 --tune-content=default --tune=vmaf_without_preprocessing --vmaf-model-path="I:/Hybrid/64bit/vmaf_v0.6.1.json" --tile-columns=6 --tile-rows=2 --frame-boost=0 --aq-mode=1 --min-gf-interval=0 --max-gf-interval=2 --threads=64 --width=640 --height=352 --input-bit-depth=10 --bit-depth=10 --denoise-noise-level=0 --min-partition-size=4 --max-partition-size=128 --sb-size=0 --max-reference-frames=7 --disable-trellis-quant=0 --enable-tpl-model=1 --enable-keyframe-filtering=0 --force-video-mode=1 --reduced-tx-type-set=1 --use-intra-dct-only=0 --use-inter-dct-only=0 --use-intra-default-tx-only=0 --quant-b-adapt=1 --coeff-cost-upd-freq=0 --mode-cost-upd-freq=0 --mv-cost-upd-freq=0 -o "E:\Temp\2022-04-09@14_42_18_5410_01.ivf" -
which seems to work fine.

So my guess is that either:
  • something is wrong with the source a frame around 226
  • something is interfering with the encoding process (or the communication between the decoder and the encoder)
  • you are running out of ram (or space)
  • your system is overclocked (which causes memory issues)
  • there is some bug in aomenc
-> this does not look like a bug in Hybrid.

Cu Selur