ffmpeg.git
4 months agoavfilter/af_join: cosmetics
Paul B Mahol [Mon, 30 Sep 2019 14:52:52 +0000 (16:52 +0200)]
avfilter/af_join: cosmetics

4 months agoavfilter/af_join: use av_asprintf()
Paul B Mahol [Mon, 30 Sep 2019 14:45:31 +0000 (16:45 +0200)]
avfilter/af_join: use av_asprintf()

4 months agoavfilter/split: use av_asprintf()
Paul B Mahol [Mon, 30 Sep 2019 14:39:39 +0000 (16:39 +0200)]
avfilter/split: use av_asprintf()

4 months agoavfilter/trim: drop all audio frames instead of asserting
Paul B Mahol [Mon, 30 Sep 2019 10:57:26 +0000 (12:57 +0200)]
avfilter/trim: drop all audio frames instead of asserting

4 months agoavfilter/f_metadata: do not memleak expr
Paul B Mahol [Mon, 30 Sep 2019 10:24:06 +0000 (12:24 +0200)]
avfilter/f_metadata: do not memleak expr

4 months agoavfilter/f_metadata: add ends_with() function for comparing ends of strings
Paul B Mahol [Mon, 30 Sep 2019 10:13:46 +0000 (12:13 +0200)]
avfilter/f_metadata: add ends_with() function for comparing ends of strings

4 months agolavf/utils: support duration estimate method dump
Jun Zhao [Sun, 29 Sep 2019 03:58:43 +0000 (11:58 +0800)]
lavf/utils: support duration estimate method dump

add new function duration_estimate_name to dump duration estimate
method, it's will help to debug some duration issue.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
4 months agolavf/utils: Cosmetics: fix indentation for estimate_timings
Jun Zhao [Sat, 28 Sep 2019 03:01:54 +0000 (11:01 +0800)]
lavf/utils: Cosmetics: fix indentation for estimate_timings

fix indentation for estimate_timings when dump start_time/duartion.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
4 months agolavf/utils: correct the duration estimation method for nut demuxer
Jun Zhao [Sat, 28 Sep 2019 02:45:31 +0000 (10:45 +0800)]
lavf/utils: correct the duration estimation method for nut demuxer

in fact, nut demuxer use the PTS for duration estimation.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
4 months agolavf/nutdec: add logging context to log
Jun Zhao [Sat, 28 Sep 2019 02:21:11 +0000 (10:21 +0800)]
lavf/nutdec: add logging context to log

Add logging context to log, it's will help debuging.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
4 months agolavf/utils: change the log level to warning if can't get duration
Jun Zhao [Thu, 26 Sep 2019 05:16:24 +0000 (13:16 +0800)]
lavf/utils: change the log level to warning if can't get duration

change the log level to warning if can't get duration, it's will help
to debug some duration issue

Signed-off-by: vacingfang <vacingfang@tencent.com>
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
4 months agotools/target_dec_fuzzer: Adjust VP7 threshold
Michael Niedermayer [Sat, 28 Sep 2019 23:53:43 +0000 (01:53 +0200)]
tools/target_dec_fuzzer: Adjust VP7 threshold

Fixes: Timeout (110sec -> 10sec)
Fixes: 17705/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VP7_fuzzer-5765834135306240

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>
4 months agoavcodec/qtrleenc: fix undefined behaviour
Paul B Mahol [Wed, 25 Sep 2019 15:18:32 +0000 (17:18 +0200)]
avcodec/qtrleenc: fix undefined behaviour

Fixes #7991.

4 months agodoc/examples/muxing: fix underflow in duration of encoded streams
Paul B Mahol [Fri, 27 Sep 2019 09:41:38 +0000 (11:41 +0200)]
doc/examples/muxing: fix underflow in duration of encoded streams

Now they are exactly 10 seconds long.

Fixes #5684.

4 months agoavcodec/cbs_av1: Make overread check more robust
Andreas Rheinhardt [Wed, 18 Sep 2019 03:26:01 +0000 (05:26 +0200)]
avcodec/cbs_av1: Make overread check more robust

When performing a comparison of a signed int and an unsigned int, the
signed int is first converted to an unsigned int, so that negative
values are being treated as big, positive values. This can become a
problem in an overread check, namely when an overread already happened.
So change the type of the variable containing the amount of bits that
need to be left to signed.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec/cbs_h2645: Fix potential out-of-bounds array access
Andreas Rheinhardt [Wed, 18 Sep 2019 03:25:58 +0000 (05:25 +0200)]
avcodec/cbs_h2645: Fix potential out-of-bounds array access

