This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Is it possible to add EVC and LCEVC encoder next year?
#6
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
Reply


Messages In This Thread
RE: Is it possible to add EVC and LCEVC encoder next year? - by Selur - 25.12.2023, 16:53

Forum Jump:


Users browsing this thread: 1 Guest(s)