]> git.sesse.net Git - ffmpeg/log
ffmpeg
3 years agolavf: move AVStream.{nb_decoded_frames,mux_ts_offset} to AVStreamInternal
Anton Khirnov [Fri, 9 Oct 2020 07:22:36 +0000 (09:22 +0200)]
lavf: move AVStream.{nb_decoded_frames,mux_ts_offset} to AVStreamInternal

Those are private fields, no reason to have them exposed in a public
header.

3 years agolavf: move AVStream.{pts_wrap_*,update_initial_durations_done} to AVStreamInternal
Anton Khirnov [Fri, 9 Oct 2020 07:22:36 +0000 (09:22 +0200)]
lavf: move AVStream.{pts_wrap_*,update_initial_durations_done} to AVStreamInternal

Those are private fields, no reason to have them exposed in a public
header.

3 years agolavf: move AVStream.pts_reorder_error[_count] to AVStreamInternal
Anton Khirnov [Fri, 9 Oct 2020 07:22:36 +0000 (09:22 +0200)]
lavf: move AVStream.pts_reorder_error[_count] to AVStreamInternal

Those are private fields, no reason to have them exposed in a public
header.

3 years agolavf: move AVStream.{last_dts_for_order_check,dts_[mis]ordered} to AVStreamInternal
Anton Khirnov [Fri, 9 Oct 2020 07:22:36 +0000 (09:22 +0200)]
lavf: move AVStream.{last_dts_for_order_check,dts_[mis]ordered} to AVStreamInternal

Those are private fields, no reason to have them exposed in a public
header.

3 years agolavf: move AVStream.{inject_global_side_data,display_aspect_ratio} to AVStreamInternal
Anton Khirnov [Fri, 9 Oct 2020 07:22:36 +0000 (09:22 +0200)]
lavf: move AVStream.{inject_global_side_data,display_aspect_ratio} to AVStreamInternal

Those are private fields, no reason to have them exposed in a public
header.

3 years agolavf: move AVStream.info to AVStreamInternal
Anton Khirnov [Fri, 9 Oct 2020 06:15:27 +0000 (08:15 +0200)]
lavf: move AVStream.info to AVStreamInternal

This struct is for internal use of avformat_find_stream_info(), so it
should not be exposed in public headers. Keep a stub pointer in its
place to avoid changing AVStream layout, since e.g. ffmpeg.c accesses
some fields located after it (even though they are marked as private).

3 years agoffmpeg.c: stop accessing private AVStream.codec_info_nb_frames
Anton Khirnov [Sun, 25 Oct 2020 14:50:55 +0000 (15:50 +0100)]
ffmpeg.c: stop accessing private AVStream.codec_info_nb_frames

Use AVSTREAM_EVENT_FLAG_NEW_PACKETS instead, which should provide the
same information in this case.

3 years agoavformat: add a stream event flag for new packets
Anton Khirnov [Sun, 25 Oct 2020 14:50:30 +0000 (15:50 +0100)]
avformat: add a stream event flag for new packets

3 years agoffmpeg.c: rename 'area' to 'score'
Anton Khirnov [Tue, 13 Oct 2020 11:45:05 +0000 (13:45 +0200)]
ffmpeg.c: rename 'area' to 'score'

Other factors besides area are used to pick the best video stream, so
the name 'area' is misleading.

3 years agoavformat: extend documentation of event_flags
Anton Khirnov [Sun, 25 Oct 2020 14:22:44 +0000 (15:22 +0100)]
avformat: extend documentation of event_flags

Document how it is to be used for muxing (currently supported by
flvenc).

3 years agoavformat: fix typo in doxy
Anton Khirnov [Sun, 25 Oct 2020 14:13:47 +0000 (15:13 +0100)]
avformat: fix typo in doxy

av_read_frame() reads new packets, av_read_packet() does not exist.

3 years agolavc: un-avpriv avpriv_bprint_to_extradata()
Anton Khirnov [Mon, 26 Oct 2020 13:10:55 +0000 (14:10 +0100)]
lavc: un-avpriv avpriv_bprint_to_extradata()

It has not been used outside of lavc since 6f69f7a8bf6.

Also, move it to the only place where it is used.

3 years agoput_bits: make avpriv_copy_bits() lavc-local
Anton Khirnov [Mon, 26 Oct 2020 12:41:39 +0000 (13:41 +0100)]
put_bits: make avpriv_copy_bits() lavc-local

It is not used outside of lavc anymore. Keep the avpriv exported symbol
around until the next bump to preserve ABI compatibility.

3 years agoput_bits: make avpriv_put_string() lavc-local
Anton Khirnov [Mon, 26 Oct 2020 12:41:39 +0000 (13:41 +0100)]
put_bits: make avpriv_put_string() lavc-local

It has not been used outside of libavcodec since
20f325f320c6e18ee88983870d2a1fee94257293

