]> git.sesse.net Git - ffmpeg/log
ffmpeg
3 years agoavutil/video_enc_params: Check for truncation before creating buffer
Andreas Rheinhardt [Sun, 14 Feb 2021 18:47:45 +0000 (19:47 +0100)]
avutil/video_enc_params: Check for truncation before creating buffer

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavutil/video_enc_params: Combine overflow checks
Andreas Rheinhardt [Sun, 14 Feb 2021 18:43:56 +0000 (19:43 +0100)]
avutil/video_enc_params: Combine overflow checks

This patch also fixes a -Wtautological-constant-out-of-range-compare
warning from Clang and a -Wtype-limits warning from GCC on systems
where size_t is 64bits and unsigned 32bits. The reason for this seems
to be that variable (whose value derives from sizeof() and can therefore
be known at compile-time) is used instead of using sizeof() directly in
the comparison.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoswscale/x86/yuv2yuvX: use the movsxdifnidn helper macro
James Almer [Thu, 18 Feb 2021 15:09:27 +0000 (12:09 -0300)]
swscale/x86/yuv2yuvX: use the movsxdifnidn helper macro

Simplifies code

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoswscale/x86/yuv2yuvX: use movq to load 8 bytes in all non-AVX2 functions
James Almer [Thu, 18 Feb 2021 15:09:11 +0000 (12:09 -0300)]
swscale/x86/yuv2yuvX: use movq to load 8 bytes in all non-AVX2 functions

mova expands to movq on non-XMM functions

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoswscale/x86/yuv2yuvX: use the SPLATW helper macro
James Almer [Thu, 18 Feb 2021 15:07:45 +0000 (12:07 -0300)]
swscale/x86/yuv2yuvX: use the SPLATW helper macro

Simplifies code

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoswscale/x86/swscale: fix mix of inline and external function definitions
James Almer [Thu, 18 Feb 2021 14:35:08 +0000 (11:35 -0300)]
swscale/x86/swscale: fix mix of inline and external function definitions

This includes removing pointless static function forward declarations.

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agolavc/aarch64: add HEVC sao_band NEON
Josh Dekker [Thu, 7 Jan 2021 11:55:44 +0000 (11:55 +0000)]
lavc/aarch64: add HEVC sao_band NEON

Only works for 8x8.

Signed-off-by: Josh Dekker <josh@itanimul.li>
3 years agolavc/aarch64: add HEVC idct_dc NEON
Josh Dekker [Mon, 1 Feb 2021 10:30:52 +0000 (10:30 +0000)]
lavc/aarch64: add HEVC idct_dc NEON

Signed-off-by: Josh Dekker <josh@itanimul.li>
3 years agolavc/aarch64: port HEVC add_residual NEON
Reimar Döffinger [Sun, 10 Jan 2021 10:27:00 +0000 (10:27 +0000)]
lavc/aarch64: port HEVC add_residual NEON

Speedup is fairly small, around 1.5%, but these are fairly simple.

Signed-off-by: Josh Dekker <josh@itanimul.li>
3 years agolavc/aarch64: port HEVC SIMD idct NEON
Reimar Döffinger [Sat, 16 Jan 2021 01:03:45 +0000 (02:03 +0100)]
lavc/aarch64: port HEVC SIMD idct NEON

Makes SIMD-optimized 8x8 and 16x16 idcts for 8 and 10 bit depth
available on aarch64.
For a UHD HDR (10 bit) sample video these were consuming the most time
and this optimization reduced overall decode time from 19.4s to 16.4s,
approximately 15% speedup.
Test sample was the first 300 frames of "LG 4K HDR Demo - New York.ts",
running on Apple M1.

Signed-off-by: Josh Dekker <josh@itanimul.li>
3 years agoavcodec: add initial exr image encoder
Paul B Mahol [Sun, 14 Feb 2021 22:11:59 +0000 (23:11 +0100)]
avcodec: add initial exr image encoder

3 years agodnn_backend_openvino.c: allow out_frame as NULL for analytic case
Ting Fu [Mon, 8 Feb 2021 02:44:58 +0000 (10:44 +0800)]
dnn_backend_openvino.c: allow out_frame as NULL for analytic case

