]> git.sesse.net Git - ffmpeg/log
ffmpeg
3 years agoavfilter/af_sofalizer: allow to specify virtual speakers indetifier as number
Paul B Mahol [Sun, 11 Oct 2020 13:23:31 +0000 (15:23 +0200)]
avfilter/af_sofalizer: allow to specify virtual speakers indetifier as number

3 years agoavcodec/apedec: use proper macro and type for pivot variable
Paul B Mahol [Mon, 5 Oct 2020 23:56:43 +0000 (01:56 +0200)]
avcodec/apedec: use proper macro and type for pivot variable

3 years agoavcodec/apedec: properly calculate and store absolute value
Paul B Mahol [Mon, 5 Oct 2020 23:24:42 +0000 (01:24 +0200)]
avcodec/apedec: properly calculate and store absolute value

3 years agoavcodec/apedec: fix decoding 24bit insane files with recent versions
Paul B Mahol [Mon, 5 Oct 2020 20:24:13 +0000 (22:24 +0200)]
avcodec/apedec: fix decoding 24bit insane files with recent versions

3 years agoavformat/isom: add support for RAW ASC Bayer BGGR in mov
Paul B Mahol [Thu, 8 Oct 2020 17:24:11 +0000 (19:24 +0200)]
avformat/isom: add support for RAW ASC Bayer BGGR in mov

3 years agoavcodec/mpeg12: Don't pretend reading dct_dc_size_* VLCs can fail
Andreas Rheinhardt [Thu, 8 Oct 2020 15:54:19 +0000 (17:54 +0200)]
avcodec/mpeg12: Don't pretend reading dct_dc_size_* VLCs can fail

It can't because the corresponding trees don't have any loose ends.