3 years agoput_bits: make avpriv_align_put_bits() inline
Anton Khirnov [Mon, 26 Oct 2020 12:36:06 +0000 (13:36 +0100)]
put_bits: make avpriv_align_put_bits() inline

This function is so extremely simple that it is preferable to make it
inline rather than deal with all the complications arising from it being
an exported symbol.

Keep avpriv_align_put_bits() around until the next major bump to
preserve ABI compatibility.

3 years agolavf/latmenc: use a local simplified copy of avpriv_copy_bits()
Anton Khirnov [Mon, 26 Oct 2020 12:16:38 +0000 (13:16 +0100)]
lavf/latmenc: use a local simplified copy of avpriv_copy_bits()

This is the only place in lavf where avpriv_copy_bits() is used, so this
allows us to make avpriv_copy_bits() lavc-local.

3 years agolavf/latmenc: fix units mismatch
Anton Khirnov [Mon, 26 Oct 2020 12:04:33 +0000 (13:04 +0100)]
lavf/latmenc: fix units mismatch

avpriv_copy_bits() takes the size in bits, not bytes. According to
a736eb4a605f46d5ff96c7b32e55710ecd9cce89, nobody is quite sure whether
this code produces working files.

3 years agortsp: increase the control uri size
Yigit Uyan [Tue, 13 Oct 2020 08:17:12 +0000 (01:17 -0700)]
rtsp: increase the control uri size

Current browsers support up to 2k characters.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
3 years agoavcodec/bitstream: Stop allocating one VLCcode more than needed
Andreas Rheinhardt [Sat, 24 Oct 2020 12:23:38 +0000 (14:23 +0200)]
avcodec/bitstream: Stop allocating one VLCcode more than needed

Allocating one temporary entry more than needed was made necessary by
the COPY loop below writing an element before having checked that it
should be written at all. But given that this behaviour changed, the
need for overallocating is gone.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/bitstream: Check code length before truncating to uint8_t
Andreas Rheinhardt [Sat, 24 Oct 2020 12:11:14 +0000 (14:11 +0200)]
avcodec/bitstream: Check code length before truncating to uint8_t

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/hevcdec: constrained intra predict, do not check top left IS_INTRA if it...
Xu Guangxin [Fri, 16 Oct 2020 13:57:34 +0000 (21:57 +0800)]
avcodec/hevcdec: constrained intra predict, do not check top left IS_INTRA if it's not available

fix ticket: 8932

For poc 2, we have tile boundary at x = 640.
When we predict cu(640,912),the top left pixel is not avaliable to the cu.
So, we can not check it's intra or not. We need set top[-1] = top[0] directly.
see 8.4.4.2.1 for details

Signed-off-by: Xu Guangxin <oddstone@gmail.com>
Signed-off-by: Linjie Fu <linjie.justin.fu@gmail.com>
3 years agoavfilter/vf_normalize: fix regression with white/black point calculation
Paul B Mahol [Tue, 27 Oct 2020 18:43:54 +0000 (19:43 +0100)]
avfilter/vf_normalize: fix regression with white/black point calculation

3 years agoavcodec/webp: Replace never-true check by assert
Andreas Rheinhardt [Thu, 22 Oct 2020 14:08:40 +0000 (16:08 +0200)]
avcodec/webp: Replace never-true check by assert

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/webp: Return directly when creating Huff table fails
Andreas Rheinhardt [Thu, 22 Oct 2020 14:03:41 +0000 (16:03 +0200)]
avcodec/webp: Return directly when creating Huff table fails

Neither the auxiliary VLC table nor the code_lengths array need to be
freed if creating the auxiliary VLC table fails.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/webp: Use uint8_t for code lengths
Andreas Rheinhardt [Thu, 22 Oct 2020 13:54:08 +0000 (15:54 +0200)]
avcodec/webp: Use uint8_t for code lengths

They are always in the range 0..15, so using an int is not necessary.
Furthermore, using an int would not work if sizeof(int) != 4 as
ff_init_vlc_sparse() can only handle uint8_t, uint16_t and uint32_t
lengths.

Reviewed-by: zhilizhao(赵志立) <quinkblack@foxmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/mpegtsenc: make first_pcr sync with the first valid dts
Limin Wang [Mon, 26 Oct 2020 10:31:07 +0000 (18:31 +0800)]
avformat/mpegtsenc: make first_pcr sync with the first valid dts

now first_pts assume dts will start from zero, if it's not true(copyts is enable),
too many null packet will be inserted for cbr output.

Please test with below command, you'll get huge test.ts without the patch:
./ffmpeg -y -copyts -i ../fate-suite/mpegts/loewe.ts  -c:v libx264 -x264opts \
   nal-hrd=cbr:force-cfr=1 -b:v 3500k -minrate 3500k -maxrate 3500k -bufsize \
   1000k  -c:a mp2 -muxrate 4500k  -vframes 1000 test.ts

Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agoavformat/mpegtsenc: use total_size instead of avio_tell()
Limin Wang [Thu, 22 Oct 2020 01:47:52 +0000 (09:47 +0800)]
avformat/mpegtsenc: use total_size instead of avio_tell()