3 years agodnn: add color conversion for analytic case
Guo, Yejun [Sun, 7 Feb 2021 07:03:43 +0000 (15:03 +0800)]
dnn: add color conversion for analytic case

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
3 years agodnn_interface.h: add enum DNNColorOrder
Guo, Yejun [Mon, 8 Feb 2021 01:53:39 +0000 (09:53 +0800)]
dnn_interface.h: add enum DNNColorOrder

the data type and order together decide the color format, we could
not use AVPixelFormat directly because not all the possible formats
are covered by it.

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
3 years agodnn: add function type for model
Guo, Yejun [Sun, 7 Feb 2021 06:35:22 +0000 (14:35 +0800)]
dnn: add function type for model

So the backend knows the usage of model is for frame processing,
detect, classify, etc. Each function type has different behavior
in backend when handling the input/output data of the model.

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
3 years agodnn: extract common functions used by different filters
Guo, Yejun [Tue, 26 Jan 2021 05:35:30 +0000 (13:35 +0800)]
dnn: extract common functions used by different filters

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
3 years agodnn_backend_openvino.c: fix multi-thread issue for async execution
Guo, Yejun [Mon, 8 Feb 2021 10:46:27 +0000 (18:46 +0800)]
dnn_backend_openvino.c: fix multi-thread issue for async execution

once we mark done for the task in function infer_completion_callback,
the task is possible to be release in function ff_dnn_get_async_result_ov
in another thread just after it, so we need to record request queue
first, instead of using task->ov_model->request_queue later.

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
3 years agodnn_backend_openvino.c: fix mismatch between ffmpeg(NHWC) and openvino(NCHW)
Guo, Yejun [Mon, 8 Feb 2021 01:22:23 +0000 (09:22 +0800)]
dnn_backend_openvino.c: fix mismatch between ffmpeg(NHWC) and openvino(NCHW)

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
3 years agoswscale/x86/swscale: fix compilation with old yasm
James Almer [Thu, 18 Feb 2021 00:05:41 +0000 (21:05 -0300)]
swscale/x86/swscale: fix compilation with old yasm

Where AVX2 may not be supported.

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agocheckasm/sw_scale: use av_free() instead of free()
James Almer [Wed, 17 Feb 2021 23:57:33 +0000 (20:57 -0300)]
checkasm/sw_scale: use av_free() instead of free()

Fixes crashes on Win64

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavfilter/vf_pseudocolor: Add missing braces
Mark Thompson [Tue, 2 Feb 2021 21:50:37 +0000 (21:50 +0000)]
avfilter/vf_pseudocolor: Add missing braces

The array inside a structure needs two levels of braces.

3 years agoswscale: move yuv2yuvX_sse3 to yasm, unrolls main loop
Alan Kelly [Thu, 14 Jan 2021 14:47:03 +0000 (15:47 +0100)]
swscale: move yuv2yuvX_sse3 to yasm, unrolls main loop

And other small optimizations for ~20% speedup.

3 years agox86/vf_gblur: fix reg name in UNIX64 prologue
James Almer [Wed, 17 Feb 2021 18:51:28 +0000 (15:51 -0300)]
x86/vf_gblur: fix reg name in UNIX64 prologue

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavfilter/vf_gblur: add missing arch check
James Almer [Wed, 17 Feb 2021 18:45:40 +0000 (15:45 -0300)]
avfilter/vf_gblur: add missing arch check

Removed by mistake in 2b4da1cb8c2984b37e5c912e103a1b8b734e7c1f where it
should have been replaced instead.

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agocheckasm/vf_gblur: add a test for postscale_slice
James Almer [Wed, 17 Feb 2021 15:05:12 +0000 (12:05 -0300)]
checkasm/vf_gblur: add a test for postscale_slice

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agocheckasm/vf_gblur: split off the horiz_slice test into its own function
James Almer [Wed, 17 Feb 2021 15:04:23 +0000 (12:04 -0300)]
checkasm/vf_gblur: split off the horiz_slice test into its own function

Will come in handy for the following commit.

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agox86/vf_gblur: fix postscale_slice prologue
James Almer [Wed, 17 Feb 2021 13:46:36 +0000 (10:46 -0300)]
x86/vf_gblur: fix postscale_slice prologue