Removing the checks also removed an instance of av_log(NULL (with a
nonsense message) from the codebase.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/mpeg12: Reduce size of motion-vector VLC
Andreas Rheinhardt [Thu, 8 Oct 2020 14:59:40 +0000 (16:59 +0200)]
avcodec/mpeg12: Reduce size of motion-vector VLC

It currently uses 9 bits per table, but there are no codes with
nine bits at all, while there are codes with eight, ten and eleven bits.
So reducing the table size to eight bits will not reduce the amount of
codes that can be parsed in the first step, but it allows to reduce the
size of the motion-vector VLC.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agolavc, lavf: Remove newlines from calls to avpriv_request_sample().
Carl Eugen Hoyos [Sun, 11 Oct 2020 17:59:24 +0000 (19:59 +0200)]
lavc, lavf: Remove newlines from calls to avpriv_request_sample().

3 years agoavcodec/exr: Check line size for overflow
Michael Niedermayer [Sat, 26 Sep 2020 20:04:16 +0000 (22:04 +0200)]
avcodec/exr: Check line size for overflow

Fixes: signed integer overflow: 570425356 * 6 cannot be represented in type 'int
Fixes: 25929/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_EXR_fuzzer-5099197739827200
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/exr: Check xdelta, ydelta
Michael Niedermayer [Sat, 26 Sep 2020 19:54:36 +0000 (21:54 +0200)]
avcodec/exr: Check xdelta, ydelta

Fixes: assertion failure
Fixes: 25617/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_EXR_fuzzer-5648746061496320
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/adpcm: Check block align for AV_CODEC_ID_ADPCM_PSX
Michael Niedermayer [Tue, 29 Sep 2020 19:23:39 +0000 (21:23 +0200)]
avcodec/adpcm: Check block align for AV_CODEC_ID_ADPCM_PSX

Regression since: ca49476ace90ddebc5f92d9d82297f77e528c21e
Fixes: out of array write
Fixes: 25786/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_ADPCM_PSX_fuzzer-5704869380620288
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/mobiclip: Fix multiple integer overflows
Michael Niedermayer [Tue, 29 Sep 2020 20:43:13 +0000 (22:43 +0200)]
avcodec/mobiclip: Fix multiple integer overflows

Fixes: signed integer overflow: 872415232 * 7 cannot be represented in type 'int'
Fixes: signed integer overflow: -2013265888 + -1744830464 cannot be represented in type 'int'
Fixes: 25834/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MOBICLIP_fuzzer-5471406434025472
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 agoAllow using only the mfra info for seeking using the fragment index
Justin Ruggles [Fri, 2 Oct 2020 12:51:19 +0000 (08:51 -0400)]
Allow using only the mfra info for seeking using the fragment index

The mfra has enough information to enable seeking, and reading it is
behind an AVOption flag, so we shouldn't require that sidx information
also be present in order to seek using the fragment index.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
3 years agoswscale/utils: override forced-zero formats back to full range
Jan Ekström [Fri, 9 Oct 2020 22:33:27 +0000 (01:33 +0300)]
swscale/utils: override forced-zero formats back to full range

Fixes vf_scale outputting RGB AVFrames with limited range flagged
in case either input or output specifically sets the range.

This is the reverse of the logic utilized for RGB and PAL8 content
in sws_setColorspaceDetails.

3 years agoswscale/utils: split range override check into its own function
Jan Ekström [Fri, 9 Oct 2020 22:29:18 +0000 (01:29 +0300)]
swscale/utils: split range override check into its own function

3 years agoavfilter/avfilter.h: add missing FF_API_NEXT wrapper
James Almer [Sun, 11 Oct 2020 02:54:35 +0000 (23:54 -0300)]
avfilter/avfilter.h: add missing FF_API_NEXT wrapper

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavformat/avformat.h: add missing FF_API_NEXT wrappers
James Almer [Sun, 11 Oct 2020 02:54:17 +0000 (23:54 -0300)]
avformat/avformat.h: add missing FF_API_NEXT wrappers

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavcodec/codec.h: add missing FF_API_NEXT wrapper
James Almer [Sun, 11 Oct 2020 02:54:03 +0000 (23:54 -0300)]
avcodec/codec.h: add missing FF_API_NEXT wrapper

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavcodec/vp9: Fix stack-buffer overflow with VP9 VDPAU available
Andreas Rheinhardt [Sat, 10 Oct 2020 23:29:57 +0000 (01:29 +0200)]
avcodec/vp9: Fix stack-buffer overflow with VP9 VDPAU available

ccca62ef991f0a47dfa30c3e822d91294b8afe4c added new VP9 VDPAU profiles
and as a consequence AV_PIX_FMT_VDPAU can now be twice in the list of
pixel formats used for format negotiation by ff_thread_get_format(); yet
there is only one entry in said list reserved for VDPAU, leading to a
stack-buffer overflow. This commit fixes this by making sure that
AV_PIX_FMT_VDPAU will not occur twice in said list.

Fixes Coverity ticket 1468046.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/sheervideo: Avoid code duplication when creating VLC tables
Andreas Rheinhardt [Sat, 10 Oct 2020 18:28:16 +0000 (20:28 +0200)]
avcodec/sheervideo: Avoid code duplication when creating VLC tables

The SheerVideo decoder uses two VLC tables and these are in turn created
from structures (called SheerTable) that are naturally paired. This
commit unifies these pairs of SheerTables to arrays and unifies creating
the VLC tables.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/sheervideo: Reduce the size of static arrays
Andreas Rheinhardt [Sat, 10 Oct 2020 15:47:54 +0000 (17:47 +0200)]
avcodec/sheervideo: Reduce the size of static arrays

The SheerVideo decoder uses VLC tables which are currently stored in
large arrays that contain the length of each leaf of the corresponding
tree from left to right, taking 15.5KB of space. But all these arrays
follow a common pattern: First the entries are ascending and then they
are descending with lots of successive entries have the same value.
Therefore it makes sense to use a run-length encoding to store them, as
this commit does. Notice that the length 16 has to be treated specially
because there are arrays with more than 256 consecutive entries with
value 16 and because the length of the entries start to descend from
this length onward.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/sheervideo: Don't leave context in inconsistent state upon error
Andreas Rheinhardt [Sat, 10 Oct 2020 18:11:49 +0000 (20:11 +0200)]
avcodec/sheervideo: Don't leave context in inconsistent state upon error

This has happened if the format changed midstream and if the new packet
is so small that it is instantaneously rejected: In this case the VLC
tables were for the new format, although the context says that they are
still the ones for the old format. It can also happen if the format
changed midstream and the allocation of the new tables fails. If the
next packet is a packet for the old format, the decoder thinks it
already has the correct VLC tables, leading to a segfault.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/sheervideo: Inline compile-time constants
Andreas Rheinhardt [Sat, 10 Oct 2020 04:45:01 +0000 (06:45 +0200)]
avcodec/sheervideo: Inline compile-time constants

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/sheervideo: Improve creating VLC tables
Andreas Rheinhardt [Sat, 10 Oct 2020 04:13:21 +0000 (06:13 +0200)]
avcodec/sheervideo: Improve creating VLC tables

Don't needlessly copy an array around; don't create a table with
default symbols; and use smaller types to save stack space: The longest
code here is 16 bits, so one can store the codes in this type.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/celp_filters: Avoid invalid negation in ff_celp_lp_synthesis_filter()
Michael Niedermayer [Wed, 23 Sep 2020 21:31:59 +0000 (23:31 +0200)]
avcodec/celp_filters: Avoid invalid negation in ff_celp_lp_synthesis_filter()

Fixes: negation of -2147483648 cannot be represented in type 'int'; cast to an unsigned type to negate this value to itself
Fixes: 25675/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_G729_fuzzer-4786580731199488
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/takdsp: Fix negative shift in decorrelate_sf()
Michael Niedermayer [Thu, 24 Sep 2020 19:59:04 +0000 (21:59 +0200)]
avcodec/takdsp: Fix negative shift in decorrelate_sf()

Fixes: left shift of negative value -4
Fixes: 25723/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TAK_fuzzer-6250580752990208
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 agofate: Add aa-demux test
Michael Niedermayer [Tue, 15 Sep 2020 15:13:36 +0000 (17:13 +0200)]
fate: Add aa-demux test

This should help fuzzer coverage

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/parsers: add missing FF_API_NEXT wrappers
James Almer [Sat, 10 Oct 2020 04:12:01 +0000 (01:12 -0300)]
avcodec/parsers: add missing FF_API_NEXT wrappers

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavcodec/mpeg12dec: Optimize reading mpeg2 intra escape codes
Andreas Rheinhardt [Thu, 8 Oct 2020 19:45:21 +0000 (21:45 +0200)]
avcodec/mpeg12dec: Optimize reading mpeg2 intra escape codes

Said escape code is only six bits long, so that one has at least 25 - 6
bits in the bitstream reader's cache after reading it; therefore the
whole following 18 bits (containing the actual code) are already in the
bitstream reader's cache, making it unnecessary to reload the cache.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/aviobuf: increase default read buffer size to 2*max_buffer_size for streamed...
Marton Balint [Sat, 19 Sep 2020 22:02:19 +0000 (00:02 +0200)]
avformat/aviobuf: increase default read buffer size to 2*max_buffer_size for streamed data

This should increase the effectiveness of ffio_ensure_seekback by reducing the
number of buffer reallocations and memmoves/memcpys because even a small
seekback window requires max_buffer_size+window_size buffer space.

Signed-off-by: Marton Balint <cus@passwd.hu>
3 years agoavformat/aviobuf: fix indentation
Marton Balint [Mon, 28 Sep 2020 22:16:47 +0000 (00:16 +0200)]
avformat/aviobuf: fix indentation

Signed-off-by: Marton Balint <cus@passwd.hu>
3 years agoavformat/aviobuf: do not allocate a new buffer in ffio_ensure_seekback if not needed
Marton Balint [Mon, 28 Sep 2020 22:15:27 +0000 (00:15 +0200)]
avformat/aviobuf: do not allocate a new buffer in ffio_ensure_seekback if not needed

Let's move unread data to the start of the old buffer instead.

Signed-off-by: Marton Balint <cus@passwd.hu>
3 years agoavformat/aviobuf: discard part of the IO buffer in ffio_ensure_seekback if needed
Marton Balint [Mon, 28 Sep 2020 21:48:34 +0000 (23:48 +0200)]
avformat/aviobuf: discard part of the IO buffer in ffio_ensure_seekback if needed

Previously ffio_ensure_seekback never flushed the buffer, so successive
ffio_ensure_seekback calls were all respected. This could eventually cause
unlimited memory and CPU usage if a demuxer called ffio_ensure_seekback on all
it's read data.

Most demuxers however only rely on being able to seek back till the position of
the last ffio_ensure_seekback call, therefore we change the semantics of
ffio_ensure_seekback so that a new call can invalidate seek guarantees of the
old. In order to support some level of "nested" ffio_ensure_seekback calls, we
document that the function only invalidates the old window (and potentially
discards the already read data from the IO buffer), if the newly requested
window does not fit into the old one.

This way we limit the memory usage for ffio_ensure_seekback calls requesting
consecutive data windows.

Signed-off-by: Marton Balint <cus@passwd.hu>
3 years agoavformat/mpjpegdec: make sure we seek back to the ensured buffer
Marton Balint [Sat, 26 Sep 2020 18:36:25 +0000 (20:36 +0200)]
avformat/mpjpegdec: make sure we seek back to the ensured buffer

It was possible for the old code to seek back before the most recently read
data if start of a new multipart was across read boundaries. Now we read some
small sections multiple times to avoid this, but that is OK.

Signed-off-by: Marton Balint <cus@passwd.hu>
3 years agoavformat/mpegts: make sure mpegts_resync do not run out of the initially requested...
Marton Balint [Sat, 26 Sep 2020 18:30:27 +0000 (20:30 +0200)]
avformat/mpegts: make sure mpegts_resync do not run out of the initially requested probe buffer

Signed-off-by: Marton Balint <cus@passwd.hu>
3 years agoavformat/aviobuf: fix checks in ffio_ensure_seekback
Marton Balint [Sat, 19 Sep 2020 22:01:48 +0000 (00:01 +0200)]
avformat/aviobuf: fix checks in ffio_ensure_seekback

The new buf_size was detemined too conservatively, maybe because of the
off-by-one issue which was fixed recently in fill_buffer. We can safely
substract 1 more from the new buffer size, because max_buffer_size space must
only be guaranteed when we are reading the last byte of the requested window.

Comparing the new buf_size against filled did not make a lot of sense, what
makes sense is that we want to reallocate the buffer if the new buf_size is
bigger than the old, therefore the change in the check.

Signed-off-by: Marton Balint <cus@passwd.hu>
3 years agoavformat/aviobuf: check if requested seekback buffer is already read
Marton Balint [Sat, 26 Sep 2020 17:20:50 +0000 (19:20 +0200)]
avformat/aviobuf: check if requested seekback buffer is already read

Existing code did not check if the requested seekback buffer is
already read entirely. In this case, nothing has to be done to guarantee
seekback.

Signed-off-by: Marton Balint <cus@passwd.hu>
3 years agoavformat/aviobuf: write data into the IO buffer till the very end of the buffer
Marton Balint [Sun, 20 Sep 2020 07:32:44 +0000 (09:32 +0200)]
avformat/aviobuf: write data into the IO buffer till the very end of the buffer

There was an off-by-one error when checking if the IO buffer still has enough
space till the end. One more byte can be safely written.

Signed-off-by: Marton Balint <cus@passwd.hu>
3 years agoavfilter/vf_minterpolate: Remove redundant code for freeing
Andreas Rheinhardt [Tue, 6 Oct 2020 13:10:43 +0000 (15:10 +0200)]
avfilter/vf_minterpolate: Remove redundant code for freeing

ad73b32d2922f4237405043d19763229aee0e59e added some code for freeing in
the input's config_props function, yet this is unnecessary as uninit is
called anyway if config_props fails.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavfilter/vf_minterpolate: Fix left shift of negative value
Andreas Rheinhardt [Tue, 6 Oct 2020 12:52:11 +0000 (14:52 +0200)]
avfilter/vf_minterpolate: Fix left shift of negative value

This has happened when initializing the motion estimation context if
width or height of the video was smaller than the block size used
for motion estimation and if the motion interpolation mode indicates
not to use motion estimation.

The solution is of course to only initialize the motion estimation
context if the interpolation mode uses motion estimation.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavfilter/vf_minterpolate: Reject too small dimensions
Andreas Rheinhardt [Tue, 6 Oct 2020 12:35:25 +0000 (14:35 +0200)]
avfilter/vf_minterpolate: Reject too small dimensions

The latter code relies upon the dimensions to be not too small;
otherwise one will call av_clip() with min > max lateron which aborts
in case ASSERT_LEVEL is >= 2 or one will get a nonsense result that may
lead to a heap-buffer-overflow/underflow. The latter has happened in
ticket #8248 which this commit fixes.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/rtsp: allocate correct max number of pollfds
Andriy Gelman [Sat, 26 Sep 2020 22:26:30 +0000 (18:26 -0400)]
avformat/rtsp: allocate correct max number of pollfds

There is one general rtsp connection plus two connections per stream (rtp/rtcp).

Reviewed-by: Zhao Zhili <zhilizhao@tencent.com>
Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
3 years agoavformat/rtspdec: add newline in log message
Andriy Gelman [Sat, 26 Sep 2020 22:26:29 +0000 (18:26 -0400)]
avformat/rtspdec: add newline in log message

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
3 years agoFATE/dnn: only run unit test when CONFIG_DNN enabled
Peter Ross [Thu, 8 Oct 2020 11:00:56 +0000 (22:00 +1100)]
FATE/dnn: only run unit test when CONFIG_DNN enabled

Signed-off-by: Peter Ross <pross@xvid.org>
Reviewed-by: Guo, Yejun <yejun.guo@intel.com>
3 years agoavcodec/magicyuvenc: Use more correct cast in compare function
Andreas Rheinhardt [Thu, 8 Oct 2020 19:14:28 +0000 (21:14 +0200)]
avcodec/magicyuvenc: Use more correct cast in compare function

There is no need to cast const away (even if it was harmless) and to
copy the object at all.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/magicyuvenc: Avoid sorting Huffman table unnecessarily
Andreas Rheinhardt [Mon, 28 Sep 2020 13:11:52 +0000 (15:11 +0200)]
avcodec/magicyuvenc: Avoid sorting Huffman table unnecessarily

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/mjpegdec: Remove redundant initialization
Andreas Rheinhardt [Thu, 8 Oct 2020 18:08:12 +0000 (20:08 +0200)]
avcodec/mjpegdec: Remove redundant initialization

Now that the correct number of codes is used, it is no longer necessary
to initialize the lengths of the codes at all any more as the length of
the actually used codes is set later anyway.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/mjpegdec: Remove use_static from build_vlc()
Andreas Rheinhardt [Thu, 8 Oct 2020 18:02:17 +0000 (20:02 +0200)]
avcodec/mjpegdec: Remove use_static from build_vlc()

It is always zero; it referred to the INIT_VLC_USE_STATIC flag which has
been removed in 595324e143b57a52e2329eb47b84395c70f93087.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/libopenmpt: Don't discard const
Andreas Rheinhardt [Thu, 8 Oct 2020 13:46:06 +0000 (15:46 +0200)]
avformat/libopenmpt: Don't discard const

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/mjpegdec: Use correct number of codes when init default VLCs
Andreas Rheinhardt [Thu, 8 Oct 2020 17:35:02 +0000 (19:35 +0200)]
avcodec/mjpegdec: Use correct number of codes when init default VLCs

Commit bbc0d0c1fe2b7ecdc4367295594f084f85ad22f5 made the mjpeg decoder
use default Huffman tables when none are given, yet when initializing
the default Huffman tables, it did not use the correct number of entries
of the arrays used to initialize the tables, but instead it used the
biggest entry + 1 (as if it were a continuous array 0..biggest entry).
This worked because the ff_init_vlc_sparse() (and its predecessors)
always skipped entries with a length of zero and the length of the
corresponding elements was always initialized to zero with only the
sizes of the actually existing elements being set to a size > 0 lateron.

Yet since commit 1249698e1b424cff8e77e6a83cfdbc9d11e01aa7 this is no
longer so, as build_vlc() actually read the array containing the values
itself. This implies that the wrong length now leads to a read beyond
the end of the given array; this could lead to crashs (but usually
doesn't); it is detectable by ASAN* and this commit fixes it.

*: AddressSanitizer: global-buffer-overflow on address xy
...
xy is located 0 bytes to the right of global variable 'avpriv_mjpeg_val_ac_luminance'

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/mjpegdec: Use correct number of codes for VLC tables
Andreas Rheinhardt [Thu, 8 Oct 2020 17:22:35 +0000 (19:22 +0200)]
avcodec/mjpegdec: Use correct number of codes for VLC tables

Commit 1249698e1b424cff8e77e6a83cfdbc9d11e01aa7 made
ff_mjpeg_decode_dht() call build_vlc() with a wrong (too hight)
number of codes. The reason it worked is that the lengths of the extraneous
entries is initialized to zero and ff_init_vlc_sparse() ignores codes
with a length of zero. But using a too high number of codes was
nevertheless bad, because a) the assert in build_vlc() could have been
triggered (namely if the real amount of codes is 256) and b) the loop in
build_vlc() uses initialized data (leading to Valgrind errors [1]).
Furthermore, the old code spend CPU cycles in said loop although the
result won't be used anyway.