avio_tell() fails to get the amount of data written so far when the
underlying IO context is flushed to segments.

Please test with below command:
$ ./ffmpeg  -f lavfi -i testsrc=duration=100:size=vga -c:v libx264 -x264opts \
  nal-hrd=cbr:force-cfr=1 -b:v 500k -minrate 500k -maxrate 500k -bufsize 500k \
  -f hls -hls_time 10  -hls_ts_options "muxrate=2000000" test%d.ts

$ du -h test*.ts
Before:
2.4M    test00.ts
4.8M    test11.ts
7.2M    test22.ts
9.6M    test33.ts
12M     test44.ts
...

After apply the patch:
 2.4M   test00.ts
 2.4M   test11.ts
 2.4M   test22.ts
 2.4M   test33.ts
 2.4M   test44.ts
...

Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agoavcodec/bitstream: Consistently treat symbol as VLC_TYPE
Andreas Rheinhardt [Sun, 25 Oct 2020 23:05:26 +0000 (00:05 +0100)]
avcodec/bitstream: Consistently treat symbol as VLC_TYPE

If a static VLC table gets initialized a second time (or concurrently by
two threads) and if said VLC table uses symbols that have the sign bit
of VLC_TYPE (a typedef for int16_t) set, initializing the VLC fails. The
reason is that the type of the symbol in the temporary array is an
uint16_t and so comparing it to the symbol read from the VLC table will
fail, because only the lower 16bits coincide. Said failure triggers an
assert.

Reviewed-by: Lynne <dev@lynne.ee>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/mpeg4videodec: Don't check for errors for complete VLCs
Andreas Rheinhardt [Fri, 23 Oct 2020 18:22:31 +0000 (20:22 +0200)]
avcodec/mpeg4videodec: Don't check for errors for complete VLCs

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/atrac3plus: Perform reusing of VLCs during init
Andreas Rheinhardt [Fri, 23 Oct 2020 11:06:36 +0000 (13:06 +0200)]
avcodec/atrac3plus: Perform reusing of VLCs during init

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/atrac3: Use least max_depth for get_vlc2()
Andreas Rheinhardt [Fri, 23 Oct 2020 09:45:15 +0000 (11:45 +0200)]
avcodec/atrac3: Use least max_depth for get_vlc2()

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/atrac3: Inline constants
Andreas Rheinhardt [Fri, 23 Oct 2020 09:42:15 +0000 (11:42 +0200)]
avcodec/atrac3: Inline constants

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/atrac3: Don't use too big VLC tables
Andreas Rheinhardt [Fri, 23 Oct 2020 09:33:34 +0000 (11:33 +0200)]
avcodec/atrac3: Don't use too big VLC tables

The longest code of any of the VLC tables used is eight bits long, so
using nine bits long VLC tables is wasteful. Furthermore, there are only
seven VLC tables used, yet the code up until now made it look like there
should be eight. This has been corrected, too.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/av1dec: Check for unset obu instead of crashing
Michael Niedermayer [Sun, 25 Oct 2020 23:00:56 +0000 (00:00 +0100)]
avcodec/av1dec: Check for unset obu instead of crashing

Fixes: NULL pointer dereference
Fixes: 26550/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_AV1_fuzzer-5417762807349248
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/dirac_parser: do not offset AV_NOPTS_OFFSET
Michael Niedermayer [Fri, 23 Oct 2020 18:29:50 +0000 (20:29 +0200)]
avcodec/dirac_parser: do not offset AV_NOPTS_OFFSET

Fixes: signed integer overflow: -9223372036854775807 - 48000 cannot be represented in type 'long long'
Fixes: 26521/clusterfuzz-testcase-minimized-ffmpeg_dem_DIRAC_fuzzer-5635536506847232
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Lynne <dev@lynne.ee>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/mobiclip: Use smaller type for codes
Andreas Rheinhardt [Sat, 24 Oct 2020 11:01:07 +0000 (13:01 +0200)]
avcodec/mobiclip: Use smaller type for codes

Even though the length of these codes is > 8, only the lowest seven bits
are ever set (because the long codes are on the left of the tree), so
one can use an uint8_t for them, saving space.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/mobiclip: Use static VLC tables
Andreas Rheinhardt [Sat, 24 Oct 2020 10:50:17 +0000 (12:50 +0200)]
avcodec/mobiclip: Use static VLC tables

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/mobiclip: Don't use too big max_depth, inline constants
Andreas Rheinhardt [Sat, 24 Oct 2020 10:26:51 +0000 (12:26 +0200)]
avcodec/mobiclip: Don't use too big max_depth, inline constants

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/mobiclip: Don't check for errors for complete VLCs
Andreas Rheinhardt [Sat, 24 Oct 2020 10:15:58 +0000 (12:15 +0200)]
avcodec/mobiclip: Don't check for errors for complete VLCs

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/mobiclip: Reduce size of VLCs, inline constants
Andreas Rheinhardt [Sat, 24 Oct 2020 09:41:37 +0000 (11:41 +0200)]
avcodec/mobiclip: Reduce size of VLCs, inline constants