x86_32 ABI does not pass float arguments directly on xmm regs, and the Win64
ABI uses only the first four regs for this purpose.

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agolavfi/drawtext: ignore final LF of textfile.
Nicolas George [Mon, 30 Nov 2020 18:28:36 +0000 (19:28 +0100)]
lavfi/drawtext: ignore final LF of textfile.

A standard text file ends with a final LF.
Without this change, it is interpreted as an empty final line,
and visible with the box option.
The current behavior can be achieved by actually having
an empty line at the end of the file.

Fix trac ticket #7948.

3 years agoavformat/ircamdec: use lrintf() for rounding
Paul B Mahol [Tue, 16 Feb 2021 22:35:11 +0000 (23:35 +0100)]
avformat/ircamdec: use lrintf() for rounding

3 years agolavc/aacdec_template: Fix 7.1 decoding with default strictness.
KM [Tue, 16 Feb 2021 22:19:19 +0000 (23:19 +0100)]
lavc/aacdec_template: Fix 7.1 decoding with default strictness.

Broken in 4d9b9c5e
Fixes ticket #9057.

3 years agoavformat/mxfenc: Discard audio until valid video has been received
Andreas Rheinhardt [Fri, 4 Dec 2020 23:39:28 +0000 (00:39 +0100)]
avformat/mxfenc: Discard audio until valid video has been received

Normally, video packets are muxed before audio packets for mxf (there is
a dedicated interleave function for this); furthermore the first (video)
packet triggers writing the actual header. Yet when the first video packet
fails the checks performed on it, it will be an audio packet that leads
to writing the header and codec_ul (a value set based upon
properties of the bitstream which necessitates actually inspecting
packets) may be wrong. Therefore this commit discards audio packets until
a valid video packet has been received.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agotests/fate-run.sh: Don't overlook errors from md5 tests
Andreas Rheinhardt [Fri, 4 Dec 2020 22:42:55 +0000 (23:42 +0100)]
tests/fate-run.sh: Don't overlook errors from md5 tests

The md5 test up until now ignored errors from ffmpeg (the cli) and just
md5'ed whatever ffmpeg has output; while testing scenarios in which
ffmpeg fails has its merits, errors should not be overlooked by default;
doing so also reduces the effectiveness of sanitizers as errors from
them are ignored. This has happened with a memleak in the AV1 decoder.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agofate/mxf: Fix d10-user-comments test
Andreas Rheinhardt [Fri, 4 Dec 2020 22:11:00 +0000 (23:11 +0100)]
fate/mxf: Fix d10-user-comments test

The mxf_d10 muxer is very picky regarding the input it accepts:
The only video accepted is MPEG-2 with absolutely constant bitrate,
i.e. all packets need to have exactly the same size; and only a few
bitrates are accepted.

The sample file used did not abide by this: Writing the first packet
(a video packet) errors out and afterwards an audio packet from the
muxing queue has been written. That's all besides metadata (which this
test is about). The FFmpeg cli returned an error, but said error has
been ignored by the md5 test.

This commit changes the test to actually send a compliant stream to the
muxer, so that it does not error out; furthermore, the test is changed
to explicitly check the metadata instead of it only being implicitly
included in the md5 checksum. The compliant stream is created by our
encoder at runtime.

Finally, the test now also covers writing user-specified
product/company/version identification.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/mxfenc: Fix typo
Andreas Rheinhardt [Mon, 15 Feb 2021 15:58:44 +0000 (16:58 +0100)]
avformat/mxfenc: Fix typo

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/mxfenc: Use user-specified version even when bitexact
Andreas Rheinhardt [Mon, 15 Feb 2021 15:54:59 +0000 (16:54 +0100)]
avformat/mxfenc: Use user-specified version even when bitexact

Doing so is still bitexact.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/mxfenc: Never set codec_ul UID to NULL
Andreas Rheinhardt [Fri, 28 Feb 2020 03:48:22 +0000 (04:48 +0100)]
avformat/mxfenc: Never set codec_ul UID to NULL

mxf distinguishes codec profiles by different UIDs and therefore needs
to check that the input is actually compatible with mxf (i.e. if there
is a defined UID for it). If not, then sometimes the UID would be set to
NULL and writing the (video) packet would fail. Yet the following audio
packet would trigger writing the header (which has been postponed because
the UID is not known at the start) and if the UID is NULL, this can lead
to segfaults. This commit therefore stops setting the UID to NULL if the
input is incompatible with mxf (it has initially been set to a generic
value in mxf_write_header()).