[1]: http://fate.ffmpeg.org/report.cgi?slot=x86_64-archlinux-gcc-valgrind&time=20201008025137

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoVP9 Profile 2 VDPAU support
ManojGuptaBonda [Thu, 8 Oct 2020 06:18:51 +0000 (11:48 +0530)]
VP9 Profile 2 VDPAU support

Added VDPAU to list of supported formats for VP9 420 10 and 12 bit
formats. Add VP9 10/12 Bit support for VDPAU

Signed-off-by: Philip Langdale <philipl@overt.org>
3 years agoavformat/dashdec: Reset pointer to NULL after freeing it
Andreas Rheinhardt [Thu, 8 Oct 2020 13:40:02 +0000 (15:40 +0200)]
avformat/dashdec: Reset pointer to NULL after freeing it

This is currently safe here, because the effective lifetime of
adaptionset_lang is parse_manifest_adaptationset() (i.e. the pointer
gets overwritten each time on entry to the function and gets freed
before exiting the function), but it is nevertheless safer to reset the
pointer.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoconfigure: add missing atsc_a53 dependencies to hevcparse and h264_parser
James Almer [Thu, 8 Oct 2020 13:09:39 +0000 (10:09 -0300)]
configure: add missing atsc_a53 dependencies to hevcparse and h264_parser