The longest motion vector VLC for mobiclip is six bits long, so using
eight bits for the VLC table is wasteful. Furthermore, the length can be
inlined.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/rv34: Simplify getting right VLC
Andreas Rheinhardt [Thu, 22 Oct 2020 10:02:11 +0000 (12:02 +0200)]
avcodec/rv34: Simplify getting right VLC

For both RealVideo 3.0 as well as RealVideo 4.0 the VLC table to use
depends upon the slice's quantization parameter; these are coded on five
bits in the bitstream and are therefore in the range of 0..31; yet the
last element here is not valid and therefore the quantizer is clipped to
the range 0..30 to get the index. But this is unnecessary: One can just
add one element more to the relevant array to avoid the clipping.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/rv34: Don't needlessly copy VLC length and symbol arrays
Andreas Rheinhardt [Thu, 22 Oct 2020 08:57:40 +0000 (10:57 +0200)]
avcodec/rv34: Don't needlessly copy VLC length and symbol arrays

Most of the VLCs used by RealVideo 3 and 4 obey three simple rules:
Shorter codes are on the left of the tree, for each length, the symbols
are ascending from left to right and the symbols either form a
permutation of 1..size or 0..(size - 1). For the latter case, one just
needs to store the length of each symbol and create the codes according
to the other rules; no explicit code or symbol array must be stored.
The former case is also treated in much the same way by artificially
assigning a length of zero to the symbol 0; when a length of zero was
encountered, the element was ignored except that the symbol counter was
still incremented. If the length was nonzero, the symbol would be
assigned via the symbol counter and the length copied over into a new
array.

Yet this is unnecessary, as ff_init_vlc_sparse() follows exactly the
same pattern: If a length of zero is encountered, the element is ignored
and only the symbol counter incremented. So one can directly forward the
length array and also need not create a symbol table oneself, because
ff_init_vlc_sparse() will infer the same symbol table in this case.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/vp3: Make parsing Theora Huffman tables more spec-compliant
Andreas Rheinhardt [Tue, 20 Oct 2020 06:31:17 +0000 (08:31 +0200)]
avcodec/vp3: Make parsing Theora Huffman tables more spec-compliant

Theora allows to use custom Huffman tables which are coded in the
bitstream as a tree: Whether the next node is a leaf or not is coded
in a bit; each node itself contains a five bit token. Each tree can
contain at most 32 leafs; typically they contain exactly 32 with the 32
symbols forming a permutation of 0..31. Yet the standard does not impose
either of these requirements. It explicitly allows less than 32 leafs
and multiple codes with the same token.

But our decoder used an algorithm that required the codes->token mapping
to be injective and that also presumed that there be at least two leafs:
Instead of using an array for codes, tokens and code lengths, the
decoder only had arrays for codes and code lengths. The code and length
for a given token were stored in entry[token]. As no symbols table was
used when initializing the VLC, the default one applied and therefore
the entry[token] got the symbol token (if the length of said entry is >0).
Yet if multiple codes had the same token, the codes and lengths from the
later token would overwrite the earlier codes and lengths.

Furthermore, less than 32 leafs could also lead to problems: Namely if
this was not the first time Huffman tables have been parsed in which
case the array is not zeroed initially so that old entries could make
the new table invalid.

libtheora seems to always use 32 leafs and no duplicate tokens; I am not
aware of any existing valid files that do not.

This is fixed by using a codes, symbols and lengths array when
initializing the VLC. In order to reduce the amount of stuff kept in the
context only the symbols and lengths (which both fit into an uint8_t)
are kept in the context; the codes are derived from the lengths
immediately before creating the tables.

There is now only one thing left which is not spec-compliant: Trees with
only one node (which has length zero) are not supported by
ff_init_vlc_sparse() yet.

Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agotests/audiomatch: removes a warning when compiling tests/audiomatch
Steven Liu [Mon, 19 Oct 2020 06:05:36 +0000 (14:05 +0800)]
tests/audiomatch: removes a warning when compiling tests/audiomatch

the warning message:
warning: using floating point absolute value function
'fabs' when argument is of integer type
use FFABS to set the absolute value.

Signed-off-by: liuqi05 <liuqi05@kuaishou.com>
3 years agoavcodec/adpcm_ima_cunning: document origin of tables
Zane van Iperen [Sat, 24 Oct 2020 05:47:55 +0000 (15:47 +1000)]
avcodec/adpcm_ima_cunning: document origin of tables

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agolavfi/Makefile: Remove opencl object files when calling make clean.
Carl Eugen Hoyos [Sun, 25 Oct 2020 20:18:34 +0000 (21:18 +0100)]
lavfi/Makefile: Remove opencl object files when calling make clean.

