Michael Niedermayer
bb1d2cf898
avcodec/clearvideo: Check tile_size to be not too large
...
Fixes: left shift of 1 by 31 places cannot be represented in type 'int'
Fixes: 35023/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CLEARVIDEO_fuzzer-6740166587842560
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
(cherry picked from commit 11fac9613e )
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2021-09-08 21:31:50 +02:00
Michael Niedermayer
a6bd1bdd12
avcodec/clearvideo: Check for 0 tile_shift
...
Fixes: shift exponent -1 is negative
Fixes: 33401/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CLEARVIDEO_fuzzer-5908683596890112
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
(cherry picked from commit 63e75e09ae )
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2021-06-18 20:53:56 +02:00
Anton Khirnov
e15371061d
lavu/mem: move the DECLARE_ALIGNED macro family to mem_internal on next+1 bump
...
They are not properly namespaced and not intended for public use.
2021-01-01 14:14:57 +01:00
Andreas Rheinhardt
f86dcd007f
avcodec/clearvideo: Make VLC tables static
...
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com >
2020-12-08 17:51:45 +01:00
Andreas Rheinhardt
e67e4d43bd
avcodec/clearvideo: Apply VLC offset during init
...
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com >
2020-12-08 17:51:45 +01:00
Andreas Rheinhardt
222cc6ea26
avcodec/clearvideo: Use minimal max_depth in get_vlc2()
...
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com >
2020-12-08 17:51:45 +01:00
Andreas Rheinhardt
c880889cfd
avcodec/clearvideo: Inline constants
...
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com >
2020-12-08 17:51:45 +01:00
Andreas Rheinhardt
ef9652bab2
avcodec/clearvideo: Improve handling of VLC escape values
...
Both the motion vector as well as the bias VLCs have an escape code;
for the motion vectors, this value depended on the specific VLC table,
whereas all the bias VLCs used the same value; the escape value has not
been inlined in the latter case.
But for both kinds of VLCs there are lots of values that are unused for
all the VLCs of each kind and each of these can be used as common escape
value, thus allowing to inline the escape value. This commit implements
this.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com >
2020-12-08 17:51:45 +01:00
Andreas Rheinhardt
1d3ec27bd5
avcodec/clearvideo: Avoid huge VLC length tables
...
After the motion vector and bias values tables have been reordered so
that the codes are ordered from left to right, it emerged that the
length of these entries are actually ascending for every table.
Therefore it is possible to encode them in a run-length style and create
the actual length tables during runtime. This commit implements this.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com >
2020-12-08 17:51:45 +01:00
Andreas Rheinhardt
e97081a624
avcodec/clearvideo: Avoid code duplication when initializing VLCs
...
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com >
2020-12-08 17:51:45 +01:00
Andreas Rheinhardt
c82a559e6f
avcodec/clearvideo: Avoid code tables for initializing VLCs
...
The ClearVideo decoder uses VLC tables that are initialized at runtime
from static length, symbol and codes tables. Yet the code tables can be
omitted by subjecting all of these tables to the permutation that orders
the codes from left to right in the tree. After this is done, the codes
can be easily computed at runtime from the lengths and therefore
omitted. This saves about 10KB.
Only one minor complication is encountered when doing so: The tree
corresponding to the AC VLC codes is incomplete; but this can be
handled by adding an entry with negative length.
Furthermore, there are also VLCs that are only initialized with lengths
and codes tables with codes of type uint16_t. These have also been
switched to ff_init_vlc_from_lengths() as this means that one can
replace the uint16_t codes tables with uint8_t symbols tables.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com >
2020-12-08 17:51:45 +01:00
Andreas Rheinhardt
1d658e65ab
avcodec/clearvideo: Don't check for errors for complete VLC
...
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com >
2020-10-29 11:22:35 +01:00
James Almer
9ea6d2149e
avcodec/decode: add a flags parameter to ff_reget_buffer()
...
Some decoders may not need a writable buffer in some specific cases, but only
a reference to the existing buffer with updated frame properties instead, for
the purpose of returning duplicate frames. For this, the
FF_REGET_BUFFER_FLAG_READONLY flag is added, which will prevent potential
allocations and buffer copies when they are not needed.
Signed-off-by: James Almer <jamrial@gmail.com >
2019-09-04 10:07:12 -03:00
Michael Niedermayer
5dc94924d0
avcodec/clearvideo: fix invalid shift in tile size check
...
Fixes: left shift of 1 by 31 places cannot be represented in type 'int'
Fixes: 15631/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CLEARVIDEO_fuzzer-5690110605000704
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2019-08-03 17:44:23 +02:00
Michael Niedermayer
41f93f9411
avcodec/clearvideo: Check remaining data in P frames
...
Fixes: Timeout (19sec -> 419msec)
Fixes: 13411/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CLEARVIDEO_fuzzer-5733153811988480
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2019-03-17 11:35:00 +01:00
Michael Niedermayer
7aaab127be
avcodec/clearvideo: Check remaining input bits in P macro block loop
...
Fixes: Timeout
Fixes: 11083/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CLEARVIDEO_fuzzer-5657180351496192
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2018-12-14 23:24:20 +01:00
Paul B Mahol
f09fdf2d9c
avcodec/clearvideo: display warning if decoder overreads input
...
Signed-off-by: Paul B Mahol <onemda@gmail.com >
2018-04-24 17:20:26 +02:00
Paul B Mahol
e34751cb8a
avcodec/clearvideo: do not try to return frame when it is same as previous one
...
Signed-off-by: Paul B Mahol <onemda@gmail.com >
2018-04-24 17:10:26 +02:00
Carl Eugen Hoyos
916632dfbb
lavc/clearvideo: Allow decoding without extradata.
2018-04-07 22:13:20 +02:00
James Almer
fefe47b701
avcodec/clearvideo: fix mixed code and declarations
...
Signed-off-by: James Almer <jamrial@gmail.com >
2018-04-04 00:43:01 -03:00
Paul B Mahol
a874586994
avcodec/clearvideo: add inter-frame decoding
...
Signed-off-by: Paul B Mahol <onemda@gmail.com >
2018-04-03 17:28:16 +02:00
James Almer
269ed71e93
Merge commit '189157c3fc8eeb691e3684b09d971eb5ddb47d5b'
...
* commit '189157c3fc8eeb691e3684b09d971eb5ddb47d5b':
Add ClearVideo decoder
See a63496cc88
Merged-by: James Almer <jamrial@gmail.com >
2017-10-30 15:49:38 -03:00
Michael Niedermayer
f0efd795f4
avcodec/clearvideo: Only output a frame if one is coded in the packet
...
Fixes: Timeout (183 ms instead of about 20 sec)
Fixes: 3147/clusterfuzz-testcase-4870592182353920
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2017-09-11 12:23:59 +02:00
Michael Niedermayer
43c394dcae
avcodec/clearvideo: Check buf_size before decoding frame
...
Fixes; Timeout
Fixes: 1826/clusterfuzz-testcase-minimized-5728569256837120
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2017-05-26 01:38:03 +02:00
Michael Niedermayer
28230a690e
avcodec/clearvideo: Fix runtime error: signed integer overflow: 181 * 18050756 cannot be represented in type 'int'
...
Fixes: 1417/clusterfuzz-testcase-minimized-6606778030620672
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2017-05-09 00:42:20 +02:00
Michael Niedermayer
c0ffcb34c7
avcodec/clearvideo: Fix multiple runtime error: left shift of negative value -1024
...
Fixes: 1360/clusterfuzz-testcase-minimized-5606472043986944
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/targets/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2017-05-06 12:17:54 +02:00
Kostya Shishkov
189157c3fc
Add ClearVideo decoder
...
Only I-frames are decoded for now.
Signed-off-by: Diego Biurrun <diego@biurrun.de >
2017-04-25 15:39:10 +02:00
Michael Niedermayer
fe46d92c15
avcodec/clearvideo: Do not lose the return code of decode_mb()
...
Fixes CID1401671
Reviewed-by: Paul B Mahol <onemda@gmail.com >
Reviewed-by: Nicolas George <george@nsup.org >
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2017-03-30 23:35:18 +02:00
James Almer
f5c8d004c2
avcodec: stop using deprecated codec flags
...
Signed-off-by: James Almer <jamrial@gmail.com >
2017-03-25 21:37:05 -03:00
Kostya Shishkov
a63496cc88
avcodec: add ClearVideo decoder
...
Only I-frames are decoded for now.
Signed-off-by: Paul B Mahol <onemda@gmail.com >
2017-03-02 11:39:54 +01:00