Selur's Little Message Board
Is it possible to add EVC and LCEVC encoder next year? - 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: Is it possible to add EVC and LCEVC encoder next year? (/thread-3521.html)

Pages: 1 2


Is it possible to add EVC and LCEVC encoder next year? - i990049 - 24.12.2023

It's said the speed of EVC and LCEVC encoder are faster than HEVC/x265. Whether or When will Hybrid add these encoders?


RE: Is it possible to add EVC and LCEVC encoder next year? - Selur - 25.12.2023

Got a link to proper free command line for those?


RE: Is it possible to add EVC and LCEVC encoder next year? - i990049 - 25.12.2023

https://github.com/mpeg5/xeve
https://docs.v-nova.com/v-nova/lcevc/reference-applications/ffmpeg
the test result
https://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=134694
merry Christmas


RE: Is it possible to add EVC and LCEVC encoder next year? - Selur - 25.12.2023

Xeve does not have pipe input support from what I see. So it's not suited for Hybrid.
Second one is not part of the official ffmpeg, so unless it's supported by mbas not useful either.


RE: Is it possible to add EVC and LCEVC encoder next year? - Selur - 25.12.2023

Will look into xeve some more, judging by their issue tracker it seems it does support pipe input. (but not closed gops Sad)


RE: Is it possible to add EVC and LCEVC encoder next year? - Selur - 25.12.2023

Had a look at the help of xeve, which is the same for the base (H.264) and main (H.265) version:
XEVE: eXtra-fast Essential Video Encoder
Syntax:
  xeve_app -i 'input-file' [ options ]