Found-by: Chris Miceli <chris@miceli.net.au>
Signed-off-by: James Almer <jamrial@gmail.com>
3 years agolibavformat/dashdec: Fix issue with dash on Windows
Christopher Degawa [Thu, 8 Oct 2020 12:45:21 +0000 (12:45 +0000)]
libavformat/dashdec: Fix issue with dash on Windows

Use xmlFree instead of av_freep

snip from libxml2:

 * xmlGetProp:
...
 * Returns the attribute value or NULL if not found.
 *     It's up to the caller to free the memory with xmlFree().

According to libxml2, you are supposed to use xmlFree instead of free
on the pointer returned by it, and also using av_freep on Windows will
call _aligned_free instead of normal free, causing _aligned_free to raise
SIGTRAP and crashing ffmpeg and ffplay.

Signed-off-by: Christopher Degawa <ccom@randomderp.com>
3 years agolavf/img2dec: Auto-detect Cintel scanner images.
Carl Eugen Hoyos [Thu, 8 Oct 2020 07:34:55 +0000 (09:34 +0200)]
lavf/img2dec: Auto-detect Cintel scanner images.

3 years agoavcodec/mjpegdec: improve decoding of DNG files
Paul B Mahol [Sat, 3 Oct 2020 12:34:01 +0000 (14:34 +0200)]
avcodec/mjpegdec: improve decoding of DNG files

