mbox series

[FFmpeg-devel,00/14] add vvc decoder c code

Message ID 20230521130319.13813-1-nuomi2021@gmail.com
Headers show
Series add vvc decoder c code | expand

Message

Nuo Mi May 21, 2023, 1:03 p.m. UTC
Hi Gurus:
Please help review vvc decoder
You can comment on maling list or github link:
https://github.com/ffvvc/FFmpeg/pull/79

thank you

Features:
    + C code only
    + Support I, P, B frames, 8/10 bits, chroma 400, 420, 422, and 444,
    + Support VVC new tools like MIP, CCLM, AFFINE, GPM, DMVR, PROF, BDOF, LMCS, ALF
    + 211 conformace clips passed
    - Not support RPR, IBC, PALETTE, and other minor features yet.

Performance on i7-12700:
    RitualDance_1920x1080_60_10_420_37_RA.266   122 FPS
    Tango2_3840x2160_60_10_420_27_LD.266        23  FPS

    asm optimizations still working in progress. please check
    https://github.com/ffvvc/FFmpeg/wiki#performance-data for the latest

Contributors(based on code merge order):
    Nuo Mi <nuomi2021@gmail.com>
    Xu Mu <toxumu@outlook.com>
    frankplow <post@frankplowman.com>

Nuo Mi (14):
  vvcdec: add thread executor
  vvcdec: add vvc decoder stub
  vvcdec: add sps, pps, sh parser
  vvcdec: add cabac decoder
  vvcdec: add reference management
  vvcdec: add motion vector decoder
  vvcdec: add inter prediction
  vvcdec: add inv transform 1d
  vvcdec: add intra prediction
  vvcdec: add LMCS, Deblocking, SAO, and ALF filters
  vvcdec: add dsp init and inv transform
  vvcdec: add CTU(Coding Tree Unit) parser
  vvcdec: add CTU thread logical
  vvcdec: add full vvc decoder

 configure                            |    1 +
 libavcodec/Makefile                  |    1 +
 libavcodec/allcodecs.c               |    1 +
 libavcodec/vvc/Makefile              |   17 +
 libavcodec/vvc/vvc_cabac.c           | 2423 ++++++++++++++++++
 libavcodec/vvc/vvc_cabac.h           |  126 +
 libavcodec/vvc/vvc_ctu.c             | 2202 +++++++++++++++++
 libavcodec/vvc/vvc_ctu.h             |  406 ++++
 libavcodec/vvc/vvc_data.c            | 3295 +++++++++++++++++++++++++
 libavcodec/vvc/vvc_data.h            |   69 +
 libavcodec/vvc/vvc_executor.c        |  193 ++
 libavcodec/vvc/vvc_executor.h        |   73 +
 libavcodec/vvc/vvc_filter.c          | 1356 +++++++++++
 libavcodec/vvc/vvc_filter.h          |   70 +
 libavcodec/vvc/vvc_filter_template.c | 1216 +++++++++
 libavcodec/vvc/vvc_inter.c           | 1051 ++++++++
 libavcodec/vvc/vvc_inter.h           |   50 +
 libavcodec/vvc/vvc_inter_template.c  | 1510 ++++++++++++
 libavcodec/vvc/vvc_intra.c           |  763 ++++++
 libavcodec/vvc/vvc_intra.h           |   49 +
 libavcodec/vvc/vvc_intra_template.c  | 1018 ++++++++
 libavcodec/vvc/vvc_itx_1d.c          |  712 ++++++
 libavcodec/vvc/vvc_itx_1d.h          |   51 +
 libavcodec/vvc/vvc_mvs.c             | 1807 ++++++++++++++
 libavcodec/vvc/vvc_mvs.h             |   46 +
 libavcodec/vvc/vvc_ps.c              | 3379 ++++++++++++++++++++++++++
 libavcodec/vvc/vvc_ps.h              |  811 +++++++
 libavcodec/vvc/vvc_refs.c            |  498 ++++
 libavcodec/vvc/vvc_refs.h            |   44 +
 libavcodec/vvc/vvc_thread.c          |  761 ++++++
 libavcodec/vvc/vvc_thread.h          |   72 +
 libavcodec/vvc/vvcdec.c              | 1195 +++++++++
 libavcodec/vvc/vvcdec.h              |  314 +++
 libavcodec/vvc/vvcdsp.c              |  316 +++
 libavcodec/vvc/vvcdsp.h              |  183 ++
 libavcodec/vvc/vvcdsp_template.c     |  119 +
 36 files changed, 26198 insertions(+)
 create mode 100644 libavcodec/vvc/Makefile
 create mode 100644 libavcodec/vvc/vvc_cabac.c
 create mode 100644 libavcodec/vvc/vvc_cabac.h
 create mode 100644 libavcodec/vvc/vvc_ctu.c
 create mode 100644 libavcodec/vvc/vvc_ctu.h
 create mode 100644 libavcodec/vvc/vvc_data.c
 create mode 100644 libavcodec/vvc/vvc_data.h
 create mode 100644 libavcodec/vvc/vvc_executor.c
 create mode 100644 libavcodec/vvc/vvc_executor.h
 create mode 100644 libavcodec/vvc/vvc_filter.c
 create mode 100644 libavcodec/vvc/vvc_filter.h
 create mode 100644 libavcodec/vvc/vvc_filter_template.c
 create mode 100644 libavcodec/vvc/vvc_inter.c
 create mode 100644 libavcodec/vvc/vvc_inter.h
 create mode 100644 libavcodec/vvc/vvc_inter_template.c
 create mode 100644 libavcodec/vvc/vvc_intra.c
 create mode 100644 libavcodec/vvc/vvc_intra.h
 create mode 100644 libavcodec/vvc/vvc_intra_template.c
 create mode 100644 libavcodec/vvc/vvc_itx_1d.c
 create mode 100644 libavcodec/vvc/vvc_itx_1d.h
 create mode 100644 libavcodec/vvc/vvc_mvs.c
 create mode 100644 libavcodec/vvc/vvc_mvs.h
 create mode 100644 libavcodec/vvc/vvc_ps.c
 create mode 100644 libavcodec/vvc/vvc_ps.h
 create mode 100644 libavcodec/vvc/vvc_refs.c
 create mode 100644 libavcodec/vvc/vvc_refs.h
 create mode 100644 libavcodec/vvc/vvc_thread.c
 create mode 100644 libavcodec/vvc/vvc_thread.h
 create mode 100644 libavcodec/vvc/vvcdec.c
 create mode 100644 libavcodec/vvc/vvcdec.h
 create mode 100644 libavcodec/vvc/vvcdsp.c
 create mode 100644 libavcodec/vvc/vvcdsp.h
 create mode 100644 libavcodec/vvc/vvcdsp_template.c

--
2.25.1