Options:
  --help
    : list options
  -v, --verbose [INTEGER] (optional) [2]
    : verbose (log) level
      - 0: no message
      - 1: only error message
      - 2: simple messages
      - 3: frame-level messages
  -i, --input [STRING]
    : file name of input video (raw YUV or Y4M), `stdin` for standard input instead of regular file
  -o, --output [STRING] (optional) [None]
    : file name of output bitstream
  -r, --recon [STRING] (optional) [None]
    : file name of reconstructed video
  -w, --width [INTEGER]
    : pixel width of input video
  -h, --height [INTEGER]
    : pixel height of input video
  -q, --qp [INTEGER] (optional) [32]
    : QP value (0~51)
  -z, --fps [INTEGER]
    : frame rate (frame per second)
  -I, --keyint [INTEGER] (optional) [0]
    : I-picture period
  -b, --bframes [INTEGER] (optional) [15]
    : maximum number of B frames (1,3,7,15)
  -m, --threads [INTEGER] (optional) [1]
    : force to use a specific number of threads
  -d, --input-depth [INTEGER] (optional) [8]
    : input bit depth (8, 10)
  --codec-bit-depth [INTEGER] (optional) [10]
    : codec internal bit depth (10, 12)
  --input-csp [INTEGER] (optional) [1]
    : input color space (chroma format)
      - 0: YUV400
      - 1: YUV420
  --profile [STRING] (optional) [baseline]
    : profile setting flag  (main, baseline)
  --level-idc [INTEGER] (optional) [0]
    : level setting
  --preset [STRING] (optional) [medium]
    : Encoder PRESET     [fast, medium, slow, placebo]
  --tune [STRING] (optional) [None]
    : Encoder TUNE     [psnr, zerolatency]
  --aq-mode [INTEGER] (optional) [0]
    : use adaptive quantization block qp adaptation
      - 0: off
      - 1: adaptive quantization
  --frames [INTEGER] (optional) [0]
    : maximum number of frames to be encoded
  --seek [INTEGER] (optional) [0]
    : number of skipped frames before encoding
  --info [INTEGER] (optional) [1]
    : embed SEI messages identifying encoder parameters and command line arguments      - 0: off
      - 1: emit sei info
  --hash [FLAG] (optional) [Off]
    : embed picture signature (HASH) for conformance checking in decoding
  --cutree [INTEGER] (optional)
    : use cutree block qp adaptation
      - 0: off
      - 1: cutree
  --cu-qp-delta-area [INTEGER] (optional)
    : cu-qp-delta-area (>= 6)
  --rdo-dbk-switch [INTEGER] (optional)
    : switch to on/off rdo-dbk (0, 1)
  --ref-pic-gap-length [INTEGER] (optional)
    : reference picture gap length (1, 2, 4, 8, 16) only available when -b is 0
  --closed-gop [FLAG] (optional) [Off]
    : use closed GOP structure. if not set, open GOP is used
  --ibc [INTEGER] (optional)
    : use IBC feature. if not set, IBC feature is disabled
  --ibc-search-range-x [INTEGER] (optional)
    : set ibc search range in horizontal direction
  --ibc-search-range-y [INTEGER] (optional)
    : set ibc search range in vertical direction
  --ibc-hash-search-flag [FLAG] (optional)
    : use IBC hash based block matching search feature. if not set, it is disable
  --ibc-hash-search-max-cand [INTEGER] (optional)
    : Max candidates for hash based IBC search
  --ibc-hash-search-range-4smallblk [INTEGER] (optional)
    : Small block search range in IBC based search
  --ibc-fast-method [INTEGER] (optional)
    : Fast methods for IBC
      - 1: Buffer IBC block vector (current not support)
      - 2: Adaptive search range
  --disable-hgop [FLAG] (optional) [Off]
    : disable hierarchical GOP. if not set, hierarchical GOP is used
  --btt [INTEGER] (optional)
    : binary and ternary splits on/off flag
  --suco [INTEGER] (optional)
    : split unit coding ordering on/off flag
  --qp-add-frm [INTEGER] (optional)
    : one more qp are added after this number of frames, disable:0
  --ctu [INTEGER] (optional)
    : Max size of Coding Block (log scale)
  --min-cu-size [INTEGER] (optional)
    : MIN size of Coding Block (log scale)
  --cu14-max [INTEGER] (optional)
    : Max size of 4N in 4NxN or Nx4N block (log scale)
  --tris-max [INTEGER] (optional)
    : Max size of Tri-split allowed
  --tris-min [INTEGER] (optional)
    : Min size of Tri-split allowed
  --suco-max [INTEGER] (optional)
    : Max size of suco allowed from top
  --suco-min [INTEGER] (optional)
    : Min size of suco allowed from top
  --amvr [INTEGER] (optional)
    : amvr on/off flag
  --mmvd [INTEGER] (optional)
    : mmvd on/off flag
  --affine [INTEGER] (optional)
    : affine on/off flag
  --dmvr [INTEGER] (optional)
    : dmvr on/off flag
  --addb [INTEGER] (optional)
    : addb on/off flag
  --alf [INTEGER] (optional)
    : alf on/off flag
  --htdf [INTEGER] (optional)
    : htdf on/off flag
  --admvp [INTEGER] (optional)
    : admvp on/off flag
  --hmvp [INTEGER] (optional)
    : hmvp on/off flag
  --eipd [INTEGER] (optional)
    : eipd on/off flag
  --iqt [INTEGER] (optional)
    : iqt on/off flag
  --cm-init [INTEGER] (optional)
    : cm-init on/off flag
  --adcc [INTEGER] (optional)
    : adcc on/off flag
  --rpl [INTEGER] (optional)
    : rpl on/off flag
  --pocs [INTEGER] (optional)
    : pocs on/off flag
  --qp-cb-offset [INTEGER] (optional)
    : cb qp offset
  --qp-cr-offset [INTEGER] (optional)
    : cr qp offset
  --ats [INTEGER] (optional)
    : ats on/off flag
  --constrained-intra-pred [INTEGER] (optional)
    : constrained intra pred
  --deblock [INTEGER] (optional)
    : Deblocking filter on/off flag
  --dbfoffsetA [INTEGER] (optional)
    : ADDB Deblocking filter offset for alpha
  --dbfoffsetB [INTEGER] (optional)
    : ADDB Deblocking filter offset for beta
  --tile-uniform-spacing [INTEGER] (optional)
    : uniform or non-uniform tile spacing
  --num-tile-columns [INTEGER] (optional)
    : Number of tile columns
  --num-tile-rows [INTEGER] (optional)
    : Number of tile rows
  --tile-column-width-array [STRING] (optional)
    : Array of Tile Column Width
  --tile-row-height-array [STRING] (optional)
    : Array of Tile Row Height
  --num-slices-in-pic [INTEGER] (optional)
    : Number of slices in the pic
  --tile-array-in-slice [STRING] (optional)
    : Array of Slice Boundaries
  --arbitrary-slice-flag [INTEGER] (optional)
    : Array of Slice Boundaries
  --num-remaining-tiles-in-slice [STRING] (optional)
    : Array of Slice Boundaries
  --lp-filter-across-tiles-en-flag [INTEGER] (optional)
    : Loop filter across tiles enabled or disabled
  --rc-type [INTEGER] (optional) [0]
    : Rate control type, (0: OFF, 1: ABR, 2: CRF)
  --bitrate [STRING] (optional) [None]
    : Bitrate in terms of kilo-bits per second: Kbps(none,K,k), Mbps(M,m)
      ex) 100 = 100K = 0.1M
  --crf [INTEGER] (optional) [32]
    : Constant Rate Factor CRF-value [10-49]
  --vbv-bufsize [STRING] (optional) [None]
    : VBV buffer size: Kbits(none,K,k), Mbits(M,m)
      ex) 100 / 100K / 0.1M
  --use-filler [INTEGER] (optional) [0]
    : user filler flag
  --lookahead [INTEGER] (optional) [17]
    : number of pre analysis frames for rate control and cutree, disable:0
  --chroma-qp-table-present-flag [INTEGER] (optional)
    : chroma-qp-table-present-flag
  --chroma-qp-num-points-in-table [STRING] (optional)
    : Number of pivot points for Cb and Cr channels
  --chroma-qp-delta-in-val-cb [STRING] (optional)
    : Array of input pivot points for Cb
  --chroma-qp-delta-out-val-cb [STRING] (optional)
    : Array of input pivot points for Cb
  --chroma-qp-delta-in-val-cr [STRING] (optional)
    : Array of input pivot points for Cr
  --chroma-qp-delta-out-val-cr [STRING] (optional)
    : Array of input pivot points for Cr
  --dra-enable-flag [INTEGER] (optional)
    : DRA enable flag
  --dra-number-ranges [INTEGER] (optional)
    : Number of DRA ranges
  --dra-range [STRING] (optional)
    : Array of dra ranges
  --dra-scale [STRING] (optional)
    : Array of input dra ranges
  --dra-chroma-qp-scale [STRING] (optional)
    : DRA chroma qp scale value
  --dra-chroma-qp-offset [STRING] (optional)
    : DRA chroma qp offset
  --dra-chroma-cb-scale [STRING] (optional)
    : DRA chroma cb scale
  --dra-chroma-cr-scale [STRING] (optional)
    : DRA chroma cr scale
  --dra-hist-norm [STRING] (optional)
    : DRA hist norm
  --rpl-extern [INTEGER] (optional)
    : Whether to input external RPL
  --inter-slice-type [INTEGER] (optional)
    : INTER-SLICE-TYPE
  --picture-cropping-flag [INTEGER] (optional)
    : picture crop flag
  --picture-crop-left [INTEGER] (optional)
    : left offset of picture crop
  --picture-crop-right [INTEGER] (optional)
    : right offset of picture crop
  --picture-crop-top [INTEGER] (optional)
    : top offset of picture crop
  --picture-crop-bottom [INTEGER] (optional)
    : bottom offset of picture crop
  --ref [INTEGER] (optional) [0]
    : Number of reference pictures
  --sar [STRING] (optional) [None]
    : sar <width:height|int> possible values 1 to 16 and 255
  --sar-width [INTEGER] (optional) [0]
    : sar <width:height|int>
  --sar-height [INTEGER] (optional) [0]
    : sar <width:height|int>
  --videoformat [STRING] (optional) [None]
    :  0-component, 1-pal, 2-ntsc, 3-secam, 4-mac. 5-unspecified
  --range [STRING] (optional) [None]
    : black level and range of luma and chroma signals as 1- full or 0- limited
  --colorprim [STRING] (optional) [None]
    : 1- bt709, 2-unspecified, 3- reserved, 4- bt470m, 5- bt470bg, 6- smpte170m,         7- smpte240m, 8- Generic film, 9- bt2020, 10-smpte428, 11-smpte431, 12-smpte432,          22-EBU Tech. 3213 Default 2-unspecified
  --transfer [STRING] (optional) [None]
    : 1- transfer characteristics from bt709, 2-unspecified, 3-reserved, 4-bt470m, 5-bt470bg, 6-smpte170m,         7-smpte240m, 8-linear, 9-log100, 10-log316, 11-iec61966-2-4, 12-bt1361e, 13-iec61966-2-1,         14-bt2020-10, 15-bt2020-12, 16-smpte2084, 17-smpte428, 198-arib-std-b67. Default 2-unspecified
  --matrix-coefficients [STRING] (optional) [None]
    : 0-gbr, 1-bt709, 2-unspecified, 3-reserved, 4-fcc, 5-bt470bg, 6-smpte170m, 7-smpte240m,           8-ycgco, 9-bt2020nc, 10-bt2020c, 11-smpte2085, 12-chroma-derived-nc, 13-chroma-derived-c, 14-ictcp, 15-255 reserved};
  --master-display [STRING] (optional) [None]
    : SMPTE ST 2086 master display color volume info SEI (HDR)          format: G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min)
  --max-cll [STRING] (optional)
    : Specify content light level info SEI as (cll,fall) (HDR)
  --chromaloc-tf [INTEGER] (optional) [0]
    : Chroma location for Top field - Range from 0 to 5
  --chromaloc-bf [INTEGER] (optional) [0]
    : Chroma location for Bottom field - Range from 0 to 5
  --neutral-chroma-flag [INTEGER] (optional) [0]
    : Value can be 0 or 1
  --frame-field-flag [INTEGER] (optional) [0]
    : 1 indicates fields and 0 indicates frames
  --units-in-tick [INTEGER] (optional) [0]
    : Number of units in tick, value should be > 0
  --time-scale [INTEGER] (optional) [0]
    : Time Scale, value should be > 0
  --fixed-pic-rate-flag [INTEGER] (optional) [0]
    : Fixed picture rate flag, default 0
  --pic-struct [INTEGER] (optional) [0]
    : Fixed picture rate flag, default 0
  --mv-over-pic-boundaries [INTEGER] (optional) [1]
    : mvs over picture boundaries flag
  --max-bytes-per-pic-denom [INTEGER] (optional) [0]
    : max bytes per picture denom, valid range 0 to 16
  --max-bits-per-cu-denom [INTEGER] (optional) [1]
    : max bits per cu denom, valid range 0 to 16
  --log2-max-mv-len-hor [INTEGER] (optional) [16]
    : max mv length horizontal log2, valid range 0 to 16
  --log2-max-mv-len-ver [INTEGER] (optional) [16]
    : max mv length vertical log2, valid range o to 16
  --num-reorder-pics [INTEGER] (optional) [21]
    : # of reorder pics, valid range 0 to max_dec_pic_buffering          default = max_dec_pic_buffering
  --max-dec-pic-buffering [INTEGER] (optional) [21]
    : max picture buffering in decoder, valid range 0 to num-reorder-pic          default num-reorder-pic