That have unused symbols coded in DHT.

3 years agoavcodec/tiff: do not abort decoding if strips are available
Paul B Mahol [Fri, 2 Oct 2020 10:16:49 +0000 (12:16 +0200)]
avcodec/tiff: do not abort decoding if strips are available

Even if such files are invalid, they can be decoded just fine.
Also stored tiles may have bigger dimensions than displayed ones,
so do not abort decoding in such cases.

3 years agoavcodec: add Cintel RAW decoder
Paul B Mahol [Thu, 1 Oct 2020 13:54:24 +0000 (15:54 +0200)]
avcodec: add Cintel RAW decoder

3 years agoavfilter/vf_v360: use quaternions for rotation
Paul B Mahol [Tue, 6 Oct 2020 11:51:52 +0000 (13:51 +0200)]
avfilter/vf_v360: use quaternions for rotation

Fixes gimbal lock issues, and round-off errors.

3 years agolibswcale/input: use more accurate planer rgb16 yuv conversions
Mark Reid [Sat, 3 Oct 2020 23:31:58 +0000 (16:31 -0700)]
libswcale/input: use more accurate planer rgb16 yuv conversions

These conversion appears to be exhibiting the same rounding error as the rgbf32 formats where.
I seperated the rounding value from the 16 and 128 offsets, I think it makes it a little more clear.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/av1dec: avoid probing with av1dec
James Almer [Tue, 6 Oct 2020 14:20:24 +0000 (11:20 -0300)]
avcodec/av1dec: avoid probing with av1dec