Fixes #7993.

Reviewed-by: Tomas Härdin <tjoppen@acc.umu.se>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavfilter/vif: Include avfilter.h
Andreas Rheinhardt [Tue, 16 Feb 2021 21:26:56 +0000 (22:26 +0100)]
avfilter/vif: Include avfilter.h

Fixes checkheaders.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/frame_thread_encoder: Use more natural types
Andreas Rheinhardt [Sun, 7 Feb 2021 19:35:09 +0000 (20:35 +0100)]
avcodec/frame_thread_encoder: Use more natural types

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/frame_thread_encoder: Reduce amount of code guarded by mutex
Andreas Rheinhardt [Sun, 7 Feb 2021 18:59:11 +0000 (19:59 +0100)]
avcodec/frame_thread_encoder: Reduce amount of code guarded by mutex

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/frame_thread_encoder: Avoid FIFO
Andreas Rheinhardt [Sun, 7 Feb 2021 14:08:13 +0000 (15:08 +0100)]
avcodec/frame_thread_encoder: Avoid FIFO

It can be replaced by a simple counter.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/frame_thread_encoder: Avoid allocations of AVFrames
Andreas Rheinhardt [Sun, 7 Feb 2021 13:30:28 +0000 (14:30 +0100)]
avcodec/frame_thread_encoder: Avoid allocations of AVFrames

Up until now, when using frame threaded encoding, an AVFrame would be
allocated for every frame to be encoded. These AVFrames would reach the
worker threads via a FIFO of tasks, a structure which contained the
AVFrame as well as an index into an array which gives the place where
the worker thread shall put the returned packet; in addition to that,
said structure also contained several unused fields.

This commit changes this: The AVFrames are now allocated during init in
the array that is up until now only used to return the packets. The
contents to be encoded are put into the AVFrame in the same array
element that is also used to return the packets.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/frame_thread_encoder: Avoid creating reference to frame
Andreas Rheinhardt [Sun, 7 Feb 2021 12:46:11 +0000 (13:46 +0100)]
avcodec/frame_thread_encoder: Avoid creating reference to frame

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/frame_thread_encoder: Avoid allocations of AVPackets, fix deadlock
Andreas Rheinhardt [Sun, 7 Feb 2021 12:36:52 +0000 (13:36 +0100)]
avcodec/frame_thread_encoder: Avoid allocations of AVPackets, fix deadlock

Up until now, when doing frame thread encoding, each worker thread
tried to allocate an AVPacket for every AVFrame to be encoded; said
packets would then be handed back to the main thread, where the content
of said packet is copied into the packet actually destined for output;
the temporary AVPacket is then freed.

Besides being wasteful this also has another problem: There is a risk of
deadlock, namely if no AVPacket can be allocated at all. The user
doesn't get an error at all in this case and the worker threads will
simply try to allocate a packet again and again. If the user has
supplied enough frames, the user's thread will block until a task has
been completed, which just doesn't happen if no packet can ever be
allocated.

This patch instead modifies the code to allocate the packets during
init; they are then reused again and again.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/frame_thread_encoder: Fix segfault on allocation error
Andreas Rheinhardt [Sun, 7 Feb 2021 09:58:25 +0000 (10:58 +0100)]
avcodec/frame_thread_encoder: Fix segfault on allocation error

Fixes a segfault from av_fifo_size(NULL) that happens in
ff_frame_thread_encoder_free if the fifo couldn't be allocted;
furthermore the mutexes and conditions that are destroyed in
ff_frame_thread_encoder_free are not even initialized at this point,
so don't call said function.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/frame_thread_encoder: Improve type safety
Andreas Rheinhardt [Sun, 7 Feb 2021 09:48:17 +0000 (10:48 +0100)]
avcodec/frame_thread_encoder: Improve type safety

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavfilter/x86/vf_gblur: add postscale SIMD
Paul B Mahol [Sat, 13 Feb 2021 11:09:47 +0000 (12:09 +0100)]
avfilter/x86/vf_gblur: add postscale SIMD

3 years agoavfilter/vf_gblur: factor out postscale function
Paul B Mahol [Sat, 13 Feb 2021 10:15:22 +0000 (11:15 +0100)]
avfilter/vf_gblur: factor out postscale function