From what I see the main restrictions are:
a. only yuv 4:2:0 (4:0:0) color space support
b. output is always 10 or 12 bit, where 12 bit seems to be useless since afaik. neither for H.264 nor H.265 this was specified and made it into the standards. So 10bit only, so no hardware decoding for H.264.
c. lacking documentation ( no clue what the presets and tune settings do)


Really strange is that https://github.com/mpeg5/xeve mentions:
Quote: Baseline Profile:
xeve-base-1.0.0-win64.exe
xeve-base-1.0.0-win64.exe.md5

Main Profile:
xeve-main-1.0.0-win64.exe
xeve-main-1.0.0-win64.exe.md5
but the latest release is xeve-0.4.3

=> Do you know a source for 1.0.0 builds?
(spending weeks to add support for 0.4.3 seems like a waste not knowing how much changed to 1.0.0)

Cu Selur


RE: Is it possible to add EVC and LCEVC encoder next year? - i990049 - 25.12.2023

Maybe  this  can  help  you Big Grin

https://github.com/mpeg5/xeve/blob/master/README.md


RE: Is it possible to add EVC and LCEVC encoder next year? - Selur - 25.12.2023

That is the document that mentions version 1.0.0.
=> I created an issue entry about the discrepancy v0.4.3 vs v1.0.0

Cu Selur


RE: Is it possible to add EVC and LCEVC encoder next year? - Selur - 25.12.2023

Okay,
Quote:Latest version is that in release section. In readme it's just example.
source: https://github.com/mpeg5/xeve/issues/95

=> I'll do some testing in regard to xeve to see whether it really helps next year and if it works and can be decoded&co I'll add support for it.


Cu Selur


RE: Is it possible to add EVC and LCEVC encoder next year? - Selur - 25.12.2023

Added another issue entry to get some more details regarding the documentation, see: https://github.com/mpeg5/xeve/issues/96