ffvvc / ffmpeg Goto Github PK
View Code? Open in Web Editor NEWVVC Decoder for ffmpeg
License: Other
VVC Decoder for ffmpeg
License: Other
When using bit depths higher than 10-bit, the sps_range_extension
may be include in the SPS. This adds five new flags, primarily to increase the dynamic range. It is possible to use higher bit depths without the range extension, however their benefit will be reduced.
see #146 (comment)
we have a similar issue for put_pixels too, see #145 (comment)
Please help run performance tests for the following clips on ARM chip
comand line: ./ffmpeg -i xxx.266 -vsync 0 -f rawvideo /dev/null -y
and fill following table:
clips | FPS(3 times average) |
---|---|
RitualDance_1920x1080_60_10_420_32_LD.26 | |
RitualDance_1920x1080_60_10_420_37_RA.266 | |
Tango2_3840x2160_60_10_420_27_LD.266 |
top 10 functions for Tango2_3840x2160_60_10_420_27_LD.266
functions | percent |
---|---|
xxx | xx% |
Thanks
please add AVX for VVCInterDSPContext
function | 8 bits | 10 bits | 12 bits |
---|---|---|---|
put | ✅ | ✅ | ✅ |
put_uni | ✅ | ✅ | ✅ |
put_uni_w | ⬜ | ⬜ | ⬜ |
avg | ✅ | ✅ | ✅ |
avg_w | ✅ | ✅ | ✅ |
put_ciip | ⬜ | ⬜ | ⬜ |
put_gpm | ⬜ | ⬜ | ⬜ |
fetch_samples | ⬜ | ⬜ | ⬜ |
bdof_fetch_samples | ⬜ | ⬜ | ⬜ |
prof_grad_filter | ⬜ | ⬜ | ⬜ |
apply_prof | ⬜ | ⬜ | ⬜ |
apply_prof_uni | ⬜ | ⬜ | ⬜ |
apply_prof_uni_w | ⬜ | ⬜ | ⬜ |
apply_prof_bi | ⬜ | ⬜ | ⬜ |
apply_prof_bi_w | ⬜ | ⬜ | ⬜ |
apply_bdof | ⬜ | ⬜ | ⬜ |
sad | ⬜ | ⬜ | ⬜ |
dmvr | ⬜ | ⬜ | ⬜ |
please add functions based on usage
11.96% ffmpeg_g [.] put_vvc_luma_hv_10
5.88% ffmpeg_g [.] alf_get_coeff_and_clip_10
5.25% ffmpeg_g [.] ff_vvc_inv_dct2_64
4.30% [kernel] [k] __lock_text_start
4.22% ffmpeg_g [.] ff_vvc_alf_filter_luma_w16_16bpc_avx2
3.46% ffmpeg_g [.] put_vvc_luma_bi_hv_10
3.45% ffmpeg_g [.] alf_filter_luma_vb_10
3.13% ffmpeg_g [.] vvc_loop_filter_luma_10
2.81% ffmpeg_g [.] lmcs_filter_luma_10
2.46% ffmpeg_g [.] put_vvc_luma_uni_hv_10
2.27% ffmpeg_g [.] put_vvc_chroma_hv_10
2.21% libc-2.31.so [.] 0x000000000018b733
2.05% libc-2.31.so [.] 0x000000000018bb41
1.95% ffmpeg_g [.] put_vvc_chroma_uni_hv_10
1.84% ffmpeg_g [.] put_vvc_chroma_bi_hv_10
1.81% ffmpeg_g [.] vvc_deblock_bs
1.41% ffmpeg_g [.] ff_vvc_predict_inter
1.25% libpthread-2.31.so [.] __pthread_mutex_lock
1.24% libpthread-2.31.so [.] __pthread_mutex_unlock
1.22% ffmpeg_g [.] ff_vvc_residual_coding
1.08% ffmpeg_g [.] alf_filter_cc_10
1.03% ffmpeg_g [.] apply_prof_uni_10
0.99% ffmpeg_g [.] ff_vvc_alf_filter
0.98% ffmpeg_g [.] ff_vvc_inv_dct2_32
0.94% ffmpeg_g [.] vvc_deblock_bs_luma_vertical
0.92% ffmpeg_g [.] add_residual_10
Windows CI build seems to fail randomly with unable to find mspdbcore.dll
. Here is an example. Thought this had been fixed by 68c056f but seemingly not.
based on this LMCS consume about 2.81% time for Tango2_3840x2160_60_10_420_27_LD.266, maybe we can use VPGATHERDD to optimize it.
11.96% ffmpeg_g [.] put_vvc_luma_hv_10
5.88% ffmpeg_g [.] alf_get_coeff_and_clip_10
5.25% ffmpeg_g [.] ff_vvc_inv_dct2_64
4.30% [kernel] [k] __lock_text_start
4.22% ffmpeg_g [.] ff_vvc_alf_filter_luma_w16_16bpc_avx2
3.46% ffmpeg_g [.] put_vvc_luma_bi_hv_10
3.45% ffmpeg_g [.] alf_filter_luma_vb_10
3.13% ffmpeg_g [.] vvc_loop_filter_luma_10
2.81% ffmpeg_g [.] lmcs_filter_luma_10
2.46% ffmpeg_g [.] put_vvc_luma_uni_hv_10
2.27% ffmpeg_g [.] put_vvc_chroma_hv_10
2.21% libc-2.31.so [.] 0x000000000018b733
2.05% libc-2.31.so [.] 0x000000000018bb41
1.95% ffmpeg_g [.] put_vvc_chroma_uni_hv_10
1.84% ffmpeg_g [.] put_vvc_chroma_bi_hv_10
1.81% ffmpeg_g [.] vvc_deblock_bs
1.41% ffmpeg_g [.] ff_vvc_predict_inter
1.25% libpthread-2.31.so [.] __pthread_mutex_lock
1.24% libpthread-2.31.so [.] __pthread_mutex_unlock
1.22% ffmpeg_g [.] ff_vvc_residual_coding
1.08% ffmpeg_g [.] alf_filter_cc_10
1.03% ffmpeg_g [.] apply_prof_uni_10
0.99% ffmpeg_g [.] ff_vvc_alf_filter
0.98% ffmpeg_g [.] ff_vvc_inv_dct2_32
0.94% ffmpeg_g [.] vvc_deblock_bs_luma_vertical
0.92% ffmpeg_g [.] add_residual_10
run "valgrind ./ffmpeg_g -i SLICES_A_HUAWEI_3.bit -f rawvideo /dev/null -y"
you will get
==5154== Use of uninitialised value of size 8
==5154== at 0x46E433: sao_edge_filter_10 (vvcdsp_template.c:200)
==5154== by 0x50ACE9: ff_vvc_sao_filter (vvc_filter.c:309)
==5154== by 0x52C1DB: run_sao (vvc_thread.c:447)
==5154== by 0x52B462: ff_vvc_task_run (vvc_thread.c:567)
==5154== by 0x500AE9: executor_worker_task (executor.c:79)
==5154== by 0x49C8608: start_thread (pthread_create.c:477)
==5154== by 0x4B02132: clone (clone.S:95)
It's realted to sao temporary buffer lc->sao_buffer, once you memset the buffer here , valgrind will not report any issue.
Had some time so did a little bit more research on the Windows CI (#52) test failure.
memsetting the entire lc->sao_buffer
like bab47ca does not fix the issue, so I don't think the issue is related to #26. With this change, valgrind and clang's address sanitiser don't report any memory issues.
I have compiled FFmpeg directly with MSVC/MSYS2 (i.e. not via FFVS-Project-Generator) and the problem is similar so I don't think it's anything to do with the build files. I haven't yet got the gcc/MSYS2 toolchain or MinGW gcc cross-compilation working unfortunately.
I can't get the LTRP_A_ERICSSON_3 failure to reproduce on my machine, so I don't think there's anything special about this test. The tests which fail most frequently on my machine are:
The failures only occur when running tests concurrently, they do not occur when running the tests individually or when running tests using a single thread. I don't know whether this points towards libavcodec/vvc_thread.c at all? This line is part of what is preventing cross-compilation at the moment. Should it not be testing for compiler using See #57 for fix. Don't believe this is related._MSC_VER
or something instead of checking the OS?
Based on this #60 (comment).
It's highly possible the github windows runner has AVX2 support.
Please help enable chehckasm test on windows
The current executor will use a single queue for not-ready and ready tasks.
So, every task posted to the queue may wake all threads.
Better split it into two queues: 1 for not ready tasks. 1 for ready tasks. it is protected by different locks
The thread adds a task to the executor who will also check readiness for all tasks in the not-ready queue.
once it is ready it will add to the ready queue.
the target is reduce the lock an unlock usage in perf top result
11.96% ffmpeg_g [.] put_vvc_luma_hv_10
5.88% ffmpeg_g [.] alf_get_coeff_and_clip_10
5.25% ffmpeg_g [.] ff_vvc_inv_dct2_64
4.30% [kernel] [k] __lock_text_start
4.22% ffmpeg_g [.] ff_vvc_alf_filter_luma_w16_16bpc_avx2
3.46% ffmpeg_g [.] put_vvc_luma_bi_hv_10
3.45% ffmpeg_g [.] alf_filter_luma_vb_10
3.13% ffmpeg_g [.] vvc_loop_filter_luma_10
2.81% ffmpeg_g [.] lmcs_filter_luma_10
2.46% ffmpeg_g [.] put_vvc_luma_uni_hv_10
2.27% ffmpeg_g [.] put_vvc_chroma_hv_10
2.21% libc-2.31.so [.] 0x000000000018b733
2.05% libc-2.31.so [.] 0x000000000018bb41
1.95% ffmpeg_g [.] put_vvc_chroma_uni_hv_10
1.84% ffmpeg_g [.] put_vvc_chroma_bi_hv_10
1.81% ffmpeg_g [.] vvc_deblock_bs
1.41% ffmpeg_g [.] ff_vvc_predict_inter
1.25% libpthread-2.31.so [.] __pthread_mutex_lock
1.24% libpthread-2.31.so [.] __pthread_mutex_unlock
1.22% ffmpeg_g [.] ff_vvc_residual_coding
1.08% ffmpeg_g [.] alf_filter_cc_10
1.03% ffmpeg_g [.] apply_prof_uni_10
0.99% ffmpeg_g [.] ff_vvc_alf_filter
0.98% ffmpeg_g [.] ff_vvc_inv_dct2_32
0.94% ffmpeg_g [.] vvc_deblock_bs_luma_vertical
0.92% ffmpeg_g [.] add_residual_10
see https://github.com/ffvvc/FFmpeg/wiki/Introduction-to-the-code-structures#executorc for ref.
Conformance tests utilising 4:4:4 colour and inter-prediction are currently failing.
FFmpeg/FFmpeg@567e78b
b146efb
dabc1e6
[vvc @ 0000010ed137d040] Skipping NAL unit 12 0KB sq= 0B f=0/0
[vvc @ 0000010ed137d040] Skipping NAL unit 13
[vvc @ 0000010ed137d040] Skipping NAL unit 24 0KB sq= 0B f=0/0
[vvc @ 0000010ed1374250] Intra Block Copy is not implemented. Update your FFmpeg version to the newest one from Git.
If the problem still occurs, it means that your file has a feature which has not been implemented.
[vvc @ 0000010ed137d040] Skipping NAL unit 24
Last message repeated 3 times
[vvc @ 0000010ed1374610] Intra Block Copy is not implemented. Update your FFmpeg version to the newest one from Git.
If the problem still occurs, it means that your file has a feature which has not been implemented.
[vvc @ 0000010ed137d040] Skipping NAL unit 24
[vvc @ 0000010ed137d040] Skipping NAL unit 24 0KB sq= 0B f=0/0
Last message repeated 3 times
Input #0, vvc, from 'carvideo_yuv422p10le.vvc':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: vvc (Main 10 4:4:4), yuv422p10le(tv), 640x360, 25 fps, 1200k tbr, 1200k tbn
https://i.ibb.co/H7rPrVt/uiecfbv.png
Stream #0:0: Video: vvc (Main 10 4:4:4), none(tv), 640x360, 25 fps, 1200k tbr, 1200k tbn
[vvc @ 00000179d5c3fbf0] Skipping NAL unit 12
[vvc @ 00000179d5c3fbf0] Skipping NAL unit 13
[vvc @ 00000179d5c3fbf0] Skipping NAL unit 24
[vvc @ 00000179ce69d330] Palette is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
[vvc @ 00000179d5c3fbf0] Skipping NAL unit 24
Last message repeated 3 times
[vvc @ 00000179d4c2c100] Palette is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
[vvc @ 00000179d5c3fbf0] Skipping NAL unit 24
green screenshot
I understand that VVC decoder is only 10bit.
LInk codec ffmpeg | JVETVVC 21.0
https://www.sendspace.com/file/xn02cy
VVC SAO near same as HEVC. We can fully reuse HEVC SAO code for VVC.
Please add AVX2 for VVCSAODSPContext
Please use https://github.com/ShiftMediaProject/FFVS-Project-Generator#generating-custom-project-files to set up windows ci
There are several code mismatches with hevc.
like https://github.com/ffvvc/FFmpeg/blob/main/libavcodec/x86/vvc_sao.asm#L193, the EDGE_SRCSTRIDE
and
https://github.com/ffvvc/FFmpeg/blob/main/libavcodec/x86/vvc_sao.asm#L173
@zackerthescar do you know why?
thank you
For https://github.com/ffvvc/tests/blob/main/performance/RitualDance_1920x1080_60_10_420_37_RA.266, ALF use about 30~40% cpu resources. May need to vectorize the alf filter
the following table is an old one, please do
"./ffmpeg -i RitualDance_1920x1080_60_10_420_37_RA.266 -f rawvideo /dev/null -y" by yourself
28.82% ffmpeg_g ffmpeg_g [.] alf_filter_luma_10
7.43% ffmpeg_g ffmpeg_g [.] put_vvc_luma_hv_10
5.48% ffmpeg_g ffmpeg_g [.] ff_vvc_inv_dct2_64
5.30% ffmpeg_g ffmpeg_g [.] alf_get_coeff_and_clip_10
3.31% ffmpeg_g ffmpeg_g [.] inv_dct2.constprop.4
3.11% ffmpeg_g ffmpeg_g [.] alf_filter_chroma_10
3.04% ffmpeg_g ffmpeg_g [.] lmcs_filter_luma_10
2.50% ffmpeg_g ffmpeg_g [.] ff_vvc_deblocking_ctb_boundary_strengths
2.28% ffmpeg_g [kernel.kallsyms] [k] clear_page_erms
1.81% ffmpeg_g ffmpeg_g [.] put_vvc_luma_bi_hv_10
1.81% ffmpeg_g libc-2.31.so [.] 0x000000000018ba51
1.52% ffmpeg_g ffmpeg_g [.] ff_vvc_inv_dst7_32
1.50% ffmpeg_g ffmpeg_g [.] vvc_loop_filter_luma_10
1.46% ffmpeg_g ffmpeg_g [.] put_vvc_luma_uni_hv_10
1.37% ffmpeg_g [kernel.kallsyms] [k] __lock_text_start
1.30% ffmpeg_g ffmpeg_g [.] itransform.isra.0
1.27% ffmpeg_g ffmpeg_g [.] hls_coding_unit
1.27% ffmpeg_g ffmpeg_g [.] put_vvc_chroma_hv_10
1.27% ffmpeg_g ffmpeg_g [.] put_vvc_chroma_uni_hv_10
1.25% ffmpeg_g libc-2.31.so [.] 0x000000000018b643
1.17% ffmpeg_g ffmpeg_g [.] ff_vvc_residual_coding
1.08% ffmpeg_g ffmpeg_g [.] ff_vvc_deblock_filter
1.01% ffmpeg_g ffmpeg_g [.] ff_vvc_inv_dct2_32
0.85% ffmpeg_g ffmpeg_g [.] alf_filter_cc_10
0.79% ffmpeg_g ffmpeg_g [.] put_vvc_chroma_bi_hv_10
0.69% ffmpeg_g ffmpeg_g [.] alf_prepare_buffer
0.65% ffmpeg_g ffmpeg_g [.] intra_pred_10
0.55% ffmpeg_g ffmpeg_g [.] apply_prof_uni_10
0.53% ffmpeg_g libc-2.31.so [.] 0x000000000018b7b3
0.47% ffmpeg_g ffmpeg_g [.] ff_vvc_apply_dmvr_info_ctb
0.47% ffmpeg_g ffmpeg_g [.] put_vvc_luma_v_10
by the nature of transformation, We only have a few no zero coeffes. the position is recorded by tb->max_scan_x and tb->max_scan_y.
We can use this to optimize
FFmpeg/libavcodec/vvc_itx_1d.c
Line 146 in 3cb136d
see https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/blob/master/source/Lib/CommonLib/TrQuant_EMT.cpp#L886 for reference.
A recent update to binutils has broken FFmpeg compilation: https://trac.ffmpeg.org/ticket/10405. There is a fix in FFmpeg master, so we will need to merge/rebase to allow building with binutils >= 2.41.
TEMPSCAL_A_Panasonic_4.bit:
https://github.com/ffvvc/FFmpeg/actions/runs/5445305861/jobs/9904363017 c code only
https://github.com/ffvvc/FFmpeg/actions/runs/5865552084/job/15902678600 c code only
TREE_C_HHI_3.bit:
https://github.com/ffvvc/FFmpeg/actions/runs/5538781956/jobs/10109072165
see comments from http://ffmpeg.org/pipermail/ffmpeg-devel/2023-January/305660.html
Current inter-predict is blockable, it will wait for another frame's pixels to ready. It may have the following issues:
FFmpeg/libavcodec/vvc_itx_1d.c
Line 125 in 3cb136d
run ./ffmpeg -i LTRP_A_ERICSSON_3.bit test.yuv -vsync 0
the rawvideo muxer will report:
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 63
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 64
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 65
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 66
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 67
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 68
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 69
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 70
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 71
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 72
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 73
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 74
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 75
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 76
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 77
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 78
[rawvideo @ 0x55b65f1d6c80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 79 >= 79
It may be related to some timestamp issues
see
https://github.com/ffvvc/FFmpeg/actions/runs/3922992619
https://github.com/ffvvc/FFmpeg/actions/runs/3923078300
https://github.com/ffvvc/FFmpeg/actions/runs/3923169524
this never happened in my local, may need find a server to reproduce it
https://github.com/ffvvc/FFmpeg/blob/main/libavcodec/vvc_thread.c#L570
This is a FFMPEG Windows compatibility issue, mainly because https://github.com/ffvvc/FFmpeg/blob/main/compat/atomics/win32/stdatomic.h#L104 does not follow the spec, it accepts automic_int(intptr_t) instead of int.
We have many temporary buffers in VVCLocalContext,
Lines 279 to 291 in b4e85c1
2~4 of the buffers may be enough for the current code. Please help remove sao_buffer, alf_buffer_luma and other buffers
Please follow https://github.com/marketplace/actions/setup-wsl to set up ci for WSL
from #91 (comment)
In gcc 11.3.1 and higher. I have such message:
I added this fix plus #88c:\gcc1131\x86_64-w64-mingw32\include\libavcodec\vvc_ctu.h:133:5: error: expected specifier-qualifier-list before 'DECLARE_ALIGNED'
133 | DECLARE_ALIGNED(4, Mv, mv)[2]; ///< mvL0, vvL1
| ^~~~~~~~~~~~~~~
c:\gcc1131\x86_64-w64-mingw32\include\libavcodec\vvc_ctu.h:142:5: error: expected specifier-qualifier-list before 'DECLARE_ALIGNED'
142 | DECLARE_ALIGNED(4, Mv, mv)[2]; ///< mvL0, vvL1
| ^~~~~~~~~~~~~~~
c:\gcc1131\x86_64-w64-mingw32\include\libavcodec\vvc_ctu.h:301:5: error: expected specifier-qualifier-list before 'DECLARE_ALIGNED'
301 | DECLARE_ALIGNED(32, uint8_t, edge_emu_buffer)[(MAX_PB_SIZE + 7) * EDGE_EMU_BUFFER_STRIDE * 2];
| ^~~~~~~~~~~~~~~
In file included from vvcdsp.c:24:
c:\gcc1131\x86_64-w64-mingw32\include\libavcodec\vvc_ctu.h:133:5: error: expected specifier-qualifier-list before 'DECLARE_ALIGNED'
133 | DECLARE_ALIGNED(4, Mv, mv)[2]; ///< mvL0, vvL1
| ^~~~~~~~~~~~~~~
c:\gcc1131\x86_64-w64-mingw32\include\libavcodec\vvc_ctu.h:142:5: error: expected specifier-qualifier-list before 'DECLARE_ALIGNED'
142 | DECLARE_ALIGNED(4, Mv, mv)[2]; ///< mvL0, vvL1
| ^~~~~~~~~~~~~~~
c:\gcc1131\x86_64-w64-mingw32\include\libavcodec\vvc_ctu.h:301:5: error: expected specifier-qualifier-list before 'DECLARE_ALIGNED'
301 | DECLARE_ALIGNED(32, uint8_t, edge_emu_buffer)[(MAX_PB_SIZE + 7) * EDGE_EMU_BUFFER_STRIDE * 2];
| ^~~~~~~~~~~~~~~
In gcc 11.3.1 and higher. I have such message:
I added this fix plus #88c:\gcc1131\x86_64-w64-mingw32\include\libavcodec\vvc_ctu.h:133:5: error: expected specifier-qualifier-list before 'DECLARE_ALIGNED'
133 | DECLARE_ALIGNED(4, Mv, mv)[2]; ///< mvL0, vvL1
| ^~~~~~~~~~~~~~~
c:\gcc1131\x86_64-w64-mingw32\include\libavcodec\vvc_ctu.h:142:5: error: expected specifier-qualifier-list before 'DECLARE_ALIGNED'
142 | DECLARE_ALIGNED(4, Mv, mv)[2]; ///< mvL0, vvL1
| ^~~~~~~~~~~~~~~
c:\gcc1131\x86_64-w64-mingw32\include\libavcodec\vvc_ctu.h:301:5: error: expected specifier-qualifier-list before 'DECLARE_ALIGNED'
301 | DECLARE_ALIGNED(32, uint8_t, edge_emu_buffer)[(MAX_PB_SIZE + 7) * EDGE_EMU_BUFFER_STRIDE * 2];
| ^~~~~~~~~~~~~~~
In file included from vvcdsp.c:24:
c:\gcc1131\x86_64-w64-mingw32\include\libavcodec\vvc_ctu.h:133:5: error: expected specifier-qualifier-list before 'DECLARE_ALIGNED'
133 | DECLARE_ALIGNED(4, Mv, mv)[2]; ///< mvL0, vvL1
| ^~~~~~~~~~~~~~~
c:\gcc1131\x86_64-w64-mingw32\include\libavcodec\vvc_ctu.h:142:5: error: expected specifier-qualifier-list before 'DECLARE_ALIGNED'
142 | DECLARE_ALIGNED(4, Mv, mv)[2]; ///< mvL0, vvL1
| ^~~~~~~~~~~~~~~
c:\gcc1131\x86_64-w64-mingw32\include\libavcodec\vvc_ctu.h:301:5: error: expected specifier-qualifier-list before 'DECLARE_ALIGNED'
301 | DECLARE_ALIGNED(32, uint8_t, edge_emu_buffer)[(MAX_PB_SIZE + 7) * EDGE_EMU_BUFFER_STRIDE * 2];
| ^~~~~~~~~~~~~~~
How to setup:
#91 (comment)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.