Commit graph

44233 commits

Author SHA1 Message Date
Andreas Rheinhardt
2b04405b63 avcodec/speedhq: Remove cast
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-31 11:54:22 +01:00
Andreas Rheinhardt
0e3272d9a4 avcodec/mpeg12: Reindentation
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-31 11:49:43 +01:00
Andreas Rheinhardt
902e16d183 avcodec/mpeg12: Make initializing VLCs thread-safe
This automatically makes the eamad, eatqi, ipu and mdec decoders
init-threadsafe; in addition to the actual mpeg[12]video decoders,
of course.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-31 11:46:20 +01:00
Andreas Rheinhardt
6e8fcd9c56 avcodec/mpeg12: Don't initialize encoder-only parts of RLTable
ff_mpeg12_init_vlcs() currently initializes index_run, max_level and
max_run of ff_rl_mpeg1/2; yet the only user of these fields is the
MPEG-1/2 encoder which already initializes these tables on its own.
So remove the initializations in ff_mpeg12_init_vlcs(); this also
simplifies making ff_mpeg12_init_vlcs() thread-safe.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-31 11:11:59 +01:00
Andreas Rheinhardt
1ead0c6388 avcodec/rl: Remove nonstatic storage of RL tables
ff_rl_free() was added in 324e50ee95,
but never used; nonstatic storage was not used long before that.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-31 10:53:42 +01:00
Aman Karmani
e1d7433100 avcodec/codec_desc: describe AV_CODEC_ID_MPEG2TS
Signed-off-by: Aman Karmani <aman@tmm1.net>
2020-12-28 14:08:44 -08:00
Michael Niedermayer
292e41ce65 avcodec/tiff: Disallow striped and tiled tiffs except for DNG
strips + tiles is not allowed in TIFF
DNG uses a separate codepath

Regression since da5b3d0028.

Fixes: NULL pointer dereference
Fixes: poc1
Fixes: Ticket8960

Found-by: 1vanChen of NSFOCUS Security Team
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-12-28 19:36:57 +01:00
Paul B Mahol
676689cc7c avcodec/cfhd: properly handle midstream size changes for transform type 2 2020-12-25 13:28:39 +01:00
Michael Niedermayer
5cae71d2b7 avcodec/ffv1dec: Fix off by 1 error with quant tables
Fixes: assertion failure
Fixes: 28447/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FFV1_fuzzer-5369575948550144

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>
2020-12-22 00:30:50 +01:00
Michael Niedermayer
2749e20d04 avcodec/fastaudio: Fix invalid shift exponent
Fixes: shift exponent 32 is too large for 32-bit type 'unsigned int'
Fixes: 25434/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FASTAUDIO_fuzzer-6252363168612352

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-12-19 23:19:29 +01:00
Michael Niedermayer
8aadae670f avcodec/utils: Check bitrate for overflow in get_bit_rate()
Fixes: signed integer overflow: 617890810133996544 * 16 cannot be represented in type 'long'
Fixes: 26565/clusterfuzz-testcase-minimized-ffmpeg_dem_MV_fuzzer-5092054700654592

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-12-19 20:07:56 +01:00
Michael Niedermayer
ad20a4f92b avcodec/hevc_ps: Change scaling_list_dc_coef to 8 bit
Suggested-by: James
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-12-19 20:07:56 +01:00
Michael Niedermayer
f1700bd8bb avcodec/hevc_ps: check scaling_list_dc_coef
Fixes: signed integer overflow: 2147483640 + 8 cannot be represented in type 'int'
Fixes: 28449/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_HEVC_fuzzer-5686013259284480