3 years agofate: add adpcm_ima_alp encoding test
Zane van Iperen [Fri, 23 Oct 2020 08:23:12 +0000 (18:23 +1000)]
fate: add adpcm_ima_alp encoding test

3 years agoavformat: add alp muxer
Zane van Iperen [Wed, 21 Oct 2020 13:20:20 +0000 (23:20 +1000)]
avformat: add alp muxer

3 years agoavcodec: add adpcm_ima_alp encoder
Zane van Iperen [Fri, 23 Oct 2020 08:14:59 +0000 (18:14 +1000)]
avcodec: add adpcm_ima_alp encoder

3 years agoavformat/alp: fix handling of TUN files
Zane van Iperen [Fri, 23 Oct 2020 11:35:53 +0000 (21:35 +1000)]
avformat/alp: fix handling of TUN files

Sample rate is always 22050. Verified by trying various files in the game.

3 years agoavfilter/vf_v360: make commands always do relative rotation
Paul B Mahol [Sun, 25 Oct 2020 11:46:29 +0000 (12:46 +0100)]
avfilter/vf_v360: make commands always do relative rotation

3 years agotools/target_dec_fuzzer: adjust threshold for wmalossless
Michael Niedermayer [Tue, 20 Oct 2020 16:48:08 +0000 (18:48 +0200)]
tools/target_dec_fuzzer: adjust threshold for wmalossless

Fixes: Timeout (>30sec -> 0.5sec)
Fixes: 26351/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WMALOSSLESS_fuzzer-5191487740182528
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/rmdec: Make expected_len 64bit
Michael Niedermayer [Tue, 20 Oct 2020 19:32:59 +0000 (21:32 +0200)]
avformat/rmdec: Make expected_len 64bit

Fixes: signed integer overflow: 1347551268 * 14 cannot be represented in type 'int'
Fixes: 26458/clusterfuzz-testcase-minimized-ffmpeg_dem_RM_fuzzer-5655364324032512
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/pcm: Check block_align
Michael Niedermayer [Tue, 20 Oct 2020 19:44:32 +0000 (21:44 +0200)]
avformat/pcm: Check block_align

Fixes: signed integer overflow: 321 * 8746632 cannot be represented in type 'int'
Fixes: 26461/clusterfuzz-testcase-minimized-ffmpeg_dem_PVF_fuzzer-6326427831762944
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/lrcdec: Clip timestamps
Michael Niedermayer [Tue, 20 Oct 2020 19:55:13 +0000 (21:55 +0200)]
avformat/lrcdec: Clip timestamps

Fixes: signed integer overflow: 7111111111111531010 - -7335632962598013506 cannot be represented in type 'long'
Fixes: 26463/clusterfuzz-testcase-minimized-ffmpeg_dem_LRC_fuzzer-6015558333759488
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 agoavutil/mathematics: Use av_sat_add64() for the last addition in av_add_stable()
Michael Niedermayer [Tue, 20 Oct 2020 20:10:39 +0000 (22:10 +0200)]
avutil/mathematics: Use av_sat_add64() for the last addition in av_add_stable()

Fixes: signed integer overflow: 9223372036854770375 + 5450 cannot be represented in type 'long'
Fixes: 26471/clusterfuzz-testcase-minimized-ffmpeg_dem_MXG_fuzzer-6229617557635072
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 agotests/fate/hevc: Add test for 3fbf8737923ac49754946a2505367630544b87f1
Michael Niedermayer [Thu, 22 Oct 2020 09:20:36 +0000 (11:20 +0200)]
tests/fate/hevc: Add test for 3fbf8737923ac49754946a2505367630544b87f1

Tested-on: x86-32/64/ARM/MIPS Linux, Mingw/WINE 32/64
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/pgxdec: Check depth more completely
Michael Niedermayer [Thu, 8 Oct 2020 19:19:14 +0000 (21:19 +0200)]
avcodec/pgxdec: Check depth more completely

Fixes: shift exponent -1 is negative
Fixes: 26107/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_PGX_fuzzer-5378790047612928
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/electronicarts: Check for EOF in each iteration of the loop in ea_read_packet()
Michael Niedermayer [Sat, 24 Oct 2020 17:24:30 +0000 (19:24 +0200)]
avformat/electronicarts: Check for EOF in each iteration of the loop in ea_read_packet()

Fixes: timeout(>20sec -> 1ms)
Fixes: 26526/clusterfuzz-testcase-minimized-ffmpeg_dem_EA_fuzzer-5672328069120000
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agotools/target_dem_fuzzer: Limit max blocks
Michael Niedermayer [Fri, 23 Oct 2020 16:54:51 +0000 (18:54 +0200)]
tools/target_dem_fuzzer: Limit max blocks

With a IO block size of 1 byte potentially megabytes are quite slow to read, thus
limit the number