av1dec should no longer attempt to output empty frames if another decoder
was used for probing and it sucessfully set a pix_fmt ever since 05872c67a4,
so we can re-add the AV_CODEC_CAP_AVOID_PROBING cap.

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agolavf/avs2dec.c: optimize code style
hwren [Mon, 5 Oct 2020 15:56:10 +0000 (23:56 +0800)]
lavf/avs2dec.c: optimize code style

Signed-off-by: hwren <hwrenx@126.com>
3 years agolavc/avs2_parser.c: optimize code style
hwren [Thu, 20 Aug 2020 06:58:52 +0000 (14:58 +0800)]
lavc/avs2_parser.c: optimize code style

Signed-off-by: hwren <hwrenx@126.com>
3 years agolavf/davs2.c: rename as avs2dec.c for better understanding
hwren [Thu, 20 Aug 2020 06:52:15 +0000 (14:52 +0800)]
lavf/davs2.c: rename as avs2dec.c for better understanding

Signed-off-by: hwren <hwrenx@126.com>
3 years agolavc/avs2_parser.c,lavf/davs2.c: add AVS2_* prefix
hwren [Thu, 20 Aug 2020 06:47:42 +0000 (14:47 +0800)]
lavc/avs2_parser.c,lavf/davs2.c: add AVS2_* prefix

Add AVS2_* prefix to macro definitions to avoid confusion

Signed-off-by: hwren <hwrenx@126.com>
3 years agolavc,doc: add libuavs3d video decoder wrapper
hwren [Mon, 5 Oct 2020 12:16:25 +0000 (20:16 +0800)]
lavc,doc: add libuavs3d video decoder wrapper

Signed-off-by: hbj <hanbj@pku.edu.cn>
Signed-off-by: hwren <hwrenx@126.com>
3 years agolavf/avs3dec: add raw avs3 demuxer
hwren [Mon, 5 Oct 2020 12:10:45 +0000 (20:10 +0800)]
lavf/avs3dec: add raw avs3 demuxer

Signed-off-by: hbj <hanbj@pku.edu.cn>
Signed-off-by: hwren <hwrenx@126.com>
3 years agolavc/avs3_parser: add avs3 parser
hwren [Mon, 5 Oct 2020 12:09:20 +0000 (20:09 +0800)]
lavc/avs3_parser: add avs3 parser

Signed-off-by: hbj <hanbj@pku.edu.cn>
Signed-off-by: hwren <hwrenx@126.com>
3 years agolavc/avs3.h: add AVS3 related definitions
hwren [Mon, 5 Oct 2020 12:08:06 +0000 (20:08 +0800)]
lavc/avs3.h: add AVS3 related definitions

Signed-off-by: hwren <hwrenx@126.com>
3 years agolavc: add AVS3 codec id and desc
hwren [Mon, 5 Oct 2020 12:07:01 +0000 (20:07 +0800)]
lavc: add AVS3 codec id and desc

Signed-off-by: hbj <hanbj@pku.edu.cn>
Signed-off-by: hwren <hwrenx@126.com>
3 years agoavcodec/h264_slice: use av_buffer_replace() to simplify code
James Almer [Mon, 28 Sep 2020 14:25:41 +0000 (11:25 -0300)]
avcodec/h264_slice: use av_buffer_replace() to simplify code