3 years agotools/target_dec_fuzzer: Adjust threshold for wavpack
Michael Niedermayer [Wed, 20 Jan 2021 23:32:51 +0000 (00:32 +0100)]
tools/target_dec_fuzzer: Adjust threshold for wavpack

Fixes: Timeout (long -> 4sec)
Fixes: 29064/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WAVPACK_fuzzer-5104450901508096
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agotools/target_dec_fuzzer: Adjust threshold for MSA1
Michael Niedermayer [Wed, 20 Jan 2021 22:50:54 +0000 (23:50 +0100)]
tools/target_dec_fuzzer: Adjust threshold for  MSA1

Fixes: Timeout (too long to wait -> 1ms)
Fixes: 29048/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MSA1_fuzzer-5733703473037312
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agotools/target_dec_fuzzer: adjust threshold for cook
Michael Niedermayer [Sat, 23 Jan 2021 18:42:23 +0000 (19:42 +0100)]
tools/target_dec_fuzzer: adjust threshold for cook

Fixes: Timeout (long -> 3ms)
Fixes: 29134/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_COOK_fuzzer-5192822695264256
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agotools/target_dec_fuzzer: Adjust threshold for theora
Michael Niedermayer [Fri, 29 Jan 2021 23:46:26 +0000 (00:46 +0100)]
tools/target_dec_fuzzer: Adjust threshold for theora

Fixes: Timeout
Fixes: 29226/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_THEORA_fuzzer-6195092572471296
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agotools/target_dec_fuzzer: Update maxpixels_per_frame for low thresholds
Michael Niedermayer [Mon, 1 Feb 2021 20:08:57 +0000 (21:08 +0100)]
tools/target_dec_fuzzer: Update maxpixels_per_frame for low thresholds

Fixes: Timeout
Fixes: 29990/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MSS2_fuzzer-5469155073589248
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agotools/target_dec_fuzzer: count all video decoding failures in the new API
Michael Niedermayer [Tue, 2 Feb 2021 18:10:26 +0000 (19:10 +0100)]
tools/target_dec_fuzzer: count all video decoding failures in the new API

The next commit depends on this

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/rmdec: Check codec_length without overflow
Michael Niedermayer [Mon, 15 Feb 2021 19:52:17 +0000 (20:52 +0100)]
avformat/rmdec: Check codec_length without overflow

Fixes: signed integer overflow: 2147483647 + 64 cannot be represented in type 'int'
Fixes: 30333/clusterfuzz-testcase-minimized-ffmpeg_dem_RM_fuzzer-5175286983426048
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/mov: Check element count in mov_metadata_hmmt()
Michael Niedermayer [Mon, 15 Feb 2021 19:41:31 +0000 (20:41 +0100)]
avformat/mov: Check element count in mov_metadata_hmmt()

Fixes: Timeout
Fixes: 30325/clusterfuzz-testcase-minimized-ffmpeg_dem_MOV_fuzzer-6048395703746560
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/vp8: Move end check into MB loop in vp78_decode_mv_mb_modes()
Michael Niedermayer [Mon, 15 Feb 2021 16:13:34 +0000 (17:13 +0100)]
avcodec/vp8: Move end check into MB loop in vp78_decode_mv_mb_modes()

Fixes: Timeout (long -> 5sec)
Fixes: 30269/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VP7_fuzzer-5430325004075008
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavfilter/buffersrc: simplify av_buffersrc_add_frame_flags()
James Almer [Sun, 7 Feb 2021 14:29:58 +0000 (11:29 -0300)]
avfilter/buffersrc: simplify av_buffersrc_add_frame_flags()

Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavfilter: add vif filter
Ashish Singh [Sat, 29 Jul 2017 08:46:29 +0000 (14:16 +0530)]
avfilter: add vif filter

This is Visual Information Fidelity (VIF) filter and one of the component
filters of VMAF. It outputs the average VIF score over all frames.

Signed-off-by: Ashish Singh <ashk43712@gmail.com>
3 years agoavcodec/exr: export any unknown header string variable to metadata
Paul B Mahol [Tue, 16 Feb 2021 13:37:26 +0000 (14:37 +0100)]
avcodec/exr: export any unknown header string variable to metadata

And properly skip preview type in header.