Fixes: 26511/clusterfuzz-testcase-minimized-ffmpeg_dem_NUV_fuzzer-5679249073373184
Fixes: 26517/clusterfuzz-testcase-minimized-ffmpeg_dem_XMV_fuzzer-6316634501021696
Fixes: 26518/clusterfuzz-testcase-minimized-ffmpeg_dem_WSVQA_fuzzer-485568285324083
Fixes: 26525/clusterfuzz-testcase-minimized-ffmpeg_dem_MSNWC_TCP_fuzzer-5121987011411968
Fixes: 26538/clusterfuzz-testcase-minimized-ffmpeg_dem_DHAV_fuzzer-5441800598454272
Fixes: OOM
Fixes: Timeout
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/ifv: Check that total frames do not overflow
Michael Niedermayer [Sat, 17 Oct 2020 21:29:42 +0000 (23:29 +0200)]
avformat/ifv: Check that total frames do not overflow

Fixes: Infinite loop
Fixes: 26392/clusterfuzz-testcase-minimized-ffmpeg_dem_GIF_fuzzer-5713658237419520
Fixes: 26435/clusterfuzz-testcase-minimized-ffmpeg_dem_SUBVIEWER_fuzzer-6548251853193216
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 agoavutil/common: Implement av_sat_add64_c() with fewer branches
Michael Niedermayer [Mon, 19 Oct 2020 08:20:26 +0000 (10:20 +0200)]
avutil/common: Implement av_sat_add64_c() with fewer branches

No benchmark because this is not used in any speed relevant pathes nor is it
used where __builtin_add_overflow is available.
So I do not know how to realistically benchmark it.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/vp9dsp_template: Fix some overflows in iadst8_1d()
Michael Niedermayer [Sun, 18 Oct 2020 20:04:14 +0000 (22:04 +0200)]
avcodec/vp9dsp_template: Fix some overflows in iadst8_1d()

Fixes: signed integer overflow: 190587 * 11585 cannot be represented in type 'int'
Fixes: 26407/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VP9_fuzzer-5086348408782848
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/fits: Check bscale
Michael Niedermayer [Sun, 18 Oct 2020 19:54:14 +0000 (21:54 +0200)]
avcodec/fits: Check bscale

Fixes: division by 0
Fixes: 26208/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FITS_fuzzer-6270472117026816
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/nistspheredec: Check bps
Michael Niedermayer [Mon, 19 Oct 2020 08:53:31 +0000 (10:53 +0200)]
avformat/nistspheredec: Check bps

Fixes: left shift of 1111111190 by 3 places cannot be represented in type 'int'
Fixes: 26437/clusterfuzz-testcase-minimized-ffmpeg_dem_NISTSPHERE_fuzzer-4886896091856896
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/jacosubdec: Use 64bit inside get_shift()
Michael Niedermayer [Mon, 19 Oct 2020 15:29:01 +0000 (17:29 +0200)]
avformat/jacosubdec: Use 64bit inside get_shift()

Fixes: signed integer overflow: 111111111 * 30 cannot be represented in type 'int'
Fixes: 26448/clusterfuzz-testcase-minimized-ffmpeg_dem_JACOSUB_fuzzer-5638440374501376
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/genh: Check block_align
Michael Niedermayer [Mon, 19 Oct 2020 15:05:01 +0000 (17:05 +0200)]
avformat/genh: Check block_align

Fixes: infinite loop
Fixes: 26440/clusterfuzz-testcase-minimized-ffmpeg_dem_GENH_fuzzer-5632134020333568
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/mvi: Check count for overflow
Michael Niedermayer [Mon, 19 Oct 2020 15:39:30 +0000 (17:39 +0200)]
avformat/mvi: Check count for overflow

Fixes: left shift of 21378748 by 10 places cannot be represented in type 'int'
Fixes: 26449/clusterfuzz-testcase-minimized-ffmpeg_dem_MVI_fuzzer-5680463374712832
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/mpeg4videodec: Use smallest max_depth in get_vlc2()
Andreas Rheinhardt [Fri, 23 Oct 2020 18:00:27 +0000 (20:00 +0200)]
avcodec/mpeg4videodec: Use smallest max_depth in get_vlc2()

The longest code here is 12 bits long and can be read in two attempts.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/imc: Inline constants
Andreas Rheinhardt [Fri, 23 Oct 2020 15:47:33 +0000 (17:47 +0200)]
avcodec/imc: Inline constants

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/magicyuv: Check slice size before reading flags and pred
Michael Niedermayer [Fri, 23 Oct 2020 18:39:33 +0000 (20:39 +0200)]
avcodec/magicyuv: Check slice size before reading flags and pred

Fixes: heap-buffer-overflow
Fixes: 26487/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MAGICYUV_fuzzer-5742553675333632
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/wmadec: Don't check for errors for complete VLC tables
Andreas Rheinhardt [Thu, 22 Oct 2020 18:41:46 +0000 (20:41 +0200)]
avcodec/wmadec: Don't check for errors for complete VLC tables

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/wma: Remove unused array
Andreas Rheinhardt [Thu, 22 Oct 2020 18:21:11 +0000 (20:21 +0200)]
avcodec/wma: Remove unused array

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/asfdec_f: Check for negative ext_len
Michael Niedermayer [Fri, 16 Oct 2020 09:13:19 +0000 (11:13 +0200)]
avformat/asfdec_f: Check for negative ext_len