Based on eff289ce9f030f023e218ee7ce354d4f0e035b6d.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavformat/movenc: Avoid allocation for timecode track
Andreas Rheinhardt [Mon, 28 Sep 2020 17:27:20 +0000 (19:27 +0200)]
avformat/movenc: Avoid allocation for timecode track

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/movenc: Don't forget to free fragment buffers
Andreas Rheinhardt [Mon, 28 Sep 2020 16:36:06 +0000 (18:36 +0200)]
avformat/movenc: Don't forget to free fragment buffers

The buffers used when fragmented output is enabled have up until now not
been freed in the deinit function; they leak e.g. if one errors out of
mov_write_trailer() before one reaches the point where they are normally
written out and freed. This can e.g. happen if allocating new vos_data
fails at the beginning of mov_write_trailer().

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/movenc: Free old vos_data before overwriting it
Andreas Rheinhardt [Mon, 28 Sep 2020 16:05:44 +0000 (18:05 +0200)]
avformat/movenc: Free old vos_data before overwriting it

Otherwise the old data leaks whenever extradata needs to be rewritten
(e.g. when encoding FLAC with our encoder that sends an updated
extradata packet at the end).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/movenc: Don't free AVCodecParameters manually
Andreas Rheinhardt [Mon, 28 Sep 2020 11:30:07 +0000 (13:30 +0200)]
avformat/movenc: Don't free AVCodecParameters manually

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/qsv: Fix leak of options on error
Andreas Rheinhardt [Sun, 27 Sep 2020 08:06:27 +0000 (10:06 +0200)]
avcodec/qsv: Fix leak of options on error

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/movenc: Make some AVCodecTag tables static
Andreas Rheinhardt [Wed, 30 Sep 2020 16:29:51 +0000 (18:29 +0200)]
avformat/movenc: Make some AVCodecTag tables static

They are not used anywhere else.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/movenc: Fix segfault when remuxing rtp hint stream
Andreas Rheinhardt [Tue, 29 Sep 2020 08:21:34 +0000 (10:21 +0200)]
avformat/movenc: Fix segfault when remuxing rtp hint stream

When remuxing an rtp hint stream (or any stream with the tag "rtp "),
the mov muxer treats this as one of the rtp hint tracks it creates
internally when ordered to do so; yet this track lacks the
AVFormatContext for the hinting rtp muxer, leading to segfaults in
mov_write_udta_sdp() if a "trak" atom is written for this stream; if not,
the stream's codecpar is freed by mov_free() as if the mov muxer owned
it (it does for the internally created "rtp " tracks), but without
resetting st->codecpar, leading to double-frees lateron. This commit
therefore ignores said tag which makes rtp hint streams unremuxable.

This fixes tickets #8181 and #8186.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/dvenc: Fix undefined left shift of negative numbers
Andreas Rheinhardt [Tue, 29 Sep 2020 12:58:24 +0000 (14:58 +0200)]
avcodec/dvenc: Fix undefined left shift of negative numbers

The earlier code was based on the assumption that AVFrame.linesize can
not be negative.

Fixes ticket #8280.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavfilter/vf_v360: fix possible out of range values
Paul B Mahol [Sun, 4 Oct 2020 17:06:58 +0000 (19:06 +0200)]
avfilter/vf_v360: fix possible out of range values

3 years agoavfilter/vf_v360: add mitchell interpolation
Paul B Mahol [Sun, 4 Oct 2020 12:36:30 +0000 (14:36 +0200)]
avfilter/vf_v360: add mitchell interpolation

3 years agoavformat/moflex: Check m->size before seeking
Michael Niedermayer [Fri, 2 Oct 2020 12:59:15 +0000 (14:59 +0200)]
avformat/moflex: Check m->size before seeking

Fixes: Infinite loop
Fixes: 26016/clusterfuzz-testcase-minimized-ffmpeg_IO_DEMUXER_fuzzer-6195663833137152
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/dxtory: Fix negative stride shift in dx2_decode_slice_420()
Michael Niedermayer [Fri, 2 Oct 2020 12:59:13 +0000 (14:59 +0200)]
avcodec/dxtory: Fix negative stride shift in dx2_decode_slice_420()

Fixes: left shift of negative value -640
Fixes: 26044/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DXTORY_fuzzer-5631057602543616
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/av1dec: partially clean state on frame decoding errors
James Almer [Sun, 4 Oct 2020 13:21:59 +0000 (10:21 -0300)]
avcodec/av1dec: partially clean state on frame decoding errors

Fixes: member access within null pointer of type 'TileGroupInfo' (aka 'struct TileGroupInfo')
Fixes: 25725/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_AV1_fuzzer-5166692706287616
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavformat: add tri-ACE demuxer
Paul B Mahol [Thu, 24 Sep 2020 15:55:03 +0000 (17:55 +0200)]
avformat: add tri-ACE demuxer

3 years agoavformat/adxdec: demux multiple blocks at once
Paul B Mahol [Fri, 18 Sep 2020 10:08:42 +0000 (12:08 +0200)]
avformat/adxdec: demux multiple blocks at once