3 years agoavcodec/exr: refactor GetByteContext usage
Paul B Mahol [Tue, 16 Feb 2021 12:50:53 +0000 (13:50 +0100)]
avcodec/exr: refactor GetByteContext usage

3 years agoavcodec/exr: correctly calculate display window
Paul B Mahol [Tue, 16 Feb 2021 12:42:36 +0000 (13:42 +0100)]
avcodec/exr: correctly calculate display window

3 years agoavcodec/exr: add multipart support
Paul B Mahol [Tue, 16 Feb 2021 01:52:42 +0000 (02:52 +0100)]
avcodec/exr: add multipart support

3 years agofate/matroska: Add test for remuxing file with spherical metadata
Andreas Rheinhardt [Fri, 1 May 2020 04:48:43 +0000 (06:48 +0200)]
fate/matroska: Add test for remuxing file with spherical metadata

Also, test modifying colorspace properties and the default_mode
passthrough which is used here to create a file that has no default
track at all.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agofate/matroska: Add test for zero-length Block
Andreas Rheinhardt [Sat, 25 Apr 2020 01:18:03 +0000 (03:18 +0200)]
fate/matroska: Add test for zero-length Block

It furthermore tests the demuxer's handling of chained SeekHeads,
level 1-elements after the Clusters and the muxer's capability of
writing huge TrackNumbers as well as expanding the Cues' length field
by one byte if necessary to fill the reserved space. It also tests
propagation of metadata.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/setts_bsf: add sample rate for expressions
Paul B Mahol [Mon, 15 Feb 2021 19:51:21 +0000 (20:51 +0100)]
avcodec/setts_bsf: add sample rate for expressions

3 years agoavcodec/exr: unbreak parsing sample aspect ratio
Paul B Mahol [Mon, 15 Feb 2021 16:37:25 +0000 (17:37 +0100)]
avcodec/exr: unbreak parsing sample aspect ratio

3 years agoavcodec/exr: read fps from metadata too
Paul B Mahol [Mon, 15 Feb 2021 16:26:13 +0000 (17:26 +0100)]
avcodec/exr: read fps from metadata too

3 years agoavformat/utils: Add av_assert1 to preclude NULL + len, len != 0
Andreas Rheinhardt [Sun, 14 Feb 2021 22:55:39 +0000 (23:55 +0100)]
avformat/utils: Add av_assert1 to preclude NULL + len, len != 0

Such a scenario is undefined behaviour and would also indicate a bug
in our code.

Suggested-by: James Almer <jamrial@gmail.com>
Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agolavf/img2dec: Autodetect pfm images.
Carl Eugen Hoyos [Sun, 14 Feb 2021 23:34:01 +0000 (00:34 +0100)]
lavf/img2dec: Autodetect pfm images.

3 years agolavfi/vflip: Support Bayer vertical flip.
Carl Eugen Hoyos [Sat, 5 Sep 2020 19:14:01 +0000 (21:14 +0200)]
lavfi/vflip: Support Bayer vertical flip.

Fixes ticket #8819.

3 years agolavc/pnm: Allow decoding gray float pfm images.
Carl Eugen Hoyos [Thu, 11 Feb 2021 22:37:06 +0000 (23:37 +0100)]
lavc/pnm: Allow decoding gray float pfm images.

3 years agoavformat/utils: Fix undefined NULL + 0
Andreas Rheinhardt [Sun, 14 Feb 2021 21:24:46 +0000 (22:24 +0100)]
avformat/utils: Fix undefined NULL + 0

This is undefined behaviour in C, so use data = len ? data + len : data
instead of data += len. GCC optimizes the branch away in this case;
Clang unfortunately doesn't.

Fixes ticket #8592.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavdevice/avdevice: Deprecate AVDevice Capabilities API
Andreas Rheinhardt [Sun, 24 Jan 2021 18:38:42 +0000 (19:38 +0100)]
avdevice/avdevice: Deprecate AVDevice Capabilities API

It has been added in 6db42a2b6b22e6f1928fafcf3faa67ed78201004,
yet since then none of the necessary create/free_device_capabilities
functions has been implemented, making this API completely useless.

Because of this one can already simplify
avdevice_capabilities_free/create and can already remove the function
pointers at the next major bump; given that the documentation explicitly
states that av_device_capabilities is not to be used by a user, it's
options can already be removed (save for the sentinel).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agotools/target_dec_fuzzer: Adjust threshold for VMNC
Michael Niedermayer [Tue, 2 Feb 2021 22:45:21 +0000 (23:45 +0100)]
tools/target_dec_fuzzer: Adjust threshold for VMNC