Reviewed-by: James Almer <jamrial@gmail.com>
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-12-19 20:07:56 +01:00
James Almer
20b09b20a9 avcodec/dpx: fix use of uninitialised value
Found by Valgrind.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-18 15:22:16 -03:00
James Almer
2d02cf72e1 avcodec/hevc_sei: return the correct error code on User Data Registered parsing failure
Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-18 12:58:51 -03:00
James Almer
d397d98b59 avcodec/hevc_sei: print a log message when a unsupported ITU-T T35 SEI messages is parsed
Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-18 12:43:30 -03:00
James Almer
d5556377de avcodec/hevc_sei: refactor parsing User Data Registered ITU-T T35 SEI messages
Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-18 12:43:08 -03:00
James Almer
f322383a44 avcodec/h264_sei: print a log message when a unsupported ITU-T T35 SEI messages is parsed
Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-18 12:34:17 -03:00
James Almer
65058cade1 avcodec/h264_sei: refactor parsing User Data Registered ITU-T T35 SEI messages
Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-18 12:34:04 -03:00
Harry Mallon
331858d0f6 avcodec/dpx: Fix B&W film scans from Lasergraphics Inc
Signed-off-by: Harry Mallon <harry.mallon@codex.online>
2020-12-17 13:02:49 +01:00
Harry Mallon
0539f15bbb avcodec/dpx: Read color information from DPX header
Signed-off-by: Harry Mallon <harry.mallon@codex.online>
2020-12-17 13:02:49 +01:00
Harry Mallon
8232e01e41 avcodec/dpx: Report color_range from DPX header
Signed-off-by: Harry Mallon <harry.mallon@codex.online>
2020-12-17 13:02:49 +01:00
Harry Mallon
a041c0a031 avcodec/dpx: Read SMPTE timecode from DPX
Signed-off-by: Harry Mallon <harry.mallon@codex.online>
2020-12-17 13:02:49 +01:00
Harry Mallon
6623421454 avcodec/dpx: Read alternative frame rate from television header
Signed-off-by: Harry Mallon <harry.mallon@codex.online>
2020-12-17 13:02:49 +01:00
James Almer
1a8e719f36 avcodec/av1dec: support exporting Film Grain params as frame side data
Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-16 13:34:11 -03:00
James Almer
cd821c18dc avcodec/cuviddec: unref output frame on failure
Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-13 15:50:42 -03:00
James Almer
eadf7e3a59 avcodec/cuviddec: check for av_buffer_ref() failure
Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-13 15:50:42 -03:00
James Almer
081a17990b avcodec/libdav1d: stop setting AVFrame->best_effort_timestamp
It's now set by the generic decode code.

Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-13 12:14:57 -03:00
James Almer
94febdaec6 avcodec/mjpegdec: stop setting AVFrame->best_effort_timestamp
It's now set by the generic decode code.

Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-13 12:14:57 -03:00
James Almer
4bff800dc9 avcodec/decode: set best_effort_timestamp on output frames for all decoders
Fixes a decoding regression introduced by e9a2a87773, and as a side effect also
fixes bogus values set to certain audio frames that had some samples discarded,
where the offsets added to pts, pkt_dts and pkt_duration were not reflected in
best_effort_timestamp.

Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-13 12:14:57 -03:00
Andreas Rheinhardt
628d02a611 avcodec/speedhqenc: Call correct function
Up until now, the SpeedHQ encoder called a wrong function for init:
void ff_init_uni_ac_vlc(const uint8_t huff_size_ac[256],
                        uint8_t *uni_ac_vlc_len);
Yet the first argument actually used is of type RLTable; the size of
said struct is less than 256 if the size of a pointer is four, leading
to an access beyond the end of the RLTable.

This commit fixes this by calling the actually intended function:
init_uni_ac_vlc() from mpeg12enc.c. It was intended to use this
function [1], yet doing so was forgotten when the patch was actually
applied.

[1]: https://ffmpeg.org/pipermail/ffmpeg-devel/2020-July/266187.html

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-11 02:20:05 +01:00
Hendrik Leppkes
494f868e93 avcodec: set AV_CODEC_CAP_CHANNEL_CONF on decoders which set their own channels
The decoders in this set either have a fixed channel count, or read it
from the bitstream, and thus do not require the channel count as
external information.

Fixes various regressions since
81503ac58a, which requires a valid channel
count for decoders which do not set this capability.

Signed-off-by: Hendrik Leppkes <h.leppkes@gmail.com>
2020-12-10 13:28:35 +01:00
Anton Khirnov
19ce064239 smvjpegdec: merge into mjpegdec
SMVJPEG stores frames as slices of a big JPEG image. The decoder is
implemented as a wrapper that instantiates a full internal MJPEG
decoder, then forwards the decoded frames with offset data pointers.
This is unnecessarily complex and fragile, not supporting useful decoder
capabilities like direct rendering.

Re-implement the decoder inside the MJPEG decoder, which is accomplished
by returning each decoded frame multiple times, setting cropping
information appropriately on each instance.

One peculiar aspect of the previous design is that since
- the smvjpeg decoder returns one frame per input packet
- there are multiple frames in each packets (the aformentioned slices)
the demuxer needs to return each packet multiple times.
This is now also eliminated - the demuxer now returns each packet
exactly once, with the duration set to the number of frames it decodes
to.

