Andreas Rheinhardt
21b23ceab3
avcodec: Make init-threadsafety the default
...
and remove FF_CODEC_CAP_INIT_THREADSAFE
All our native codecs are already init-threadsafe
(only wrappers for external libraries and hwaccels
are typically not marked as init-threadsafe yet),
so it is only natural for this to also be the default state.
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-18 20:04:59 +02:00
Andreas Rheinhardt
4243da4ff4
avcodec/codec_internal: Use union for FFCodec decode/encode callbacks
...
This is possible, because every given FFCodec has to implement
exactly one of these. Doing so decreases sizeof(FFCodec) and
therefore decreases the size of the binary.
Notice that in case of position-independent code the decrease
is in .data.rel.ro, so that this translates to decreased
memory consumption.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-04-05 20:02:37 +02:00
Andreas Rheinhardt
20f9727018
avcodec/codec_internal: Add FFCodec, hide internal part of AVCodec
...
Up until now, codec.h contains both public and private parts
of AVCodec. This exposes the internals of AVCodec to users
and leads them into the temptation of actually using them
and forces us to forward-declare structures and types that
users can't use at all.
This commit changes this by adding a new structure FFCodec to
codec_internal.h that extends AVCodec, i.e. contains the public
AVCodec as first member; the private fields of AVCodec are moved
to this structure, leaving codec.h clean.
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-03-21 01:33:09 +01:00
Andreas Rheinhardt
a688f3c13c
avcodec/internal: Move FF_CODEC_CAP_* to a new header codec_internal.h
...
Also move FF_CODEC_TAGS_END as well as struct AVCodecDefault.
This reduces the amount of files that have to include internal.h
(which comes with quite a lot of indirect inclusions), as e.g.
most encoders don't need it. It is furthemore in preparation
for moving the private part of AVCodec out of the public codec.h.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-03-21 01:33:09 +01:00
Andreas Rheinhardt
a247ac640d
avcodec: Constify AVCodecs
...
Given that the AVCodec.next pointer has now been removed, most of the
AVCodecs are not modified at all any more and can therefore be made
const (as this patch does); the only exceptions are the very few codecs
for external libraries that have a init_static_data callback.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2021-04-27 10:43:15 -03: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
Michael Niedermayer
7592e88bfe
avcodec/indeo4: Check dimensions in decode_pic_hdr()
...
Fixes: Timeout
Fixes: 9654/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_INDEO4_fuzzer-6289863463665664
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-09-03 00:01:32 +02:00
Michael Niedermayer
267ba2aa96
avcodec/indeo4: Check for end of bitstream in decode_mb_info()
...
Fixes: Timeout
Fixes: 8776/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_INDEO4_fuzzer-5361788798369792
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-07-04 12:15:10 +02:00
Michael Niedermayer
10c8521265
indeo4: Decode all or nothing of a band header.
...
This avoids inconsistent value combinations.
Alternatively it would be possible to add more checks and careful use of
temporary variables, but my try of this quickly seemed to become
a rather large change.
The disadvantage of this, is that the struct is copied back and forth.
Fixes: index 6 out of bounds for type 'const uint16_t [5][16]'
Fixes: 6557/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_INDEO4_fuzzer-4787296550256640
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-26 00:54:55 +02:00
Michael Niedermayer
a824685140
avcodec/ivi: Use av_image_check_size2()
...
Fixes OOM
Fixes: 1514/clusterfuzz-testcase-minimized-6437666243477504
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-12 20:36:13 +02:00
Michael Niedermayer
a3b5b60bdf
avcodec/indeo4: Check remaining data in Pic hdr extension parsing code
...
Fixes: Timeout
Fixes: 2115/clusterfuzz-testcase-minimized-6594111748440064
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-06-08 17:37:16 +02:00
Clément Bœsch
ae753dbd0d
Merge commit 'b668662939de3a02454cfc9ba3e6d10b87527a40'
...
* commit 'b668662939de3a02454cfc9ba3e6d10b87527a40':
get_bits: Move BITSTREAM_READER_LE definition before all relevant #includes
The merge commit also includes changes for libavcodec/interplayacm.c and
libavcodec/truemotion2rt.c
Merged-by: Clément Bœsch <clement@stupeflix.com>
2016-06-29 11:35:10 +02:00
Diego Biurrun
b668662939
get_bits: Move BITSTREAM_READER_LE definition before all relevant #includes
...
This avoids the danger that get_bits.h might get indirectly #included before
BITSTREAM_READER_LE is defined.
Also sort headers into canonical order where appropriate.
2016-06-07 13:09:57 +02:00
Derek Buitenhuis
d9357332ae
Merge commit '64250d94b74d3fd47cc8b1611f48daf6a6ed804a'
...
* commit '64250d94b74d3fd47cc8b1611f48daf6a6ed804a':
indeo4: Consistently initialize variables
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-04-17 18:53:11 +01:00
Derek Buitenhuis
1117d6f4b1
Merge commit '6202e2fede75df92cbc374a3f7d6893d0c5ac721'
...
* commit '6202e2fede75df92cbc374a3f7d6893d0c5ac721':
indeo4: Rework stream analysis report
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-04-17 18:51:58 +01:00
Vittorio Giovara
64250d94b7
indeo4: Consistently initialize variables
...
Avoid using multiple variables for the same purpose.
2016-03-22 16:04:01 -04:00
Vittorio Giovara
6202e2fede
indeo4: Rework stream analysis report
...
* Change log level from error to debug
* Print report after the first decoded frame, not at the end of decoding
* Drop macro guard and use a context variable instead
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2016-03-22 16:03:52 -04:00
Michael Niedermayer
444e9874a7
Merge commit 'def97856de6021965db86c25a732d78689bd6bb0'
...
* commit 'def97856de6021965db86c25a732d78689bd6bb0':
lavc: AV-prefix all codec capabilities
Conflicts:
cmdutils.c
ffmpeg.c
ffplay.c
libavcodec/8svx.c
libavcodec/aacenc.c
libavcodec/ac3dec.c
libavcodec/adpcm.c
libavcodec/alac.c
libavcodec/atrac3plusdec.c
libavcodec/bink.c
libavcodec/dnxhddec.c
libavcodec/dvdec.c
libavcodec/dvenc.c
libavcodec/ffv1dec.c
libavcodec/ffv1enc.c
libavcodec/fic.c
libavcodec/flacdec.c
libavcodec/flacenc.c
libavcodec/flvdec.c
libavcodec/fraps.c
libavcodec/frwu.c
libavcodec/gifdec.c
libavcodec/h261dec.c
libavcodec/hevc.c
libavcodec/iff.c
libavcodec/imc.c
libavcodec/libopenjpegdec.c
libavcodec/libvo-aacenc.c
libavcodec/libvorbisenc.c
libavcodec/libvpxdec.c
libavcodec/libvpxenc.c
libavcodec/libx264.c
libavcodec/mjpegbdec.c
libavcodec/mjpegdec.c
libavcodec/mpegaudiodec_float.c
libavcodec/msmpeg4dec.c
libavcodec/mxpegdec.c
libavcodec/nvenc_h264.c
libavcodec/nvenc_hevc.c
libavcodec/pngdec.c
libavcodec/qpeg.c
libavcodec/ra288.c
libavcodec/rv10.c
libavcodec/s302m.c
libavcodec/sp5xdec.c
libavcodec/takdec.c
libavcodec/tiff.c
libavcodec/tta.c
libavcodec/utils.c
libavcodec/v210dec.c
libavcodec/vp6.c
libavcodec/vp9.c
libavcodec/wavpack.c
libavcodec/yop.c
Merged-by: Michael Niedermayer <michael@niedermayer.cc>
2015-07-27 22:50:18 +02:00
Vittorio Giovara
def97856de
lavc: AV-prefix all codec capabilities
...
Express bitfields more simply.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2015-07-27 15:24:58 +01:00
Michael Niedermayer
8f7b022c8c
Merge commit '6a85dfc830f51f1f5c2d36d4182d265c1ea3ba25'
...
* commit '6a85dfc830f51f1f5c2d36d4182d265c1ea3ba25':
lavc: Replace av_dlog and tprintf with internal macros
Conflicts:
libavcodec/aacdec.c
libavcodec/audio_frame_queue.c
libavcodec/bitstream.c
libavcodec/dcadec.c
libavcodec/dnxhddec.c
libavcodec/dvbsubdec.c
libavcodec/dvdec.c
libavcodec/dvdsubdec.c
libavcodec/get_bits.h
libavcodec/gifdec.c
libavcodec/h264.h
libavcodec/h264_cabac.c
libavcodec/h264_cavlc.c
libavcodec/h264_loopfilter.c
libavcodec/h264_refs.c
libavcodec/imc.c
libavcodec/interplayvideo.c
libavcodec/jpeglsdec.c
libavcodec/libopencore-amr.c
libavcodec/mjpegdec.c
libavcodec/mpeg12dec.c
libavcodec/mpegvideo_enc.c
libavcodec/mpegvideo_parser.c
libavcodec/pngdec.c
libavcodec/ratecontrol.c
libavcodec/rv10.c
libavcodec/svq1dec.c
libavcodec/vqavideo.c
libavcodec/wmadec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-20 04:10:10 +02:00
Vittorio Giovara
6a85dfc830
lavc: Replace av_dlog and tprintf with internal macros
2015-04-19 12:41:59 +01:00
Michael Niedermayer
98263d7515
Merge commit '23944d29a22a2cd602753b3705f73011c3bf0b18'
...
* commit '23944d29a22a2cd602753b3705f73011c3bf0b18':
indeo: Give Indeo4/5 shared code a more consistent name
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-03-30 20:39:08 +02:00
Diego Biurrun
23944d29a2
indeo: Give Indeo4/5 shared code a more consistent name
2015-03-30 17:49:05 +02:00
Michael Niedermayer
357168bcf6
Merge commit '5ec6d152e26c570c0a16ec72c1f354db95708179'
...
* commit '5ec6d152e26c570c0a16ec72c1f354db95708179':
indeo4: B-frames decoding
Conflicts:
libavcodec/ivi_common.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-27 02:05:22 +02:00
Dirk Ausserhaus
5ec6d152e2
indeo4: B-frames decoding
...
Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
2014-06-26 19:17:33 +02:00
Michael Niedermayer
b222e0773c
Merge commit 'e121ac634ba324a318f4a97f978dcfb48da6b735'
...
* commit 'e121ac634ba324a318f4a97f978dcfb48da6b735':
indeo45: use is_indeo4 context flag instead of checking codec ID
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-06-23 13:56:52 +02:00
Dirk Ausserhaus
e121ac634b
indeo45: use is_indeo4 context flag instead of checking codec ID
...
Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
2014-06-23 09:29:39 +02:00
Dirk Ausserhaus
f76e3669bb
Decode both parts of Indeo4 IP frames
...
Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
2014-06-01 08:53:27 +02:00
Dirk Ausserhaus
3df0d20028
Move Indeo4 frametypes into common header.
...
Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
2014-06-01 08:53:27 +02:00
Dirk Ausserhaus
8bfb4d72dd
avcodec/indeo4: Decode both parts of IP frames
...
Fixes part of Ticket845
av_frame_move_ref() idea by Anton Khirnov
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-30 13:49:42 +02:00
Dirk Ausserhaus
d24673a2c8
avcodec/indeo4: Move frametypes into common header.
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2014-05-30 13:49:25 +02:00
Michael Niedermayer
c3d5cd1ebf
Revert "Merge remote-tracking branch 'qatar/master'" ( 43dec5ef9a
)
...
Fixes out of array accesses
Fixes asan_static-oob_eb9812_5961_iv41.avi
This reverts the merge of c9ef6b0932
Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
2013-11-25 19:55:32 +01:00
Michael Niedermayer
43dec5ef9a
Merge remote-tracking branch 'qatar/master'
...
* qatar/master:
indeo4: Check the inherited quant_mat
Conflicts:
libavcodec/indeo4.c
See: 884efd4e09
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-13 10:38:51 +02:00
Michael Niedermayer
d3850ac5b9
Merge commit '0cb83c563848bf8f8365e7bd30e7e6b57ef360f0'
...
* commit '0cb83c563848bf8f8365e7bd30e7e6b57ef360f0':
indeo4: Check the block size if reusing the band configuration
Conflicts:
libavcodec/indeo4.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-13 10:19:15 +02:00
Luca Barbato
c9ef6b0932
indeo4: Check the inherited quant_mat
...
Invalidate it if not supported.
Sample-Id: 00000262-google
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2013-10-13 01:38:21 +02:00
Luca Barbato
0cb83c5638
indeo4: Check the block size if reusing the band configuration
...
Sample-Id: 00000287-google
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2013-10-13 01:38:20 +02:00
Michael Niedermayer
ee77140afa
Merge commit 'b2bed9325dbd6be0da1d91ffed3f513c40274fd2'
...
* commit 'b2bed9325dbd6be0da1d91ffed3f513c40274fd2':
cosmetics: Group .name and .long_name together in codec/format declarations
Conflicts:
libavcodec/8svx.c
libavcodec/alac.c
libavcodec/cljr.c
libavcodec/dnxhddec.c
libavcodec/dnxhdenc.c
libavcodec/dpxenc.c
libavcodec/dvdec.c
libavcodec/dvdsubdec.c
libavcodec/dvdsubenc.c
libavcodec/ffv1dec.c
libavcodec/flacdec.c
libavcodec/flvdec.c
libavcodec/fraps.c
libavcodec/frwu.c
libavcodec/g726.c
libavcodec/gif.c
libavcodec/gifdec.c
libavcodec/h261dec.c
libavcodec/h263dec.c
libavcodec/iff.c
libavcodec/imc.c
libavcodec/libopencore-amr.c
libavcodec/libopenjpegdec.c
libavcodec/libopenjpegenc.c
libavcodec/libspeexenc.c
libavcodec/libvo-amrwbenc.c
libavcodec/libvorbisenc.c
libavcodec/libvpxenc.c
libavcodec/libx264.c
libavcodec/libxavs.c
libavcodec/libxvid.c
libavcodec/ljpegenc.c
libavcodec/mjpegbdec.c
libavcodec/mjpegdec.c
libavcodec/mpeg12dec.c
libavcodec/mpeg4videodec.c
libavcodec/msmpeg4dec.c
libavcodec/pgssubdec.c
libavcodec/pngdec.c
libavcodec/pngenc.c
libavcodec/proresdec_lgpl.c
libavcodec/proresenc_kostya.c
libavcodec/ra144enc.c
libavcodec/rawdec.c
libavcodec/rv10.c
libavcodec/sp5xdec.c
libavcodec/takdec.c
libavcodec/tta.c
libavcodec/v210dec.c
libavcodec/vp6.c
libavcodec/wavpack.c
libavcodec/xbmenc.c
libavcodec/yop.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-10-04 12:34:23 +02:00
Diego Biurrun
b2bed9325d
cosmetics: Group .name and .long_name together in codec/format declarations
2013-10-03 23:32:01 +02:00
Thilo Borgmann
d814a839ac
Reinstate proper FFmpeg license for all files.
2013-08-30 15:47:38 +00:00
Michael Niedermayer
8e4ecd8774
Merge commit '28dda8a691f1c723a4a9365ab85f9625f1330096'
...
* commit '28dda8a691f1c723a4a9365ab85f9625f1330096':
indeo: Sanitize ff_ivi_init_planes fail paths
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-15 13:45:36 +02:00
Luca Barbato
28dda8a691
indeo: Sanitize ff_ivi_init_planes fail paths
...
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2013-07-15 11:29:59 +02:00
Michael Niedermayer
febbddbdd5
indeo4: print an error message if ref_mb is needed but unavailable
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-14 15:18:03 +02:00
Michael Niedermayer
76d0a6656b
indeo: print errors if transform and block size mismatch
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-14 14:20:42 +02:00
Michael Niedermayer
a8e5fac1fb
Merge remote-tracking branch 'qatar/master'
...
* qatar/master:
indeo: Bound-check before applying transform
Conflicts:
libavcodec/indeo4.c
libavcodec/indeo5.c
libavcodec/ivi_common.c
See: af38823709
, 0846719dd1
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-14 13:37:40 +02:00
Michael Niedermayer
ccb422a697
Merge commit 'cd78e934c246d1b2510f8fba0abfe40bb75795f6'
...
* commit 'cd78e934c246d1b2510f8fba0abfe40bb75795f6':
indeo4: Validate scantable dimension
See: 92f7f1db42
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-14 13:08:13 +02:00
Michael Niedermayer
8c0bb19522
Merge commit '6255ccf7d51c82ab79bf0cd47a921f572dda4489'
...
* commit '6255ccf7d51c82ab79bf0cd47a921f572dda4489':
indeo4: Check the quantization matrix index
Conflicts:
libavcodec/indeo4.c
See: 8a20774a24
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-14 12:43:45 +02:00
Michael Niedermayer
5462361937
Merge commit '8435bca087c0e79385763c51de009fd89390b6a5'
...
* commit '8435bca087c0e79385763c51de009fd89390b6a5':
indeo4: Do not access missing reference MV
Conflicts:
libavcodec/indeo4.c
See: 5216245a
, aae44fb4
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-14 12:38:54 +02:00
Luca Barbato
dc79685195
indeo: Bound-check before applying transform
...
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2013-07-13 19:11:18 +02:00
Luca Barbato
cd78e934c2
indeo4: Validate scantable dimension
...
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2013-07-13 19:11:18 +02:00
Luca Barbato
6255ccf7d5
indeo4: Check the quantization matrix index
...
Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
2013-07-13 19:11:18 +02:00