Fixes: Timeout
Fixes: 30055/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VMNC_fuzzer-4739482576355328
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/fmvc: avoid copying uninitialized data
Michael Niedermayer [Tue, 2 Feb 2021 21:29:25 +0000 (22:29 +0100)]
avcodec/fmvc: avoid copying uninitialized data

Fixes: Timeout
Fixes: 30049/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FMVC_fuzzer-5986909455253504
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/fits: Check gcount and pcount being non negative
Michael Niedermayer [Tue, 2 Feb 2021 18:28:15 +0000 (19:28 +0100)]
avcodec/fits: Check gcount and pcount being non negative

Fixes: signed integer overflow: 9223372036854775807 - -30069403896 cannot be represented in type 'long'
Fixes: 30046/clusterfuzz-testcase-minimized-ffmpeg_dem_FITS_fuzzer-5807144773484544
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agotools/target_dec_fuzzer: Adjust the threshold of vc1image
Michael Niedermayer [Tue, 2 Feb 2021 18:11:43 +0000 (19:11 +0100)]
tools/target_dec_fuzzer: Adjust the threshold of vc1image

Fixes: Timeout
Fixes: 30025/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VC1IMAGE_fuzzer-5965511357759488
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/nutdec: Check timebase count against main header length
Michael Niedermayer [Fri, 18 Dec 2020 23:00:40 +0000 (00:00 +0100)]
avformat/nutdec: Check timebase count against main header length

Fixes: Timeout (long -> 3ms)
Fixes: 28514/clusterfuzz-testcase-minimized-ffmpeg_dem_NUT_fuzzer-6078669009321984
Fixes: 30095/clusterfuzz-testcase-minimized-ffmpeg_dem_NUT_fuzzer-5074433016463360
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/mov: sanity check STSD entries
Michael Niedermayer [Sat, 6 Feb 2021 20:54:31 +0000 (21:54 +0100)]
avformat/mov: sanity check STSD entries

The choosen value is arbitrary. I am not sure if this is a good idea
but i dont immedeately see an alternative better way, it seems either
an arbitrary limit or OOM

Fixes: OOM
Fixes: 27492/clusterfuzz-testcase-minimized-ffmpeg_dem_MOV_fuzzer-6194970578649088
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/apedec: export bits_per_raw_sample
Paul B Mahol [Sun, 14 Feb 2021 17:54:59 +0000 (18:54 +0100)]
avcodec/apedec: export bits_per_raw_sample

Fixes #4717

3 years agoavcodec/pngenc: remove monowhite from apng formats
Paul B Mahol [Sun, 14 Feb 2021 16:20:03 +0000 (17:20 +0100)]
avcodec/pngenc: remove monowhite from apng formats

Monowhite pixel format is not supported, and it does not make sense
to add support for it.

Fixes #7989

3 years agoavcodec/mediacodecdec: do not abort when H264/HEVC extradata extraction fails
sfan5 [Fri, 12 Feb 2021 22:47:46 +0000 (23:47 +0100)]
avcodec/mediacodecdec: do not abort when H264/HEVC extradata extraction fails

Although rare, extradata can be present but empty and extraction will fail.
However Android also supports passing codec-specific data inline and
will likely play such a stream anyway. So there's no reason to abort
initialization before we know for sure.

3 years agoavformat/mux: return a pointer to the packet in ff_interleaved_peek()
James Almer [Mon, 8 Feb 2021 22:04:05 +0000 (19:04 -0300)]
avformat/mux: return a pointer to the packet in ff_interleaved_peek()

And make it const, so the caller doesn't attempt to change it.
ff_get_muxer_ts_offset() should be used to get the muxer timestamp offset.

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavformat/mux: add ff_get_muxer_ts_offset()
James Almer [Mon, 8 Feb 2021 21:30:47 +0000 (18:30 -0300)]
avformat/mux: add ff_get_muxer_ts_offset()

Will be useful in the next patch

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavformat/utils: force lowres to 0 in avformat_find_stream_info()
James Almer [Sat, 6 Feb 2021 16:32:24 +0000 (13:32 -0300)]
avformat/utils: force lowres to 0 in avformat_find_stream_info()