This also removes one of the last remaining internal uses of the old
video decoding API.
2020-12-10 10:07:09 +01:00
Anton Khirnov
e9a2a87773 mjpegdec: convert to receive_frame()
This will be useful in the following commit.
2020-12-10 10:03:58 +01:00
Anton Khirnov
5471b8944c codec_desc: add SMVJPEG flags
Same flags as MJPEG, as it's essentially the same codec.
2020-12-10 09:45:04 +01:00
Nuo Mi
d4751d8c63 avcodec/hevcdec: dynamic allocate sList and HEVClcList
following comandline will crash the ffmpeg
ffmpeg -threads 17 -thread_type slice -i WPP_A_ericsson_MAIN_2.bit out.yuv -y

the HEVCContext->sList size is MAX_NB_THREADS(16), any > 16 thread number will crash the application

Signed-off-by: Anton Khirnov <anton@khirnov.net>
2020-12-10 09:44:11 +01:00
Andreas Rheinhardt
6a94afbd5b avcodec/snow: Use ff_thread_once() in ff_snow_common_init()
ff_snow_common_init() currently initializes static data every time it is
invoked; given that both the Snow encoder and decoder have the
FF_CODEC_CAP_INIT_THREADSAFE flag set, this can lead to data races (and
therefore undefined behaviour) even though all threads write the same
values. This commit fixes this by using ff_thread_once() for the
initializations.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-10 01:36:16 +01:00
Andreas Rheinhardt
bdfe51b44f avcodec/idcinvideo: Mark decoder as init-threadsafe
Reviewed-by: Tomas Härdin <tjoppen@acc.umu.se>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-10 01:34:55 +01:00
Andreas Rheinhardt
41519b29fa avcodec/cinepak: Mark decoder as init-threadsafe
Reviewed-by: Tomas Härdin <tjoppen@acc.umu.se>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-10 01:34:08 +01:00
Andreas Rheinhardt
f79927990d avcodec/cinepakenc: Mark encoder as init-threadsafe
Reviewed-by: Tomas Härdin <tjoppen@acc.umu.se>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-10 01:15:03 +01:00
James Almer
0e62efad7c avcodec/vaapi_av1: fill the remaining VAFilmGrainStructAV1 fields
Signed-off-by: James Almer <jamrial@gmail.com>
2020-12-09 14:42:20 -03:00
Mark Reid
8d19b3c4a5 avcodec/exr: preserve half-float NaN bits and add fate test
Handles NaNs more like the official implementation handles them, preserving
the original bits.
2020-12-09 12:31:09 +01:00
Gyan Doshi
b9b719fedc avcodec/mpegvideo_enc: check for SpeedHQ encoder
Avoids build failure when mpegvideo_enc is built but SpeedHQ encoder
isn't.
2020-12-09 12:50:05 +05:30
Philip Langdale
40135829b6 avcodec/libaom: Support monochrome encoding with libaom >= 2.0.1
Monochrome encoding with libaom was buggy for a long time, but this was
finally sorted out in libaom 2.0.1 (2.0.0 is almost there but was still
buggy in realtime mode).

We'll keep support for libaom 1.x around until the LTS distros that
include it are EOL (which is still a long time from now).

Fixes: https://trac.ffmpeg.org/ticket/7599
2020-12-08 15:31:39 -08:00
Andreas Rheinhardt
fa4532a1f7 avcodec/wmadec: Apply VLC offset during init
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-08 17:51:48 +01:00
Andreas Rheinhardt
e5b416dadd avcodec/wmadec: Reduce the size of tables used to initialize VLC
By switching from ff_init_vlc_sparse() to ff_init_vlc_from_lengths() one
can replace a table of codes of type uint16_t by a table of symbols of
type uint8_t, saving space.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-08 17:51:48 +01:00
Andreas Rheinhardt
14be39e44a avcodec/ivi: Make initializing VLCs thread-safe
This automatically makes indeo4/5 init-threadsafe.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-08 17:51:48 +01:00
Andreas Rheinhardt
ee4c129c11 avcodec/dsddec: Inline constant
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-08 17:51:48 +01:00
Andreas Rheinhardt
4f5bd6177d avcodec/dsd: Make initializing DSD tables thread-safe
This automatically makes the DSD formats as well as DST and WavPack
init-threadsafe.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-08 17:51:48 +01:00
Andreas Rheinhardt
fd5d66af74 avcodec/wavpack: Fix leak on init failure
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-08 17:51:48 +01:00