14.12.2021, 01:03
(13.12.2021, 18:34)Selur Wrote:Would it be possible for you to implement mozjpeg instead as a seperate encoder?mjpeg = motion jpegEncoder mjpeg [MJPEG (Motion JPEG)]:
General capabilities: threads
Threading capabilities: frame and slice
Supported pixel formats: yuvj420p yuvj422p yuvj444p yuv420p yuv422p yuv444p
mjpeg encoder AVOptions:
-mpv_flags <flags> E..V....... Flags common for all mpegvideo-based encoders. (default 0)
skip_rd E..V....... RD optimal MB level residual skipping
strict_gop E..V....... Strictly enforce gop size
qp_rd E..V....... Use rate distortion optimization for qp selection
cbp_rd E..V....... use rate distortion optimization for CBP
naq E..V....... normalize adaptive quantization
mv0 E..V....... always try a mb with mv=<0,0>
-luma_elim_threshold <int> E..V....... single coefficient elimination threshold for luminance (negative values also consider dc coefficient) (from INT_MIN to INT_MAX) (default 0)
-chroma_elim_threshold <int> E..V....... single coefficient elimination threshold for chrominance (negative values also consider dc coefficient) (from INT_MIN to INT_MAX) (default 0)
-quantizer_noise_shaping <int> E..V....... (from 0 to INT_MAX) (default 0)
-error_rate <int> E..V....... Simulate errors in the bitstream to test error concealment. (from 0 to INT_MAX) (default 0)
-qsquish <float> E..V....... how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function) (from 0 to 99) (default 0)
-rc_qmod_amp <float> E..V....... experimental quantizer modulation (from -FLT_MAX to FLT_MAX) (default 0)
-rc_qmod_freq <int> E..V....... experimental quantizer modulation (from INT_MIN to INT_MAX) (default 0)
-rc_eq <string> E..V....... Set rate control equation. When computing the expression, besides the standard functions defined in the section 'Expression Evaluation', the following functions are available: bits2qp(bits), qp2bits(qp). Also the following constants are available: iTex pTex tex mv fCode iCount mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex avgTex.
-rc_init_cplx <float> E..V....... initial complexity for 1-pass encoding (from -FLT_MAX to FLT_MAX) (default 0)
-rc_buf_aggressivity <float> E..V....... currently useless (from -FLT_MAX to FLT_MAX) (default 1)
-border_mask <float> E..V....... increase the quantizer for macroblocks close to borders (from -FLT_MAX to FLT_MAX) (default 0)
-lmin <int> E..V....... minimum Lagrange factor (VBR) (from 0 to INT_MAX) (default 236)
-lmax <int> E..V....... maximum Lagrange factor (VBR) (from 0 to INT_MAX) (default 3658)
-ibias <int> E..V....... intra quant bias (from INT_MIN to INT_MAX) (default 999999)
-pbias <int> E..V....... inter quant bias (from INT_MIN to INT_MAX) (default 999999)
-motion_est <int> E..V....... motion estimation algorithm (from 0 to 2) (default epzs)
zero 0 E..V.......
epzs 1 E..V.......
xone 2 E..V.......
-skip_threshold <int> E..V....... Frame skip threshold (from INT_MIN to INT_MAX) (default 0)
-skip_factor <int> E..V....... Frame skip factor (from INT_MIN to INT_MAX) (default 0)
-skip_exp <int> E..V....... Frame skip exponent (from INT_MIN to INT_MAX) (default 0)
-skip_cmp <int> E..V....... Frame skip compare function (from INT_MIN to INT_MAX) (default dctmax)
sad 0 E..V....... Sum of absolute differences, fast
sse 1 E..V....... Sum of squared errors
satd 2 E..V....... Sum of absolute Hadamard transformed differences
dct 3 E..V....... Sum of absolute DCT transformed differences
psnr 4 E..V....... Sum of squared quantization errors, low quality
bit 5 E..V....... Number of bits needed for the block
rd 6 E..V....... Rate distortion optimal, slow
zero 7 E..V....... Zero
vsad 8 E..V....... Sum of absolute vertical differences
vsse 9 E..V....... Sum of squared vertical differences
nsse 10 E..V....... Noise preserving sum of squared differences
dct264 14 E..V.......
dctmax 13 E..V.......
chroma 256 E..V.......
msad 15 E..V....... Sum of absolute differences, median predicted
-sc_threshold <int> E..V....... Scene change threshold (from INT_MIN to INT_MAX) (default 0)
-noise_reduction <int> E..V....... Noise reduction (from INT_MIN to INT_MAX) (default 0)
-ps <int> E..V....... RTP payload size in bytes (from INT_MIN to INT_MAX) (default 0)
-mepc <int> E..V....... Motion estimation bitrate penalty compensation (1.0 = 256) (from INT_MIN to INT_MAX) (default 256)
-mepre <int> E..V....... pre motion estimation (from INT_MIN to INT_MAX) (default 0)
-intra_penalty <int> E..V....... Penalty for intra blocks in block decision (from 0 to 1.07374e+09) (default 0)
-pred <int> E..V....... Prediction method (from 1 to 3) (default left)
left 1 E..V.......
plane 2 E..V.......
median 3 E..V.......
-huffman <int> E..V....... Huffman table strategy (from 0 to 1) (default optimal)
default 0 E..V.......
optimal 1 E..V.......
-force_duplicated_matrix <boolean> E..V....... Always write luma and chroma matrix for mjpeg, useful for rtp streaming. (default false)
-mpeg_quant <int> E..V......P Deprecated, does nothing (from 0 to 0) (default 0)
-a53cc <boolean> E..V......P Deprecated, does nothing (default true)
-b_strategy <int> E..V......P Deprecated, does nothing (from 0 to 2) (default 0)
-b_sensitivity <int> E..V......P Deprecated, does nothing (from 1 to INT_MAX) (default 40)
-brd_scale <int> E..V......P Deprecated, does nothing (from 0 to 3) (default 0)
This usually means the jpegs are written into a container like .avi/.mov/...
I don't see any 'quality'-control. May be '-q:v X' works,...
I will think about it, if someone can find some decent documentation.
Cu Selur
And also as to the mjpeg part, q:v is indeed the intended quality control for it, as for the output extension, not specifying the encoder and instead just using it to export .jpg seems to work