4c0372281b
aarch64/vvc: Bind h26x/sao filter implementation to vvc
...
Reviewed-by: Martin Storsjö <martin@martin.st >
2024-08-31 16:07:50 +08:00
8cc10298a7
aarch64/hevc: Move sao to h26x directory
...
So vvc can reuse the implementation.
Reviewed-by: Martin Storsjö <martin@martin.st >
2024-08-31 16:07:43 +08:00
93281630a7
lavc/vvc: Validate explicit subpic locations
...
Implement the missing requirements from H.266 (V3) p. 106 on the
position and size of subpictures whose dimensions are provided
explicitly.
Signed-off-by: Frank Plowman <post@frankplowman.com >
2024-08-31 15:06:39 +08:00
01701bdcd5
lavc/vvc: Prevent OOB access in subpic_tiles
...
The previous logic relied on the subpicture boundaries coinciding with
the tile boundaries. Per 6.3.1 of H.266 (V3), vertical subpicture
boundaries are always tile boundaries however the same cannot be said
for horizontal subpicture boundaries. Furthermore, it is possible to
construct an illegal bitstream where vertical subpicture boundaries are
not coincident with tile boundaries. In these cases, the condition of
the while loop would never be satisfied resulting in an OOB read on
col_bd/row_bd.
Patch fixes this issue by replacing != with <, thereby not requiring
subpicture boundaries and tile boundaries to be coincident.
Signed-off-by: Frank Plowman <post@frankplowman.com >
2024-08-31 15:05:23 +08:00
b2eabe0ff2
avcodec/vvcdec: format, fix indent for vvc_deblock_bs
2024-08-31 14:16:19 +08:00
7bd22342c3
avcodec/vvcdec: filter, fix uninitialized variables for YUV400 format
...
fix
==135000== Conditional jump or move depends on uninitialised value(s)
==135000== at 0x169FF95: vvc_deblock_bs (filter.c:699)
and
==135000== Conditional jump or move depends on uninitialised value(s)
==135000== at 0x16A2E72: ff_vvc_alf_filter (filter.c:1217)
Reported-by: James Almer <jamrial@gmail.com >
2024-08-31 14:16:19 +08:00
7175544c0b
checkasm: add vvc_bdof test
...
apply_bdof_8_8x16_c: 5776.5
apply_bdof_8_8x16_avx2: 396.2
apply_bdof_8_16x8_c: 5722.0
apply_bdof_8_16x8_avx2: 216.0
apply_bdof_8_16x16_c: 11213.2
apply_bdof_8_16x16_avx2: 434.5
apply_bdof_10_8x16_c: 5657.7
apply_bdof_10_8x16_avx2: 1096.0
apply_bdof_10_16x8_c: 5531.7
apply_bdof_10_16x8_avx2: 212.5
apply_bdof_10_16x16_c: 11043.7
apply_bdof_10_16x16_avx2: 1252.7
apply_bdof_12_8x16_c: 5680.0
apply_bdof_12_8x16_avx2: 1096.5
apply_bdof_12_16x8_c: 5646.2
apply_bdof_12_16x8_avx2: 624.5
apply_bdof_12_16x16_c: 11076.0
apply_bdof_12_16x16_avx2: 1241.5
2024-08-31 14:08:54 +08:00
15eb10c6de
x86/vvcdec: inter, add optical flow avx2 code
...
BDoF used about 10%–25% of the CPU for some clips.
Here are the FPS for one run; please ignore the negative values, as they may be due to round-to-round variation
clips | before | after | delta
--------------------------------------------|--------|-------|------
RitualDance_1920x1080_60_10_420_37_RA.266 | 310.0 | 363.0 | 14.60%
NovosobornayaSquare_1920x1080.bin | 322.3 | 339.7 | 5.12%
Tango2_3840x2160_60_10_420_27_LD.266 | 71.0 | 68.7 | -3.35%
RitualDance_1920x1080_60_10_420_32_LD.266 | 250.0 | 245.3 | -1.92%
Chimera_8bit_1080P_1000_frames.vvc | 359.3 | 422.7 | 15.00%
BQTerrace_1920x1080_60_10_420_22_RA.vvc | 142.3 | 147.7 | 3.66%
Reviewed-by: James Almer <jamrial@gmail.com >
2024-08-31 14:06:19 +08:00
f851abb4b3
avcodec/vvcdec: bdof, do not pad sources and gradients to simplify the code
2024-08-31 13:57:51 +08:00
8347def797
avcodec/vvcdec: misc, rename BDOF_BLOCK_SIZE to BDOF_MIN_BLOCK_SIZE
2024-08-31 13:57:51 +08:00
b730defd52
avcodec/msmpeg4dec: init dc_pred_dir
...
Its not really used but its passed as a argument and then not used
Fixes: 70965/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MSMPEG4V1_fuzzer-5583223747313664
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2024-08-28 17:38:30 +02:00
4e39795c75
avformat/mvdec: Check if name was fully read
...
Fixes: use of uninitialized value
Fixes: 70901/clusterfuzz-testcase-minimized-ffmpeg_dem_MV_fuzzer-6341913949569024
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2024-08-28 17:38:28 +02:00
5338707930
avcodec/wmavoice: Do not use uninitialized pitch[0]
...
Fixes: use of uninitialized value
Fixes: 70850/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WMAVOICE_fuzzer-4806127362048000
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2024-08-28 17:38:24 +02:00
53066e8cc2
MAINTAINERS: some random updating
...
Adding level to some of my entries
Adding level to some random entries of other people who i have seen actively maintaining their code
removing some people who have not been active where others where active
For most we will need to contact people and ask if they are still available as maintainers
(but for cases where patches are ignored for many months even with pings sent to the maintainer
entries should be set to unmaintained)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2024-08-28 16:27:56 +02:00
337e7949da
MAINTAINERS: Add a maintaince level field
...
Text was stolen from the linux kernel
This is thus identical to the kernel just a different more compact format.
I am very happy also to switch the file entirely to the format of the linux kernel maintainer list
if people prefer
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2024-08-28 16:27:56 +02:00
815d008681
avformat/argo_brp: Check that ASF chunk header is completely read
...
Fixes: Use of uninitialized value
Fixes: 71280/clusterfuzz-testcase-minimized-ffmpeg_dem_ARGO_BRP_fuzzer-4692991866896384
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2024-08-28 16:27:56 +02:00
46e3bc2ebd
tools/target_swr_fuzzer: Check av_samples_fill_arrays() for failure
...
Fixes: use of uninitialized value
Fixes: 71242/clusterfuzz-testcase-minimized-ffmpeg_SWR_fuzzer-4905557943713792
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2024-08-28 16:27:55 +02:00
b9c7f50c7d
avcodec/notchlc: Check bytes left before reading
...
Fixes: Use of uninitialized value
Fixes: 71230/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_NOTCHLC_fuzzer-4624502095413248
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2024-08-28 16:27:55 +02:00
01910ca603
avcodec/vc1_block: propagate error codes
...
Fixes: use of uninitialized value
Fixes: 71228/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VC1IMAGE_fuzzer-6188476880453632
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2024-08-28 16:27:55 +02:00
796ff2d599
avformat/apetag: Check APETAGEX
...
Fixes: Use of uninitialized value
Fixes: 71074/clusterfuzz-testcase-minimized-ffmpeg_IO_DEMUXER_fuzzer-5697034877730816
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2024-08-28 16:27:54 +02:00
b08776e3ae
avcodec/magicyuvenc: better slice height
...
Fixes: Use of uninitialized value
Fixes: 71072/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MAGICYUV_fuzzer-4835252046987264
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2024-08-28 16:27:54 +02:00
e758b24396
checkasm: add wildcompares for test & functions
...
Added:
--test=<pattern> Filter tests by glob style pattern.
--bench[=<pattern>] Run benchmark and optionally filter functions
by glob style pattern.
Example:
$ ./tests/checkasm/checkasm --bench=yuva*
[...]
yuva420p_bgr24_8_c: 34.5 ( 1.00x)
yuva420p_bgr24_8_ssse3: 31.1 ( 1.11x)
yuva420p_bgr24_128_c: 310.6 ( 1.00x)
yuva420p_bgr24_128_ssse3: 178.1 ( 1.74x)
yuva420p_bgr24_1080_c: 2509.6 ( 1.00x)
yuva420p_bgr24_1080_ssse3: 1471.5 ( 1.71x)
yuva420p_bgr24_1920_c: 4462.6 ( 1.00x)
yuva420p_bgr24_1920_ssse3: 2331.1 ( 1.91x)
[...]
Ported from dav1d.
Signed-off-by: J. Dekker <jdek@itanimul.li >
2024-08-28 11:45:46 +02:00
d0986709a8
checkasm: improve print format
...
Port dav1d's checkasm output format to FFmpeg's checkasm, includes
relative speedups and aligns results.
Signed-off-by: J. Dekker <jdek@itanimul.li >
2024-08-28 11:45:46 +02:00
03f26549cd
checkasm: print only results to stdout
...
Signed-off-by: J. Dekker <jdek@itanimul.li >
2024-08-28 11:45:46 +02:00
42528ff835
checkasm: add csv/tsv bench output
...
When collecting performance information from checkasm it is common
to parse the output for use in graphs to compare vs different
architectures.
Signed-off-by: J. Dekker <jdek@itanimul.li >
2024-08-28 11:45:46 +02:00
d89930f866
lavu/opt: add API for retrieving array-type option values
...
Previously one could only convert the entire array to a string, not
access individual elements.
2024-08-27 16:53:16 +02:00
4a5bb84515
lavu/opt: forward av_opt_get_video_rate() to av_opt_get_q()
...
The two functions are exactly the same.
2024-08-27 16:53:16 +02:00
efe38286d1
lavu/opt: document underlying C types for enum AVOptionType
2024-08-27 16:53:16 +02:00
7e4784e40c
avcodec/mpegvideoencdsp: speed up draw_edges_8_c by inlining it for all used edge widths
...
This commit also restricts w to 4, 8, or 16.
Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz:
before after
draw_edges_8_1724_4_c: 46796.5 7141.7 ( 6.55x)
draw_edges_8_1724_8_c: 43584.5 7216.5 ( 6.04x)
draw_edges_8_1724_16_c: 47007.2 10080.5 ( 4.66x)
draw_edges_128_407_4_c: 11199.0 4185.0 ( 2.68x)
draw_edges_128_407_8_c: 10660.2 4418.0 ( 2.41x)
draw_edges_128_407_16_c: 11800.2 4634.5 ( 2.55x)
draw_edges_1080_31_4_c: 1356.5 634.7 ( 2.14x)
draw_edges_1080_31_8_c: 1972.0 1430.2 ( 1.38x)
draw_edges_1080_31_16_c: 4621.0 4009.7 ( 1.15x)
draw_edges_1920_4_4_c: 834.5 795.2 ( 1.05x)
draw_edges_1920_4_4_negstride_c: 821.7 802.0 ( 1.02x)
draw_edges_1920_4_8_c: 2782.2 2650.7 ( 1.05x)
draw_edges_1920_4_8_negstride_c: 2724.7 2670.0 ( 1.02x)
draw_edges_1920_4_16_c: 6437.5 6327.7 ( 1.02x)
draw_edges_1920_4_16_negstride_c: 6395.2 6349.5 ( 1.01x)
A55:
before after
draw_edges_8_1724_4_c: 52540.4 19739.2 ( 2.66x)
draw_edges_8_1724_8_c: 45386.9 19847.4 ( 2.29x)
draw_edges_8_1724_16_c: 51995.4 23284.7 ( 2.23x)
draw_edges_128_407_4_c: 13401.1 6988.2 ( 1.92x)
draw_edges_128_407_8_c: 12218.4 7527.9 ( 1.62x)
draw_edges_128_407_16_c: 13695.9 8207.2 ( 1.67x)
draw_edges_1080_31_4_c: 3702.9 3110.4 ( 1.19x)
draw_edges_1080_31_8_c: 6015.6 5643.2 ( 1.07x)
draw_edges_1080_31_16_c: 12281.9 11901.4 ( 1.03x)
draw_edges_1920_4_4_c: 3957.9 3970.2 ( 1.00x)
draw_edges_1920_4_4_negstride_c: 3964.1 3825.2 ( 1.04x)
draw_edges_1920_4_8_c: 7757.9 7676.4 ( 1.01x)
draw_edges_1920_4_8_negstride_c: 7923.6 7812.4 ( 1.01x)
draw_edges_1920_4_16_c: 14791.6 15143.9 ( 0.98x)
draw_edges_1920_4_16_negstride_c: 14788.6 15163.4 ( 0.98x)
A76:
before after
draw_edges_8_1724_4_c: 39786.0 4968.5 ( 8.01x)
draw_edges_8_1724_8_c: 32971.5 5069.5 ( 6.50x)
draw_edges_8_1724_16_c: 40056.0 6017.2 ( 6.66x)
draw_edges_128_407_4_c: 9517.2 1210.5 ( 7.86x)
draw_edges_128_407_8_c: 8035.7 1346.2 ( 5.97x)
draw_edges_128_407_16_c: 9946.5 1648.2 ( 6.03x)
draw_edges_1080_31_4_c: 1308.0 660.7 ( 1.98x)
draw_edges_1080_31_8_c: 1785.5 1270.7 ( 1.41x)
draw_edges_1080_31_16_c: 3266.7 2591.5 ( 1.26x)
draw_edges_1920_4_4_c: 1151.0 1090.7 ( 1.06x)
draw_edges_1920_4_4_negstride_c: 1153.7 1096.5 ( 1.05x)
draw_edges_1920_4_8_c: 2220.7 2186.5 ( 1.02x)
draw_edges_1920_4_8_negstride_c: 2218.5 2193.5 ( 1.01x)
draw_edges_1920_4_16_c: 4324.2 4230.0 ( 1.02x)
draw_edges_1920_4_16_negstride_c: 4310.7 4233.0 ( 1.02x)
2024-08-26 12:50:26 +02:00
3bfce2a104
avcodec/x86/mpegvideoencdsp: speed up draw_edges_mmx by using memcpy()
...
The mmx memory copy code is not nearly as efficient as memcpy(), which
would make draw_edges_mmx much slower than draw_edges_8_c.
Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz:
before after
draw_edges_8_1724_4_mmx: 8700.5 8751.8 ( 0.99x)
draw_edges_8_1724_8_mmx: 10441.7 10558.0 ( 0.99x)
draw_edges_8_1724_16_mmx: 10660.7 10799.5 ( 0.99x)
draw_edges_128_407_4_mmx: 4202.2 4099.3 ( 1.03x)
draw_edges_128_407_8_mmx: 4579.0 4511.3 ( 1.02x)
draw_edges_128_407_16_mmx: 5479.7 4729.5 ( 1.16x)
draw_edges_1080_31_4_mmx: 1546.7 658.0 ( 2.35x)
draw_edges_1080_31_8_mmx: 2745.5 1442.5 ( 1.90x)
draw_edges_1080_31_16_mmx: 12511.5 4901.0 ( 2.55x)
draw_edges_1920_4_4_mmx: 2659.0 705.0 ( 3.77x)
draw_edges_1920_4_4_negstride_mmx: 2643.0 729.0 ( 3.63x)
draw_edges_1920_4_8_mmx: 7845.0 2819.0 ( 2.78x)
draw_edges_1920_4_8_negstride_mmx: 7777.0 2747.3 ( 2.83x)
draw_edges_1920_4_16_mmx: 24583.7 6358.3 ( 3.87x)
draw_edges_1920_4_16_negstride_mmx: 24589.0 6367.0 ( 3.86x)
2024-08-26 12:50:21 +02:00
9cdcbb639a
avcodec/x86/mpegvideoencdsp: fix comment for draw_edges_mmx
...
Not only w == 8 and w == 16 are supported, but also w == 4.
2024-08-26 12:49:24 +02:00
8c203ea7c7
avcodec/aarch64/mpegvideoencdsp: add dotprod implementation for pix_norm1
...
A55 A76
pix_norm1_c: 484.3 235.2
pix_norm1_neon: 193.8 ( 2.50x) 44.7 ( 5.26x)
pix_norm1_dotprod: 91.8 ( 5.28x) 21.2 (11.09x)
2024-08-26 12:49:04 +02:00
9f68a3712e
avcodec/aarch64/mpegvideoencdsp: add neon implementations for pix_sum and pix_norm1
...
A55 A76
pix_norm1_c: 478.2 234.2
pix_norm1_neon: 188.2 ( 2.54x) 41.2 ( 5.68x)
pix_sum_c: 304.2 244.0
pix_sum_neon: 77.2 ( 3.94x) 21.5 (11.35x)
2024-08-26 12:48:31 +02:00
834964ce1a
checkasm/mpegvideoencdsp: add pix_sum, pix_norm1, and draw_edges
2024-08-26 12:48:09 +02:00
f9074427db
avcodec/x86/mpegvideoencdsp: support negative strides in draw_edges_mmx()
2024-08-26 12:44:02 +02:00
98610fe95f
fate/checkasm: run the sw_yuv2yuv test
2024-08-26 12:16:40 +02:00
12cdb30e37
avcodec/videotoolboxenc: Fix leaking of supported_props
...
There are two VTCompressionSessionRef been created, one for generating
extradata, and another for normal encoding. supported_props was been
overwritten without release.
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com >
2024-08-26 17:09:46 +08:00
420d443600
swscale/aarch64: cosmetics fix (spaces inside curly braces)
2024-08-26 11:07:49 +02:00
52887683e9
swscale/aarch64: add nv24/nv42 to yuv420p unscaled converter
...
A55 A76
nv24_yuv420p_128_c: 4956.1 1267.0
nv24_yuv420p_128_neon: 3109.1 ( 1.59x) 640.0 ( 1.98x)
nv24_yuv420p_1920_c: 35728.4 11736.2
nv24_yuv420p_1920_neon: 8011.1 ( 4.46x) 2436.0 ( 4.82x)
nv42_yuv420p_128_c: 4956.4 1270.5
nv42_yuv420p_128_neon: 3074.6 ( 1.61x) 639.5 ( 1.99x)
nv42_yuv420p_1920_c: 35685.9 11732.5
nv42_yuv420p_1920_neon: 7995.1 ( 4.46x) 2437.2 ( 4.81x)
2024-08-26 11:04:46 +02:00
88a563ad18
swscale: export ff_copyPlane so it may be used by simd code
2024-08-26 11:04:46 +02:00
a2e01cade8
checkasm/yuv2yuv: add tests for semiplanar unscaled converters
2024-08-26 11:04:46 +02:00
4eb5594295
swscale: add nv24/nv42 to yuv420p unscaled converter
2024-08-26 11:04:46 +02:00
aa14f9fe63
avcodec/mediacodecdec: Skip dequeue buffer in draining state
...
There is no more packet to queue in draining state.
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com >
2024-08-26 16:59:07 +08:00
2e370805da
avfilter/unsharp: Merge header into .c
...
It was shared with opencl implementation.
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com >
2024-08-26 16:58:25 +08:00
d42cd5b75b
avformat/vapoursynth: load library at runtime
...
Signed-off-by: Stefan Oltmanns <stefan-oltmanns@gmx.net >
2024-08-26 10:30:52 +02:00
eac611f1a4
avformat/vapoursynth: Update to API version 4
...
Signed-off-by: Stefan Oltmanns <stefan-oltmanns@gmx.net >
2024-08-26 10:30:50 +02:00
abb4e13a0a
avutil/aarch64: add AV_COPY128 and AV_ZERO128 macros
2024-08-26 10:26:59 +02:00
40dda881d6
avcodec/filter_units: Fix extradata and packets can have different bitstream format
...
Filter init can change extradata from avcc/hvcc to annexb format.
With different passthrough logic, packets can still in avcc/hvcc
format. Use same passthrough logic for init and filter.
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com >
2024-08-24 00:27:15 +08:00
523189c744
fftools/ffplay: handle flip in display matrix
...
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com >
2024-08-24 00:26:59 +08:00
30f090b4f8
avfilter: inherit input color range for videotoolbox filters
...
The color range should be set to match the input when creating
the VideoToolbox context. Otherwise, the new context will default
to limited range, creates inconsistencies with full range inputs.
Signed-off-by: Gnattu OC <gnattuoc@me.com >
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com >
2024-08-24 00:24:06 +08:00