The maximum allowed index for an array access is FF_ARRAY_ELEMS - 1; yet
the current code allowed FF_ARRAY_ELEMS. This wasn't dangerous in practice,
as parameter sets with invalid ids were already filtered out during
reading.

Found via PVS-Studio (see ticket #8156).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec/fitsdec: fix use of uninitialised values
James Almer [Sun, 29 Sep 2019 02:11:06 +0000 (23:11 -0300)]
avcodec/fitsdec: fix use of uninitialised values

header.data_max and header.data_min are not necessarely set on all decoding scenarios.

Fixes a Valgrind reported regression since cfa193779103c97bbfc28273a0ab12c114b6786d.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavformat/utils: Remove unnecessary initializations
Andreas Rheinhardt [Fri, 20 Sep 2019 20:39:16 +0000 (22:39 +0200)]
avformat/utils: Remove unnecessary initializations

Up until now, read_frame_internal always initialized the packet it
received. But since the recent changes to ff_read_packet, this is no
longer needed: If the parsing queue is initially empty upon entering
read_frame_internal, the packet will now either contain content upon
success or be blank upon failure of ff_read_packet. If the parsing
queue is initially not empty, the packet will be overwritten with the
oldest one from the parsing queue.

Similarly, it is unnecessary to initialize ret in read_frame_internal.

In parse_packet, it is easily possible to only initialize the packet
used as temporary storage for the output if said packet is used at all;
furthermore, this packet doesn't need to be zero-initialized, because
av_init_packet will initialize every field except size and data and
those fields will be set by av_parser_parse2.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/utils: Improve parsing packets
Andreas Rheinhardt [Fri, 20 Sep 2019 20:39:15 +0000 (22:39 +0200)]
avformat/utils: Improve parsing packets

Up until now, parse_packet() used a stack packet in case the stream is
flushed. But using such a packet is unnecessary as there is an AVPacket
readily available, it just needs to be used. Whether flushing is intended
or not will now be signalled by an explicit parameter rather than by
whether the packet parameter is NULL. This removes a few checks in
parse_packet(), gets rid of the initialization of the stack packet and
also reduces usage of sizeof(AVPacket) in libavformat.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/utils: Avoid copying packets unnecessarily
Andreas Rheinhardt [Fri, 20 Sep 2019 20:39:14 +0000 (22:39 +0200)]
avformat/utils: Avoid copying packets unnecessarily

Up until now, read_frame_internal in avformat/utils.c uses a spare
packet on the stack that serves no real purpose: At no point in this
function is there a need for another packet besides the packet destined
for output:
1. If the packet doesn't need a parser, but is output as is, the content
of the spare packet (that at this point contains a freshly read packet)
is simply copied into the output packet (via simple assignment, not
av_packet_move_ref, thereby confusing ownership).
2. If the packet needs parsing, the spare packet will be reset after
parsing and any packets resulting from the packet read will be put into
a packet list; the output packet is not used here at all.
3. If the stream should be discarded, the spare packet will be
unreferenced; the output packet is not used here at all either.

Therefore the spare packet and the copies can be removed in principle.
In practice, one more thing needs to be taken care of: If ff_read_packet
failed, the output packet was not affected, now it is. But given that
ff_read_packet returns a blank (as if reset via av_packet_unref) packet
on failure, there is no problem from this side either.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/utils: Don't create unnecessary references
Andreas Rheinhardt [Sat, 28 Sep 2019 02:42:24 +0000 (04:42 +0200)]
avformat/utils: Don't create unnecessary references

When AVFMT_FLAG_GENPTS is set, av_read_frame would put a reference to a
packet in the packet list (via av_packet_ref) and then immediately
thereafter unreference the original packet. This has been changed to
move the reference instead.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/utils: Fix memleaks II
Andreas Rheinhardt [Fri, 20 Sep 2019 20:39:12 +0000 (22:39 +0200)]
avformat/utils: Fix memleaks II

Up until now, avformat_find_stream_info had a potential for memleaks:
When everything was fine, it read packets and (depending upon whether
AVFMT_FLAG_NOBUFFER was set) put them in a packet list or unreferenced
them when they were no longer needed. But upon failure, said packets
would leak if they were not already on the packet list. This patch fixes
this.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavformat/utils: Don't initialize in loops
Andreas Rheinhardt [Fri, 20 Sep 2019 20:39:11 +0000 (22:39 +0200)]
avformat/utils: Don't initialize in loops

Since the recent changes to ff_packet_list_put, the source packet will
be automatically reset when the reference is moved to the packet list,
so that it is unnecessary to reinitialize the packet in the loops in
parse_packet and ff_read_packet; initializing once at the beginning is
enough.

This also fixes a potential, but currently unexisting problem: If the
raw packet buffer was initially not empty and probe_codec() failed,
then the packet returned would not be initialized. But given that
probe_codec() currently can't fail (always returns 0) this was not an
acute danger.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agodoc/filters: add more advanced silenceremove example
Paul B Mahol [Sat, 28 Sep 2019 21:04:07 +0000 (23:04 +0200)]
doc/filters: add more advanced silenceremove example

4 months agoavfilter/fifo: use the name 's' for the pointer to the private context
Paul B Mahol [Sat, 28 Sep 2019 20:06:50 +0000 (22:06 +0200)]
avfilter/fifo: use the name 's' for the pointer to the private context

This is shorter and consistent across filters.

4 months agoavfilter/fifo: cosmetics
Paul B Mahol [Sat, 28 Sep 2019 19:57:52 +0000 (21:57 +0200)]
avfilter/fifo: cosmetics

4 months agoavfilter/vf_framerate: remove duplicate code with macro-based function
Limin Wang [Tue, 24 Sep 2019 10:18:09 +0000 (18:18 +0800)]
avfilter/vf_framerate: remove duplicate code with macro-based function

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
4 months agoavfilter/vf_framerate: refine the filter_slice code for better readiablity
Limin Wang [Tue, 24 Sep 2019 10:18:08 +0000 (18:18 +0800)]
avfilter/vf_framerate: refine the filter_slice code for better readiablity

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
4 months agoavfilter/vf_framerate: limit the scene level max range
Limin Wang [Tue, 24 Sep 2019 10:18:07 +0000 (18:18 +0800)]
avfilter/vf_framerate: limit the scene level max range

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
4 months agoavcodec/motionpixels: Mark 2 functions as always_inline
Michael Niedermayer [Sun, 11 Aug 2019 20:28:09 +0000 (22:28 +0200)]
avcodec/motionpixels: Mark 2 functions as always_inline

Fixes: Timeout (30sec -> 25sec)
Fixes: 17050/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MOTIONPIXELS_fuzzer-5719149803732992

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/ituh263dec: Make the condition for the studio slice start code match between...
Michael Niedermayer [Sat, 14 Sep 2019 16:31:40 +0000 (18:31 +0200)]
avcodec/ituh263dec: Make the condition for the studio slice start code match between ff_h263_resync() and ff_mpeg4_decode_studio_slice_header()

If they mismatch an infinite loop can occur
Fixes: Timeout (infinite loop)
Fixes: 17043/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MPEG4_fuzzer-5695051748868096

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/ralf: Fix integer overflow in decode_channel()
Michael Niedermayer [Sat, 14 Sep 2019 12:26:49 +0000 (14:26 +0200)]
avcodec/ralf: Fix integer overflow in decode_channel()

Fixes: signed integer overflow: -1094995519 * 64 cannot be represented in type 'int'
Fixes: 17030/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_RALF_fuzzer-5640695838146560

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agovcodec/vc1: compute rangex/y only for P/B frames
Michael Niedermayer [Tue, 10 Sep 2019 18:20:31 +0000 (20:20 +0200)]
vcodec/vc1: compute rangex/y only for P/B frames

Fixes: left shift of 1073741824 by 1 places cannot be represented in type 'int'
Fixes: 16976/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VC1_fuzzer-4847262047404032

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/vc1_pred: Fix invalid shifts in scaleforopp()
Michael Niedermayer [Tue, 10 Sep 2019 16:57:25 +0000 (18:57 +0200)]
avcodec/vc1_pred: Fix invalid shifts in scaleforopp()

Fixes: left shift of negative value -2
Fixes: 16964/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VC1IMAGE_fuzzer-5757853565976576

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/vc1_block: Fix invalid shift with rangeredfrm
Michael Niedermayer [Tue, 10 Sep 2019 15:39:45 +0000 (17:39 +0200)]
avcodec/vc1_block: Fix invalid shift with rangeredfrm

Fixes: left shift of negative value -7
Fixes: 16959/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WMV3_fuzzer-5200360825683968

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/vc1: Check for excessive resolution
Michael Niedermayer [Thu, 8 Aug 2019 17:30:50 +0000 (19:30 +0200)]
avcodec/vc1: Check for excessive resolution

Fixes: overflow in aspect ratio calculation
Fixes: signed integer overflow: 393215 * 14594 cannot be represented in type 'int'
Fixes: 15728/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WMV3IMAGE_fuzzer-5661588893204480

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/vc1: check REFDIST
Michael Niedermayer [Sat, 31 Aug 2019 20:00:35 +0000 (22:00 +0200)]
avcodec/vc1: check REFDIST

"9.1.1.43 P Reference Distance (REFDIST)"
"The value of REFDIST shall be less than, or equal to, 16."

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/apedec: Allocate decoded_buffer after successful ff_get_buffer()
Michael Niedermayer [Mon, 2 Sep 2019 22:02:53 +0000 (00:02 +0200)]
avcodec/apedec: Allocate decoded_buffer after successful ff_get_buffer()

We need to reset samples in this case to avoid being stuck with incorrect
samples value.

Fixes: OOM
Fixes: Timeout
Fixes: 16627/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_APE_fuzzer-5638059583864832
Fixes: 17089/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_APE_fuzzer-5672188463546368

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/apedec: Fix several integer overflows in predictor_update_filter() and do_app...
Michael Niedermayer [Mon, 2 Sep 2019 20:59:55 +0000 (22:59 +0200)]
avcodec/apedec: Fix several integer overflows in predictor_update_filter() and do_apply_filter()

Fixes: negation of -2147483648 cannot be represented in type 'int'; cast to an unsigned type to negate this value to itself
Fixes: signed integer overflow: -14527961 - 2147483425 cannot be represented in type 'int'
Fixes: 16380/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_APE_fuzzer-5645957131141120
Fixes: 16968/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_APE_fuzzer-5716169901735936
Fixes: 17074/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_APE_fuzzer-5198710497083392

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/hevc_cabac: Tighten the limit on k in ff_hevc_cu_qp_delta_abs()
Michael Niedermayer [Mon, 9 Sep 2019 21:23:20 +0000 (23:23 +0200)]
avcodec/hevc_cabac: Tighten the limit on k in ff_hevc_cu_qp_delta_abs()

Values larger would fail subsequent tests.

Fixes: signed integer overflow: 5 + 2147483646 cannot be represented in type 'int'
Fixes: 16966/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_HEVC_fuzzer-5695709549953024

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavfilter/vf_xbr: Fix left shift of negative number
Andreas Rheinhardt [Sat, 28 Sep 2019 02:25:56 +0000 (04:25 +0200)]
avfilter/vf_xbr: Fix left shift of negative number

Affected every usage of vf_xbr, e.g. the FATE-tests filter-2xbr,
filter-3xbr, filter-4xbr.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavfilter/vf_hqx: Fix undefined left shifts of negative numbers
Andreas Rheinhardt [Sat, 28 Sep 2019 02:25:57 +0000 (04:25 +0200)]
avfilter/vf_hqx: Fix undefined left shifts of negative numbers

Affected every usage of this filter; in particular, it affected the
FATE-tests filter-2xbr, filter-3xbr and filter-4xbr.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/jpeg2000dwt: Fix undefined shifts of negative numbers
Andreas Rheinhardt [Sat, 28 Sep 2019 02:26:10 +0000 (04:26 +0200)]
avcodec/jpeg2000dwt: Fix undefined shifts of negative numbers

Affected the vsynth*-jpeg2000 and the vsynth*-jpeg2000-97 FATE tests
(where * ranges over { 1, 2, 3, _lena }) as well as ticket #7983.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/ituh263dec: Fix undefined left shift of negative number
Andreas Rheinhardt [Sat, 28 Sep 2019 02:26:07 +0000 (04:26 +0200)]
avcodec/ituh263dec: Fix undefined left shift of negative number

Fixes ticket #8160.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/dnxhdenc: Fix undefined left shifts of negative numbers
Andreas Rheinhardt [Sat, 28 Sep 2019 02:26:06 +0000 (04:26 +0200)]
avcodec/dnxhdenc: Fix undefined left shifts of negative numbers

Affected 61 FATE-tests: 60 vsynth tests and lavf-mxf_opatom.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoswscale/utils: Fix invalid left shifts of negative numbers
Andreas Rheinhardt [Sat, 28 Sep 2019 02:26:02 +0000 (04:26 +0200)]
swscale/utils: Fix invalid left shifts of negative numbers

Affected the FATE-tests vsynth_lena-dv-411, vsynth1-dv-411,
vsynth2-dv-411 and hevc-paramchange-yuv420p.yuv420p10.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/ffv1enc: Fix out-of-bounds-array access
Andreas Rheinhardt [Sat, 28 Sep 2019 02:26:01 +0000 (04:26 +0200)]
avcodec/ffv1enc: Fix out-of-bounds-array access

libavcodec/ffv1enc.c accessed an array of uint8_t [32] via array[0][j]
in order to loop over all the uint8_t in this array of arrays. Of course
this implied an out-of-bounds access for array[0] and UBSan complained
about this. So replace this with nested loops; furthermore, factor this
out into a function of its own to easily break out of the nested loops.

This affected the FATE-tests vsynth1-ffv1, vsynth1-ffv1-v3-yuv420p,
vsynth1-ffv1-v3-yuv422p10, vsynth1-ffv1-v3-yuv444p16,
vsynth1-ffv1-v3-bgr0, vsynth1-ffv1-ffv1-v3-rgb48 as well as the
corresponding vsynth2-*, vsynth3-* and the vsynth_lena-* tests.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoswscale/x86/swscale: Fix undefined left shifts of negative numbers
Andreas Rheinhardt [Sat, 28 Sep 2019 02:25:58 +0000 (04:25 +0200)]
swscale/x86/swscale: Fix undefined left shifts of negative numbers

This affected many FATE-tests: The number of failing tests went down
from 663 to 344. (Both numbers exclude tests that failed because of
unaligned accesses in code that is inside #if HAVE_FAST_UNALIGNED.)

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoffmpeg_opt: remove errant space
Lou Logan [Fri, 27 Sep 2019 23:17:15 +0000 (15:17 -0800)]
ffmpeg_opt: remove errant space

Signed-off-by: Lou Logan <lou@lrcd.com>
4 months agodoc/ffmpeg: -timelimit is in user time
Lou Logan [Thu, 26 Sep 2019 18:18:57 +0000 (10:18 -0800)]
doc/ffmpeg: -timelimit is in user time

Signed-off-by: Lou Logan <lou@lrcd.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/nvenc: make use of new GetLastErrorString function
Timo Rothenpieler [Fri, 27 Sep 2019 17:09:11 +0000 (19:09 +0200)]
avcodec/nvenc: make use of new GetLastErrorString function

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
4 months agoavcodec/nvenc: pass CUstream to nvenc when available
Timo Rothenpieler [Fri, 27 Sep 2019 16:30:10 +0000 (18:30 +0200)]
avcodec/nvenc: pass CUstream to nvenc when available

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
4 months agoavcodec/nvenc: add multiple reference frames support
Roman Arzumanyan [Fri, 27 Sep 2019 15:56:11 +0000 (17:56 +0200)]
avcodec/nvenc: add multiple reference frames support

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
4 months agoavcodec/nvenc: switch to dedicated dpb_size option
Timo Rothenpieler [Fri, 27 Sep 2019 15:55:23 +0000 (17:55 +0200)]
avcodec/nvenc: switch to dedicated dpb_size option

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
4 months agolibavformat/rtsp: return error if rtsp_hd_out is null instead of crash
Ross Nicholson [Thu, 19 Sep 2019 15:12:33 +0000 (16:12 +0100)]
libavformat/rtsp: return error if rtsp_hd_out is null instead of crash

Signed-off-by: Aman Gupta <aman@tmm1.net>
4 months agolavu/qsv: remove redundant version query
Zhong Li [Thu, 19 Sep 2019 20:45:25 +0000 (04:45 +0800)]
lavu/qsv: remove redundant version query

Signed-off-by: Zhong Li <zhong.li@intel.com>
4 months agolavc/mpeg4audio: add chan_config check to avoid indeterminate channels
Jun Zhao [Sat, 21 Sep 2019 11:29:47 +0000 (19:29 +0800)]
lavc/mpeg4audio: add chan_config check to avoid indeterminate channels

add chan_config check to avoid indeterminate channels.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavcodec/mpeg4audio: fix doxy for ff_mpeg4audio_get_config_gb()
James Almer [Fri, 27 Sep 2019 13:43:36 +0000 (10:43 -0300)]
avcodec/mpeg4audio: fix doxy for ff_mpeg4audio_get_config_gb()

Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavformat: use avpriv_mpeg4audio_get_config2()
James Almer [Sat, 21 Sep 2019 23:06:48 +0000 (20:06 -0300)]
avformat: use avpriv_mpeg4audio_get_config2()

Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavcodec: use avpriv_mpeg4audio_get_config2()
James Almer [Sat, 21 Sep 2019 23:04:33 +0000 (20:04 -0300)]
avcodec: use avpriv_mpeg4audio_get_config2()

Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavcodec/mpeg4audio: add avpriv_mpeg4audio_get_config2()
James Almer [Sat, 21 Sep 2019 22:57:11 +0000 (19:57 -0300)]
avcodec/mpeg4audio: add avpriv_mpeg4audio_get_config2()

Identical to avpriv_mpeg4audio_get_config() except taking a size argument in
bytes, and featuring a new logging context paremeter.

Schedule avpriv_mpeg4audio_get_config() for removal as soon as major is bumped
as well.

Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavformat/dhav: fix demuxer since recent breakage
Paul B Mahol [Fri, 27 Sep 2019 12:25:18 +0000 (14:25 +0200)]
avformat/dhav: fix demuxer since recent breakage

4 months agoavformat/g729dec: set packet duration and correctly set timebase info
Paul B Mahol [Fri, 27 Sep 2019 10:38:23 +0000 (12:38 +0200)]
avformat/g729dec: set packet duration and correctly set timebase info

Fixes #6704.

4 months agoavformat/nut: add pcm_s64 support
Paul B Mahol [Fri, 27 Sep 2019 10:12:42 +0000 (12:12 +0200)]
avformat/nut: add pcm_s64 support

4 months agoswscale/swscale: cosmetics
Limin Wang [Thu, 26 Sep 2019 15:44:59 +0000 (23:44 +0800)]
swscale/swscale: cosmetics

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavfilter/vf_scale: cosmetics
Limin Wang [Thu, 26 Sep 2019 15:36:54 +0000 (23:36 +0800)]
avfilter/vf_scale: cosmetics

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/4xm: Check index in decode_i_block() also in the path where its not used.
Michael Niedermayer [Tue, 17 Sep 2019 17:53:45 +0000 (19:53 +0200)]
avcodec/4xm: Check index in decode_i_block() also in the path where its not used.

Fixes: Infinite loop
Fixes: signed integer overflow: 2147483644 + 16 cannot be represented in type 'int'
Fixes: 16169/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FOURXM_fuzzer-5662570416963584
Fixes: 16782/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FOURXM_fuzzer-5743163859271680
Fixes: 17641/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FOURXM_fuzzer-5711603562971136

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>
4 months agoavcodec/loco: Check for end of input in the first line
Michael Niedermayer [Wed, 25 Sep 2019 19:48:26 +0000 (21:48 +0200)]
avcodec/loco: Check for end of input in the first line

Fixes: Timeout (85sec -> 0.1sec)
Fixes: 17634/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_LOCO_fuzzer-5666410809786368

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>
4 months agoavcodec/atrac3: Check block_align
Michael Niedermayer [Wed, 25 Sep 2019 18:51:22 +0000 (20:51 +0200)]
avcodec/atrac3: Check block_align

Fixes: Infinite loop
Fixes: 17620/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_ATRAC3_fuzzer-5086123012915200

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>
4 months agotools/target_dec_fuzzer: Print samples decoded like pixels
Michael Niedermayer [Wed, 25 Sep 2019 18:41:42 +0000 (20:41 +0200)]
tools/target_dec_fuzzer: Print samples decoded like pixels

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agotools/target_dec_fuzzer: Check number of all samples decoded too, like max pixels
Michael Niedermayer [Wed, 25 Sep 2019 18:40:55 +0000 (20:40 +0200)]
tools/target_dec_fuzzer: Check number of all samples decoded too, like max pixels

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/alsdec: Avoid dereferencing context pointer in inner interleave loop
Michael Niedermayer [Wed, 25 Sep 2019 18:31:50 +0000 (20:31 +0200)]
avcodec/alsdec: Avoid dereferencing context pointer in inner interleave loop

This makes the decoder faster

Improves/Fixes: Timeout (22sec -> 20sec)
Testcase: 17619/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_ALS_fuzzer-5078510820917248

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>
4 months agoavcodec/hcom: Check that there are dictionary entries
Michael Niedermayer [Wed, 25 Sep 2019 16:38:03 +0000 (18:38 +0200)]
avcodec/hcom: Check that there are dictionary entries

Fixes: out of array read
Fixes: 17617/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_HCOM_fuzzer-5674970478280704

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>
4 months agoavcodec/fitsdec: Prevent division by 0 with huge data_max
Michael Niedermayer [Mon, 15 Jul 2019 21:42:42 +0000 (23:42 +0200)]
avcodec/fitsdec: Prevent division by 0 with huge data_max

Fixes: division by 0
Fixes: 15657/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FITS_fuzzer-5738154838982656

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>
4 months agoavcodec/dstdec: Fix integer overflow in samples_per_frame computation
Michael Niedermayer [Wed, 25 Sep 2019 14:48:46 +0000 (16:48 +0200)]
avcodec/dstdec: Fix integer overflow in samples_per_frame computation

Fixes: Timeout (? -> 2ms)
Fixes: 17616/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DST_fuzzer-5198057947267072

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>
4 months agoavcodec/g729_parser: Check block_size
Michael Niedermayer [Tue, 24 Sep 2019 23:07:34 +0000 (01:07 +0200)]
avcodec/g729_parser: Check block_size

Fixes: Infinite loop
Fixes: 17611/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_ACELP_KELVIN_fuzzer-5765134928052224

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>
4 months agoavcodec/sbcdec: Initialize number of channels
Michael Niedermayer [Tue, 24 Sep 2019 21:50:23 +0000 (23:50 +0200)]
avcodec/sbcdec: Initialize number of channels

Fixes: out of array access
Fixes: 17609/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_SBC_fuzzer-5758729319874560

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: Moritz Barsnick <barsnick@gmx.net>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoavcodec/exr: Fix undefined left shifts of negative numbers
Andreas Rheinhardt [Tue, 24 Sep 2019 22:03:07 +0000 (00:03 +0200)]
avcodec/exr: Fix undefined left shifts of negative numbers

Affected the FATE-tests exr-rgb-scanline-pxr24-half-uint32-13x9 and
exr-rgb-scanline-pxr24-uint32.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
4 months agoaformat/movenc: add missing padding to output track extradata
James Almer [Wed, 25 Sep 2019 17:21:07 +0000 (14:21 -0300)]
aformat/movenc: add missing padding to output track extradata

Fixes ticket #8183.

Tested-by: Thierry Foucu <tfoucu@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
4 months agodoc/filters: warn about gaps/overlaps in xstack
Gyan Doshi [Thu, 26 Sep 2019 16:16:55 +0000 (21:46 +0530)]
doc/filters: warn about gaps/overlaps in xstack

4 months agodoc/filters: add 4x4 layout example for xstack filter
Limin Wang [Thu, 26 Sep 2019 14:57:42 +0000 (22:57 +0800)]
doc/filters: add 4x4 layout example for xstack filter

Add layouts for existing examples.

Reviewed-by: Gyan <ffmpeg@gyani.pro>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
4 months agoavfilter/vf_eq: fix compilation with x86 asm disabled
James Almer [Thu, 26 Sep 2019 15:12:33 +0000 (12:12 -0300)]
avfilter/vf_eq: fix compilation with x86 asm disabled

Signed-off-by: James Almer <jamrial@gmail.com>
4 months agofate: update hashes after ya16 change
Paul B Mahol [Thu, 26 Sep 2019 14:59:14 +0000 (16:59 +0200)]
fate: update hashes after ya16 change

4 months agoswresample/audioconvert: fix invalid left shift for 64bit sample format
Paul B Mahol [Thu, 26 Sep 2019 14:19:06 +0000 (16:19 +0200)]
swresample/audioconvert: fix invalid left shift for 64bit sample format

Fixes #8002.

4 months agoavcodec/hevc_ps: Remove dead code in vps_id check
Andriy Gelman [Sun, 22 Sep 2019 04:17:29 +0000 (00:17 -0400)]
avcodec/hevc_ps: Remove dead code in vps_id check

Since reading 4 bits always returns a value in the range [0, 15], the
check for vps_id >= HEVC_MAX_VPS_COUNT, where HEVC_MAX_VPS_COUNT = 16, is redundant.

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavcodec/truespeech: fix left shift of negative value
Paul B Mahol [Thu, 26 Sep 2019 14:03:33 +0000 (16:03 +0200)]
avcodec/truespeech: fix left shift of negative value

4 months agoswscale/output: fix signed integer overflow for ya16
Paul B Mahol [Thu, 26 Sep 2019 13:55:03 +0000 (15:55 +0200)]
swscale/output: fix signed integer overflow for ya16

Fixes #7666.

4 months agoavformat/movenc: Fix undefined shift
Andreas Rheinhardt [Thu, 19 Sep 2019 22:17:03 +0000 (00:17 +0200)]
avformat/movenc: Fix undefined shift

Fixes the movenc FATE-test.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec/mpeg12dec: Sanitize start codes earlier
Andreas Rheinhardt [Thu, 19 Sep 2019 22:16:57 +0000 (00:16 +0200)]
avcodec/mpeg12dec: Sanitize start codes earlier

The MPEG-1/2 decoder uses avpriv_find_start_code to search for start
codes and worked with the resulting start code before checking that it
is really a start code of a slice. In particular, if the picture is so
big that a slice_vertical_position_extension is present, it added the
slice_vertical_position_extension as if it had a slice. Then a left
shift is performed, without making sure that the value to be shifted is
nonnegative.
Afterwards the end result is checked, but even if a start code of a
non-slice has been found, it might pass these checks: If
slice_vertical_position_extension is present a start code <
SLICE_MIN_START_CODE can lead to a macroblock-row index that appears
valid. Furthermore, the left shift might make an invalid start code
appear valid by discarding the highest bit.
This has been fixed by checking directly after avpriv_find_start_code
has returned.

Fixes ticket #8162 (which is about the undefined left shifts).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec/pcm: Cosmetics
Andreas Rheinhardt [Thu, 19 Sep 2019 22:17:02 +0000 (00:17 +0200)]
avcodec/pcm: Cosmetics

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec/pcm: Fix undefined shifts
Andreas Rheinhardt [Thu, 19 Sep 2019 22:17:01 +0000 (00:17 +0200)]
avcodec/pcm: Fix undefined shifts

Fixes the acodec-pcm-u16[lb]e FATE-tests.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agoavcodec/wavpackenc: Fix undefined shifts
Andreas Rheinhardt [Thu, 19 Sep 2019 22:16:58 +0000 (00:16 +0200)]
avcodec/wavpackenc: Fix undefined shifts

Fixes ticket #8161 and the acodec-wavpack FATE-test.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
4 months agolavc/qsv: add memory type message
Zhong Li [Thu, 19 Sep 2019 20:45:27 +0000 (04:45 +0800)]
lavc/qsv: add memory type message

Signed-off-by: Zhong Li <zhong.li@intel.com>
4 months agolavc/qsv: Fix MSDK initialization failure in system memory mode
Zhong Li [Thu, 19 Sep 2019 20:45:26 +0000 (04:45 +0800)]
lavc/qsv: Fix MSDK initialization failure in system memory mode

MSDK does not create internal acceleration device on Linux,
So MFXVideoCORE_SetHandle() is necessary.
It has been added for ff_qsv_init_session_device().
But missed for ff_qsv_init_internal_session() due to commit
1f26a23 overwrited commit db89f45

Fix #7030

Signed-off-by: Zhong Li <zhong.li@intel.com>
4 months agoavformat/utils: ensure that all packets in AVPacketList are reference counted
Andreas Rheinhardt [Thu, 26 Sep 2019 00:05:58 +0000 (02:05 +0200)]
avformat/utils: ensure that all packets in AVPacketList are reference counted

This is done so that its data is really owned by the packet.
This was already true for the current callers.

Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavfilter/x86/vf_eq: add SSE2 version
Ting Fu [Wed, 18 Sep 2019 07:05:35 +0000 (15:05 +0800)]
avfilter/x86/vf_eq: add SSE2 version

Signed-off-by: Ting Fu <ting.fu@intel.com>
4 months agoavfilter/x86/vf_eq: Change inline assembly into nasm code
Ting Fu [Wed, 18 Sep 2019 07:05:34 +0000 (15:05 +0800)]
avfilter/x86/vf_eq: Change inline assembly into nasm code

Signed-off-by: Ting Fu <ting.fu@intel.com>
4 months agocheckasm/vf_eq: add test for vf_eq
Ting Fu [Wed, 18 Sep 2019 07:05:33 +0000 (15:05 +0800)]
checkasm/vf_eq: add test for vf_eq

Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Ruiling Song <ruiling.song@intel.com>
4 months agoavformat/utils: Move the reference to the packet list
Andreas Rheinhardt [Fri, 20 Sep 2019 20:39:10 +0000 (22:39 +0200)]
avformat/utils: Move the reference to the packet list

Up until now, ff_packet_list_put had a flaw: When it moved a packet to
the list (meaning, when it ought to move the reference to the packet
list instead of creating a new one via av_packet_ref), it did not reset
the original packet, confusing the ownership of the data in the packet.
This has been done because some callers of this function were not
compatible with resetting the packet.

This commit changes these callers and fixes this flaw. In order to
indicate that the ownership of the packet has moved to the packet list,
pointers to constant AVPackets are used whenever the target of the
pointer might already be owned by the packet list.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
4 months agoavformat/utils: unref packet on AVInputFormat.read_packet() failure
James Almer [Fri, 20 Sep 2019 20:39:09 +0000 (22:39 +0200)]
avformat/utils: unref packet on AVInputFormat.read_packet() failure

Demuxers may have allocated a packet before encountering an error and aborting.

Fixes ticket #8150

Signed-off-by: James Almer <jamrial@gmail.com>