Fixes: Infinite loop
Fixes: 26376/clusterfuzz-testcase-minimized-ffmpeg_dem_PCM_U32LE_fuzzer-6050518830678016
Fixes: 26377/clusterfuzz-testcase-minimized-ffmpeg_dem_TY_fuzzer-4838195726123008
Fixes: 26384/clusterfuzz-testcase-minimized-ffmpeg_dem_G729_fuzzer-5173450337157120
Fixes: 26396/clusterfuzz-testcase-minimized-ffmpeg_dem_PCM_S24BE_fuzzer-5071092206796800
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/bethsoftvid: Check image dimensions before use
Michael Niedermayer [Sat, 17 Oct 2020 20:19:58 +0000 (22:19 +0200)]
avformat/bethsoftvid: Check image dimensions before use

Fixes: signed integer overflow: 55255 * 53207 cannot be represented in type 'int'
Fixes: 26387/clusterfuzz-testcase-minimized-ffmpeg_dem_AVS2_fuzzer-5684222226071552
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/genh: Check block_align for how it will be used in SDX2_DPCM
Michael Niedermayer [Sat, 17 Oct 2020 21:40:57 +0000 (23:40 +0200)]
avformat/genh: Check block_align for how it will be used in SDX2_DPCM

Fixes: signed integer overflow: 19922944 * 1024 cannot be represented in type 'int'
Fixes: 26402/clusterfuzz-testcase-minimized-ffmpeg_dem_VMD_fuzzer-5745470053548032
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/au: Check for EOF in au_read_annotation()
Michael Niedermayer [Thu, 15 Oct 2020 20:19:32 +0000 (22:19 +0200)]
avformat/au: Check for EOF in au_read_annotation()

Fixes: Timeout (too looong -> 1 ms)
Fixes: 26366/clusterfuzz-testcase-minimized-ffmpeg_dem_SDX_fuzzer-5655584843759616
Fixes: 26391/clusterfuzz-testcase-minimized-ffmpeg_dem_ALP_fuzzer-5484026133217280
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agotools/target_dec_fuzzer: Adjust threshold for opus
Michael Niedermayer [Sun, 4 Oct 2020 17:14:40 +0000 (19:14 +0200)]
tools/target_dec_fuzzer: Adjust threshold for opus

Fixes: Timeout (12sec -> 3sec)
Fixes: 24549/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_LIBOPUS_fuzzer-6211170349088768
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/vividas: Check for zero v_size
Michael Niedermayer [Wed, 21 Oct 2020 22:37:30 +0000 (00:37 +0200)]
avformat/vividas: Check for zero v_size

Fixes: SEGV on unknown address 0x000000000000
Fixes: 26482/clusterfuzz-testcase-minimized-ffmpeg_dem_VIVIDAS_fuzzer-4905102324006912
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/segafilm: Do not assume AV_CODEC_ID_NONE is 0
Michael Niedermayer [Thu, 22 Oct 2020 16:18:43 +0000 (18:18 +0200)]
avformat/segafilm: Do not assume AV_CODEC_ID_NONE is 0

Suggested-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/segafilm: Check that there is a stream
Michael Niedermayer [Wed, 21 Oct 2020 22:37:25 +0000 (00:37 +0200)]
avformat/segafilm: Check that there is a stream

Fixes: assertion failure
Fixes: 26472/clusterfuzz-testcase-minimized-ffmpeg_dem_SEGAFILM_fuzzer-5759751591559168
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/udp: cosmetics
Limin Wang [Sat, 10 Oct 2020 14:35:32 +0000 (22:35 +0800)]
avformat/udp: cosmetics

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agoavformat/udp: clarify option description for timeout unit
Limin Wang [Sat, 10 Oct 2020 14:11:12 +0000 (22:11 +0800)]
avformat/udp: clarify option description for timeout unit

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agoavformat/rtsp: reuse POLLING_TIME and remove POLL_TIMEOUT_MS
Limin Wang [Sat, 10 Oct 2020 13:50:08 +0000 (21:50 +0800)]
avformat/rtsp: reuse POLLING_TIME and remove POLL_TIMEOUT_MS

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agoavformat/rtsp: support for listen_timeout option for sdp
Limin Wang [Sat, 10 Oct 2020 13:30:21 +0000 (21:30 +0800)]
avformat/rtsp: support for listen_timeout option for sdp

Now the listen timeout is hardcoded(10s).
How to test(30s timeout):
./ffprobe  -listen_timeout 30 -protocol_whitelist rtp,udp,file -i test.sdp

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agoavformat/rtpproto: support for rtp read timeout
Limin Wang [Sat, 10 Oct 2020 12:35:44 +0000 (20:35 +0800)]
avformat/rtpproto: support for rtp read timeout