Instead of applying it and then restoring the original codecpar dimensions.

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavfilter/vf_convolution: add 16-column operation for filter_column()
Paul B Mahol [Tue, 3 Dec 2019 07:52:05 +0000 (15:52 +0800)]
avfilter/vf_convolution: add 16-column operation for filter_column()

Based on patch by Xu Jun <xujunzz@sjtu.edu.cn>

3 years agoavcodec/pngdec: fix possible race condition with APNG decoding
Paul B Mahol [Thu, 11 Feb 2021 21:56:41 +0000 (22:56 +0100)]
avcodec/pngdec: fix possible race condition with APNG decoding

Fixes #9017

3 years agoavfilter/vf_datascope: pixscope: add commands support
Paul B Mahol [Sat, 13 Feb 2021 11:32:59 +0000 (12:32 +0100)]
avfilter/vf_datascope: pixscope: add commands support

3 years agoavformat/electronicarts: Clear partial_packet on error
Michael Niedermayer [Thu, 11 Feb 2021 21:40:21 +0000 (22:40 +0100)]
avformat/electronicarts: Clear partial_packet on error

Fixes: Infinite loop
Fixes: 30165/clusterfuzz-testcase-minimized-ffmpeg_dem_EA_fuzzer-6224642371092480
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/r3d: Check samples before computing duration
Michael Niedermayer [Wed, 10 Feb 2021 22:21:53 +0000 (23:21 +0100)]
avformat/r3d: Check samples before computing duration

Fixes: signed integer overflow: -4611686024827895807 + -4611686016279904256 cannot be represented in type 'long'
Fixes: 30161/clusterfuzz-testcase-minimized-ffmpeg_dem_R3D_fuzzer-5694406713802752
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/pnm_parser: Check av_image_get_buffer_size() for failure
Michael Niedermayer [Wed, 10 Feb 2021 21:28:20 +0000 (22:28 +0100)]
avcodec/pnm_parser: Check av_image_get_buffer_size() for failure

Fixes: out of array access
Fixes: 30135/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_PBM_fuzzer-4997145650397184
Fixes: 30208/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_PGMYUV_fuzzer-5605891665690624.fuzz
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavfilter/vf_psnr: remove precision limits for metadata values
Paul B Mahol [Fri, 12 Feb 2021 22:16:50 +0000 (23:16 +0100)]
avfilter/vf_psnr: remove precision limits for metadata values

3 years agoavfilter/vf_ssim: remove precision limits for metadata values
Paul B Mahol [Fri, 12 Feb 2021 22:15:08 +0000 (23:15 +0100)]
avfilter/vf_ssim: remove precision limits for metadata values

3 years agoavfilter/af_amix: rename sum option to normalize
Paul B Mahol [Fri, 12 Feb 2021 21:58:13 +0000 (22:58 +0100)]
avfilter/af_amix: rename sum option to normalize

It makes more sense to still use provided weights.

3 years agoavfilter/vf_ssim: add timeline support
Paul B Mahol [Fri, 12 Feb 2021 20:19:27 +0000 (21:19 +0100)]
avfilter/vf_ssim: add timeline support

3 years agoavfilter/vf_psnr: add timeline support
Paul B Mahol [Fri, 12 Feb 2021 20:18:23 +0000 (21:18 +0100)]
avfilter/vf_psnr: add timeline support

3 years agoavfilter/vf_gblur: add float format support
Paul B Mahol [Fri, 12 Feb 2021 20:07:29 +0000 (21:07 +0100)]
avfilter/vf_gblur: add float format support

3 years agoavcodec/dpx: add support for other single component 8bit files
Paul B Mahol [Thu, 11 Feb 2021 17:09:35 +0000 (18:09 +0100)]
avcodec/dpx: add support for other single component 8bit files

3 years agoavcodec/dpx: add float support for single components and rgb(a)
Paul B Mahol [Thu, 11 Feb 2021 17:07:30 +0000 (18:07 +0100)]
avcodec/dpx: add float support for single components and rgb(a)

3 years agoavcodec: add setts bitstream filter
Paul B Mahol [Tue, 9 Feb 2021 12:26:16 +0000 (13:26 +0100)]
avcodec: add setts bitstream filter