Improves decoding speed by 24x

3 years agolibwavpackenc: remove libwavpackenc wrapper
Lynne [Mon, 7 Sep 2020 00:41:19 +0000 (02:41 +0200)]
libwavpackenc: remove libwavpackenc wrapper

The manual states "there is virtually no reason to use that encoder.".

It supports less sample formats than the native encoder, is less efficient
than the native encoder and is also slower and pretty much remains untested.
libwavpack also isn't being fuzzed, which given that we plug the parameters
without any sanitizing them looks concerning.

3 years agoavformat/movenc: handle tracks w/o AVStreams in calculate_mpeg4_bit_rates
Jan Ekström [Mon, 28 Sep 2020 14:23:07 +0000 (17:23 +0300)]
avformat/movenc: handle tracks w/o AVStreams in calculate_mpeg4_bit_rates

The generated text streams for chapters lack an AVStream since they
are but an internal concept within movenc.

Fixes #8910

3 years agoavformat/asfdec_f: Change order or operations slightly
Michael Niedermayer [Sat, 12 Sep 2020 17:44:35 +0000 (19:44 +0200)]
avformat/asfdec_f: Change order or operations slightly

Fixes: signed integer overflow: 20 * 5184056935931942919 cannot be represented in type 'long'
Fixes: 25466/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-4798660247552000
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/dxa: Use av_rescale() for duration computation
Michael Niedermayer [Wed, 2 Sep 2020 21:13:00 +0000 (23:13 +0200)]
avformat/dxa: Use av_rescale() for duration computation

Fixes: signed integer overflow: 8224000000 * 1629552639 cannot be represented in type 'long'
Fixes: 24908/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-4658478506049536
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/vc1_block: Fix integer overflow in ac value
Michael Niedermayer [Wed, 2 Sep 2020 20:42:05 +0000 (22:42 +0200)]
avcodec/vc1_block: Fix integer overflow in ac value

Fixes: signed integer overflow: 25488 * 87381 cannot be represented in type 'int'
Fixes: 24765/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VC1_fuzzer-5108259565076480
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 agolibswcale/input: use more accurate rgbf32 yuv conversions
Mark Reid [Tue, 29 Sep 2020 03:44:34 +0000 (20:44 -0700)]
libswcale/input: use more accurate rgbf32 yuv conversions

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agolibswscale/tests: add floatimg_cmp test
Mark Reid [Tue, 29 Sep 2020 03:44:33 +0000 (20:44 -0700)]
libswscale/tests: add floatimg_cmp test

changes since v1:
- made into fate test
- fixed c90 warnings
- tests more intermediate formats
- tested on BE mips too

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/rtsp: fix parse_rtsp_message
Zhao Zhili [Sun, 27 Sep 2020 11:50:27 +0000 (19:50 +0800)]
avformat/rtsp: fix parse_rtsp_message

1. Remove the assumption that the message method is TEARDOWN.
2. Don't ignore the error code of ff_rtsp_parse_streaming_commands.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agortsp: Fix infinite loop in listen mode with UDP transport
Martin Storsjö [Wed, 30 Sep 2020 09:27:00 +0000 (12:27 +0300)]
rtsp: Fix infinite loop in listen mode with UDP transport

In listen mode with UDP transport, once the sender has sent
the TEARDOWN and closed the connection, poll will indicate that
one can read from the connection (indicating that the socket has
reached EOF and should be closed by the receiver as well). In this
case, parse_rtsp_message won't try to parse the command (because
it's no longer in state STREAMING), but previously just returned
zero.

Prior to f6161fccf8c5720ceac1ed1df8ba60ff8fed69f5, this caused
udp_read_packet to return zero, which is treated as EOF by
read_packet. But after that commit, udp_read_packet would continue
if parse_rtsp_message didn't return an explicit error code.

To keep the original behaviour from before that commit, more
explicitly return an error in parse_rtsp_message when in the wrong
state.

Fixes: #8840
Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoavutil/pixdesc: add missing FF_API_PSEUDOPAL check
James Almer [Fri, 2 Oct 2020 03:18:13 +0000 (00:18 -0300)]
avutil/pixdesc: add missing FF_API_PSEUDOPAL check

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavformat/utils: add missing FF_API_LAVF_AVCTX check
James Almer [Fri, 2 Oct 2020 01:47:51 +0000 (22:47 -0300)]
avformat/utils: add missing FF_API_LAVF_AVCTX check

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavformat/sdp: add missing FF_API_LAVF_AVCTX check
James Almer [Fri, 2 Oct 2020 01:45:34 +0000 (22:45 -0300)]
avformat/sdp: add missing FF_API_LAVF_AVCTX check

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavcodec/utils: add missing FF_API_TAG_STRING check
James Almer [Fri, 2 Oct 2020 01:43:28 +0000 (22:43 -0300)]
avcodec/utils: add missing FF_API_TAG_STRING check

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