then we can set the rtp read timeout instead of infinite timeout.

How to test(5s timeout):
./ffprobe -i rtp://192.168.1.67:1234?timeout=5000000

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agolibavformat/hls: use local var url for log to avoid crash
bevis [Mon, 19 Oct 2020 02:07:57 +0000 (10:07 +0800)]
libavformat/hls: use local var url for log to avoid crash

During operation, the user exits and interrupts,
causing pls->segment to be released,
resulting in a null pointer crash

Signed-off-by: bevis <javashu2012@gmail.com>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
3 years agoavcodec/nvenc: removed unused and deprecated field
Timo Rothenpieler [Wed, 21 Oct 2020 16:47:30 +0000 (18:47 +0200)]
avcodec/nvenc: removed unused and deprecated field

3 years agoavcodec/nvenc: reduce automated use of deprecated modes
Timo Rothenpieler [Wed, 21 Oct 2020 16:45:52 +0000 (18:45 +0200)]
avcodec/nvenc: reduce automated use of deprecated modes

3 years agoavcodec/nvenc: mark newly deprecated rc modes
Timo Rothenpieler [Wed, 21 Oct 2020 16:17:08 +0000 (18:17 +0200)]
avcodec/nvenc: mark newly deprecated rc modes

3 years agoavcodec/nvenc: use alias to provide deprecated profiles
Timo Rothenpieler [Wed, 21 Oct 2020 15:52:43 +0000 (17:52 +0200)]
avcodec/nvenc: use alias to provide deprecated profiles

3 years agoavformat/wtvdec: Check dir_length
Michael Niedermayer [Mon, 19 Oct 2020 15:59:53 +0000 (17:59 +0200)]
avformat/wtvdec: Check dir_length

Fixes: Infinite loop
Fixes: 26445/clusterfuzz-testcase-minimized-ffmpeg_dem_WTV_fuzzer-5125558331244544
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/ffmetadec: finalize AVBPrint on errors
Michael Niedermayer [Tue, 20 Oct 2020 20:56:13 +0000 (22:56 +0200)]
avformat/ffmetadec: finalize AVBPrint on errors

Fixes: memleak
Fixes: 26450/clusterfuzz-testcase-minimized-ffmpeg_dem_FFMETADATA_fuzzer-6249850443923456
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/on2avc: Remove redundant code for freeing
Andreas Rheinhardt [Mon, 19 Oct 2020 04:03:18 +0000 (06:03 +0200)]
avcodec/on2avc: Remove redundant code for freeing

This decoder has the FF_CODEC_CAP_INIT_CLEANUP set.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/on2avc: Use least max_depth for get_vlc2()
Andreas Rheinhardt [Sun, 18 Oct 2020 05:46:16 +0000 (07:46 +0200)]
avcodec/on2avc: Use least max_depth for get_vlc2()

The longest codes of any VLC codebooks are 18 bits long and the VLC
tables itself use 9 bits; therefore it is sufficient to read twice from
the table, yet this has been done thrice.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/on2avc: Unify initializing quad and pair VLCs
Andreas Rheinhardt [Sun, 18 Oct 2020 05:20:43 +0000 (07:20 +0200)]
avcodec/on2avc: Unify initializing quad and pair VLCs

Up until now, quad VLCs are initialized with codes of type uint32_t,
pair VLCs with codes of type uint16_t. There were two separate loops in
the decoder's init function for each type of VLC. This commit unifies
this: The type of the codes are now passed in as void * and the actual
size of the codes is obtained from a table. This approach also allows to
use the smallest type for each VLC code table: some quad tables actually
fitted in uint16_t. This allows to remove about 7KB from the binary.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/on2avcdata: Deduplicate symbol tables
Andreas Rheinhardt [Sun, 18 Oct 2020 04:32:05 +0000 (06:32 +0200)]
avcodec/on2avcdata: Deduplicate symbol tables

Saves about 10KB.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/vp3: Unify initializing and freeing VLC tables
Andreas Rheinhardt [Mon, 19 Oct 2020 19:25:47 +0000 (21:25 +0200)]
avcodec/vp3: Unify initializing and freeing VLC tables

Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/vp3: Check allocations of VLCs
Andreas Rheinhardt [Mon, 19 Oct 2020 18:59:58 +0000 (20:59 +0200)]
avcodec/vp3: Check allocations of VLCs

It would lead to crashs lateron if they failed.

Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/vp3: Fix memleak upon init failure
Andreas Rheinhardt [Mon, 19 Oct 2020 18:23:54 +0000 (20:23 +0200)]
avcodec/vp3: Fix memleak upon init failure

Up until now, there was no cleanup in case initializing the Theora VLC
tables failed, leading to memleaks. This commit gets rid of them by
setting the FF_CODEC_CAP_INIT_CLEANUP flag for all decoders in vp3.c;
this also allows to remove some (now redundant) cleanup code.

Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>