[FFmpeg-devel] [PATCH v3 14/14] vvcdec: add full vvc decoder

Michael Niedermayer michael at niedermayer.cc
Mon Sep 4 17:34:14 EEST 2023


On Mon, Sep 04, 2023 at 04:28:57PM +0200, Michael Niedermayer wrote:
> On Sun, Sep 03, 2023 at 12:07:41AM +0800, Nuo Mi wrote:
> > vvc decoder plug-in to avcodec.
> > split frames into slices/tiles and send them to vvc_thread for further decoding
> > reorder and wait for the frame decoding to be done and output the frame
> > 
> > Features:
> >     + Support I, P, B frames
> >     + Support 8/10/12 bits, chroma 400, 420, 422, and 444 and range extension
> >     + Support VVC new tools like MIP, CCLM, AFFINE, GPM, DMVR, PROF, BDOF, LMCS, ALF
> >     + 295 conformace clips passed
> >     - Not support RPR, IBC, PALETTE, and other minor features yet
> > 
> > Performance:
> >     C code FPS on i7-12700 (x86):
> >         BQTerrace_1920x1080_60_10_420_22_RA.vvc     77.7
> >         Chimera_8bit_1080P_1000_frames.vvc          174.3
> >         NovosobornayaSquare_1920x1080.bin           163.7
> >         RitualDance_1920x1080_60_10_420_32_LD.266   136.7
> >         RitualDance_1920x1080_60_10_420_37_RA.266   154.3
> >         Tango2_3840x2160_60_10_420_27_LD.266        30.0
> >         Tango2_3840x2160_60_10_420_27_RA.266        29.0
> > 
> >     C code FPS on M1 Mac Pro (ARM):
> >         BQTerrace_1920x1080_60_10_420_22_RA.vvc     58.7
> >         Chimera_8bit_1080P_1000_frames.vvc          153.3
> >         NovosobornayaSquare_1920x1080.bin           150.3
> >         RitualDance_1920x1080_60_10_420_32_LD.266   105.0
> >         RitualDance_1920x1080_60_10_420_37_RA.266   133.0
> >         Tango2_3840x2160_60_10_420_27_LD.266        21.7
> > 
> >     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 at gmail.com>
> >     Xu Mu <toxumu at outlook.com>
> >     frankplow <post at frankplowman.com>
> >     Shaun Loo <shaunloo10 at gmail.com>
> > ---
> >  libavcodec/vvc/vvcdec.c | 1025 ++++++++++++++++++++++++++++++++++++++-
> >  1 file changed, 1024 insertions(+), 1 deletion(-)
> 
> are the fate tests like fate-cbs-vvc-SUBPIC_A_3 supposed to take really long
> after this ?
> 
> (really long meaning longer than my patience before killing the task)

Heres a backtrace when i stop it

[vvc @ 0x555558699e40] Skipping NAL unit 19
[vvc @ 0x555558699e40] Skipping NAL unit 24
[vvc @ 0x555558699e40] Skipping NAL unit 19
[vvc @ 0x555558699e40] Skipping NAL unit 24
[vvc @ 0x555558699e40] Skipping NAL unit 19
^C
Thread 1 "ffmpeg_g" received signal SIGINT, Interrupt.
__lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
135	../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: No such file or directory.
(gdb) bt
#0  __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007ffff00c4025 in __GI___pthread_mutex_lock (mutex=0x5555586d3540) at ../nptl/pthread_mutex_lock.c:80
#2  0x00005555567d24d5 in strict_pthread_mutex_lock (mutex=0x5555586d3540) at libavutil/thread.h:91
#3  0x00005555567d2e6c in av_executor_execute (e=0x5555586d3500, t=0x555558dc7900) at libavutil/executor.c:187
#4  0x0000555556642195 in ff_vvc_frame_add_task (s=0x55555869b400, t=0x555558dc7900) at libavcodec/vvc/vvc_thread.c:770
#5  0x000055555627f997 in decode_slice (s=0x55555869b400, fc=0x7ffff7f3b0b0, nal=0x555558721f30, unit=0x55555873e498) at libavcodec/vvc/vvcdec.c:825
#6  0x000055555627fa48 in decode_nal_unit (s=0x55555869b400, fc=0x7ffff7f3b0b0, nal=0x555558721f30, unit=0x55555873e498) at libavcodec/vvc/vvcdec.c:851
#7  0x000055555627fc11 in decode_nal_units (s=0x55555869b400, fc=0x7ffff7f3b0b0, avpkt=0x55555869ba00) at libavcodec/vvc/vvcdec.c:897
#8  0x0000555556280007 in vvc_decode_frame (avctx=0x555558699e40, output=0x55555869b0c0, got_output=0x7fffffffd400, avpkt=0x55555869ba00) at libavcodec/vvc/vvcdec.c:989
#9  0x0000555555d9fa3c in decode_simple_internal (avctx=0x555558699e40, frame=0x55555869b0c0, discarded_samples=0x7fffffffd460) at libavcodec/decode.c:432
#10 0x0000555555d9ff93 in decode_simple_receive_frame (avctx=0x555558699e40, frame=0x55555869b0c0) at libavcodec/decode.c:606
#11 0x0000555555da0103 in decode_receive_frame_internal (avctx=0x555558699e40, frame=0x55555869b0c0) at libavcodec/decode.c:634
#12 0x0000555555da04c8 in avcodec_send_packet (avctx=0x555558699e40, avpkt=0x555559917c88) at libavcodec/decode.c:731
#13 0x0000555555a9d3d8 in try_decode_frame (s=0x555558698900, st=0x5555586999c0, pkt=0x555559917c88, options=0x55555869a3c0) at libavformat/demux.c:2075
#14 0x0000555555aa01f2 in avformat_find_stream_info (ic=0x555558698900, options=0x55555869a3c0) at libavformat/demux.c:2771
#15 0x0000555555697446 in ifile_open (o=0x7fffffffdaa0, filename=0x7fffffffe56b "fate-suite//vvc-conformance/SUBPIC_A_3.bit") at fftools/ffmpeg_demux.c:1538
#16 0x00005555556baaf6 in open_files (l=0x555558698218, inout=0x55555687dc92 "input", open_file=0x555555696649 <ifile_open>) at fftools/ffmpeg_opt.c:1284
#17 0x00005555556bac9e in ffmpeg_parse_options (argc=22, argv=0x7fffffffe1c8) at fftools/ffmpeg_opt.c:1324
#18 0x00005555556c8c06 in main (argc=22, argv=0x7fffffffe1c8) at fftools/ffmpeg.c:1314

[...]


-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Everything should be made as simple as possible, but not simpler.
-- Albert Einstein
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20230904/f13af0cb/attachment.sig>


More information about the ffmpeg-devel mailing list