Andreas Rheinhardt
c21433c953
avcodec/mpeg4video: Split off data in a header of its own
...
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-01-13 08:15:28 +01:00
Andreas Rheinhardt
832ead2ec4
avcodec/mpeg4videodec: Fix data race when initializing VLCs
...
Both the MPEG-4 parser as well as the decoder initialized
several VLCs. There is a "static int done = 0;" in order to
guard against initializing these multiple times, but this does
not work when several threads try to initialize these VLCs
concurrently, which can happen when initializing several parsers
at the same time (they don't use the global lock that is used
for codecs without the FF_CODEC_CAP_INIT_THREADSAFE cap; actually,
they don't use any lock at all).
Since ff_mpeg4_decode_picture_header() now aborts early when called
from the parser, it no longer needs to have these VLCs initialized
at all. This commit therefore does exactly this.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-01-09 09:32:53 +01:00
Andreas Rheinhardt
f0194e860e
avcodec/mpeg4video: Skip unneeded element when parsing picture header
...
Namely, skip some elements that are only useful for a decoder
when calling ff_mpeg4_decode_picture_header() from the MPEG-4 parser.
In particular, this ensures that the VLCs need no longer be
initialized by the parser.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-01-09 09:30:36 +01:00
Andreas Rheinhardt
d99707b42a
avcodec/mpeg4video: Make initializing RLTable thread-safe
...
Up until now the RLTable ff_mpeg4_rl_intra was initialized by both mpeg4
decoder and encoder (except the VLCs that are only used by the decoder).
This is an obstacle to making these codecs init-threadsafe, so move
initializing this to a single function that is guarded by a dedicated
AVOnce.
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-04-27 00:40:18 +02:00
Andreas Rheinhardt
f1ba4d479e
avcodec/mpeg4videodec: Make studio VLCs static
...
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-08 17:51:46 +01:00
Andreas Rheinhardt
3aa81a634a
avcodec/mpeg4video: Make tables used to initialize VLCs smaller
...
Switching from ff_init_vlc_sparse() to ff_init_vlc_from_lengths()
allows to replace codes which are so long that they need to be stored
in an uint16_t by symbols which fit into an uint8_t; and even these can
be avoided in case of the sprite trajectory VLC.
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-08 17:51:46 +01:00
Andreas Rheinhardt
3f086a2f66
avcodec/mpeg4videodec: Fix nonsense warning
...
Since db77230894 parsing of
mpeg4-extradata lead to a "Failed to parse extradata" warning, because
ff_mpeg4_decode_picture_header returns AVERROR_INVALIDDATA in case that
no VOP was found. This patch adds a parameter to signify whether a
header (where the absence of a VOP does not raise an error) or not is
parsed. The first mode is of course used for parsing headers.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@googlemail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-03-12 00:48:56 +01:00
Michael Niedermayer
ba97d75ac6
avcodec/mpeg4video: Detect reference studio streams as studio streams
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-05-17 02:23:06 +02:00
Kieran Kunhya
f9d3841ae6
mpeg4video: Add support for MPEG-4 Simple Studio Profile.
...
This is a profile supporting > 8-bit video and has a higher quality DCT
2018-04-02 13:06:23 +01:00
Michael Niedermayer
db77230894
avcodec/mpeg4videodec: Use more specific error codes
...
Forward error codes where possible.
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-03-26 02:17:13 +02:00
Michael Niedermayer
4b2a186ef0
avcodec/mpeg4videodec: Add support for parsing and exporting video_range
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-12-21 19:48:41 +01:00
Clément Bœsch
8ef57a0d61
Merge commit ' 41ed7ab45f'
...
* commit '41ed7ab45f ':
cosmetics: Fix spelling mistakes
Merged-by: Clément Bœsch <u@pkh.me>
2016-06-21 21:55:34 +02:00
Vittorio Giovara
41ed7ab45f
cosmetics: Fix spelling mistakes
...
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2016-05-04 18:16:21 +02:00
Derek Buitenhuis
1a12eb4a73
Merge commit ' 29c2d06d67'
...
* commit '29c2d06d67 ':
cosmetics: Drop empty comment lines
Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-02-24 17:31:44 +00:00
Diego Biurrun
29c2d06d67
cosmetics: Drop empty comment lines
2016-02-18 15:35:30 +01:00
Michael Niedermayer
7c97946d61
avcodec/mpeg4video: Check time_incr
...
Fixes assertion failure
Fixes out of memory access
Fixes: test_casex.ivf
Found-by: Tyson Smith <twsmith@mozilla.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-01-12 03:35:29 +01:00
Michael Niedermayer
39de31ccb6
avcodec/mpeg4video: Reorder operations to reduce accesses to err_recognition
...
About 9 cpu cycle faster mpeg4_decode_mb()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-05-24 16:11:38 +02:00
Michael Niedermayer
d5227ceff1
Merge commit ' 9c1db92ad3'
...
* commit '9c1db92ad3 ':
mpegvideo: Drop err_recognition
Conflicts:
libavcodec/h263dec.c
libavcodec/ituh263dec.c
libavcodec/mpeg4video.h
libavcodec/mpeg4videodec.c
libavcodec/msmpeg4dec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-05-22 20:38:42 +02:00
Vittorio Giovara
9c1db92ad3
mpegvideo: Drop err_recognition
...
It is just a duplicate of an AVCodecContext member so use it instead.
2015-05-22 15:34:39 +01:00
Andreas Cadhalpun
f62880bfb8
mpeg4: use a self-explanatory #define MAX_NVOP_SIZE
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2015-04-04 02:23:58 +02:00
Michael Niedermayer
b634c12cb9
Merge commit ' 93f29948e4'
...
* commit '93f29948e4 ':
mpeg4video: Fix doxygen comment syntax to document correct struct member
Conflicts:
libavcodec/mpeg4video.h
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-08-14 12:50:40 +02:00
Nidhi Makhijani
93f29948e4
mpeg4video: Fix doxygen comment syntax to document correct struct member
...
Also fix some comment typos.
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-08-14 11:59:59 +02:00
Michael Niedermayer
58eaa95116
Merge commit ' ccbf370f20'
...
* commit 'ccbf370f20 ':
mpegvideo: move vol_control_parameters to the only place it is used
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2014-07-29 21:26:59 +02:00
Nidhi Makhijani
ccbf370f20
mpegvideo: move vol_control_parameters to the only place it is used
...
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2014-07-29 09:13:18 -07:00
Michael Niedermayer
6faf426470
avcodec/mpeg4video: fix 2 more incorrectly associated comments
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-12-08 16:06:23 +01:00
Michael Niedermayer
cf948200bd
Merge commit ' ff7ffe4809'
...
* commit 'ff7ffe4809 ':
mpeg4videodec: move showed_packed_warning from MpegEncContext to Mpeg4DecContext
Conflicts:
libavcodec/mpeg4videodec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-12-06 01:46:51 +01:00
Michael Niedermayer
36e2ec4068
Merge commit ' f7d228676c'
...
* commit 'f7d228676c ':
mpeg4videodec: move intra_dc_threshold from MpegEncContext to Mpeg4DecContext
Conflicts:
libavcodec/mpeg4videodec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-12-06 01:38:55 +01:00
Michael Niedermayer
92e10e34b1
Merge commit ' e41ff4210a'
...
* commit 'e41ff4210a ':
mpeg4videodec: move use_intra_dc_vlc from MpegEncContext to Mpeg4DecContext
Conflicts:
libavcodec/mpeg4videodec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-12-06 01:14:46 +01:00
Anton Khirnov
ff7ffe4809
mpeg4videodec: move showed_packed_warning from MpegEncContext to Mpeg4DecContext
2013-12-05 13:22:37 +01:00
Anton Khirnov
f7d228676c
mpeg4videodec: move intra_dc_threshold from MpegEncContext to Mpeg4DecContext
2013-12-05 13:22:18 +01:00
Anton Khirnov
e41ff4210a
mpeg4videodec: move use_intra_dc_vlc from MpegEncContext to Mpeg4DecContext
2013-12-05 13:19:22 +01:00
Michael Niedermayer
a235af93bd
avcodec/mpeg4video: fix doxycomments so they are not associated with random unrelated fields
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 20:30:11 +01:00
Michael Niedermayer
f09f295109
Merge commit ' e026ee0446'
...
* commit 'e026ee0446 ':
mpeg4videodec: move sprite_{shift,traj} from MpegEncContext to Mpeg4DecContext
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 04:40:51 +01:00
Michael Niedermayer
7f18cb9101
Merge commit ' 513d849bb6'
...
* commit '513d849bb6 ':
mpeg4videodec: move num_sprite_warping_points from MpegEncContext to Mpeg4DecContext
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 04:34:46 +01:00
Michael Niedermayer
4c55aa8f93
Merge commit ' 9ba3fc3e3d'
...
* commit '9ba3fc3e3d ':
mpeg4videodec: move sprite_brightness_change from MpegEncContext to Mpeg4DecContext
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 04:29:26 +01:00
Michael Niedermayer
ae4e7f7ba6
Merge commit ' 58c120a929'
...
* commit '58c120a929 ':
mpeg4videodec: move scalability from MpegEncContext to Mpeg4DecContext
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 04:23:43 +01:00
Michael Niedermayer
b27ba2e540
Merge commit ' 6e81597d5a'
...
* commit '6e81597d5a ':
mpeg4videodec: move enhancement_type from MpegEncContext to Mpeg4DecContext
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 04:15:46 +01:00
Michael Niedermayer
1897c4a119
Merge commit ' 3b1c0f686d'
...
* commit '3b1c0f686d ':
mpeg4videodec: move new_pred from MpegEncContext to Mpeg4DecContext
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 03:55:39 +01:00
Michael Niedermayer
0cea39fdd3
Merge commit ' b1aacd5668'
...
* commit 'b1aacd5668 ':
mpeg4videodec: move t_frame from MpegEncContext to Mpeg4DecContext
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 03:20:11 +01:00
Michael Niedermayer
3e5cd34cd0
Merge commit ' 0388907400'
...
* commit '0388907400 ':
mpeg4videodec: move cplx_estimation_* fields from MpegEncContext to Mpeg4DecContext
Conflicts:
libavcodec/mpeg4videodec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 03:11:16 +01:00
Michael Niedermayer
b4ef7447eb
Merge commit ' 43af264de8'
...
* commit '43af264de8 ':
mpeg4videodec: move mpeg4-specific bug workaround variables from MpegEncContext to Mpeg4DecContext
Conflicts:
libavcodec/mpeg4videodec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 02:52:09 +01:00
Michael Niedermayer
ec5499d8ba
Merge commit ' e2ceb17642'
...
* commit 'e2ceb17642 ':
mpeg4videodec: move mpeg4-specific post-frame-decode code from h264dec to mpeg4videodec
Conflicts:
libavcodec/h263dec.c
libavcodec/mpeg4video.h
libavcodec/mpeg4videodec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 02:42:56 +01:00
Michael Niedermayer
6c9b82b6a0
avcodec/mpeg4videodec: move bug workaround code into seperate function
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 02:12:11 +01:00
Michael Niedermayer
ee9d53e572
Merge commit ' 48e1394095'
...
* commit '48e1394095 ':
mpeg4videodec: move MpegEncContext.resync_marker into Mpeg4DecContext.
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-30 01:28:04 +01:00
Michael Niedermayer
9c835acc1d
Merge commit ' bc5abfb19e'
...
* commit 'bc5abfb19e ':
mpeg4videodec: move MpegEncContext.rvlc to Mpeg4DecContext
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-29 23:27:30 +01:00
Michael Niedermayer
68c90fc086
Merge commit ' 1a89025793'
...
* commit '1a89025793 ':
mpeg4videodec: move MpegEncContext.vol_sprite_usage to Mpeg4DecContext
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-29 23:04:26 +01:00
Michael Niedermayer
e2f63be012
Merge commit ' e62a43f6b1'
...
* commit 'e62a43f6b1 ':
mpeg4videodec: move MpegEncContext.time_increment_bits to Mpeg4DecContext
Conflicts:
libavcodec/mpeg4videodec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-29 22:45:05 +01:00
Michael Niedermayer
ad13b8ca9b
Merge commit ' ee8af2dd99'
...
* commit 'ee8af2dd99 ':
mpeg4videodec: move MpegEncContext.shape to Mpeg4DecContext
Conflicts:
libavcodec/h263dec.c
libavcodec/mpeg4videodec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-29 22:35:52 +01:00
Michael Niedermayer
be0b869b04
Merge commit ' 35e0833d41'
...
* commit '35e0833d41 ':
mpeg4videodec: add a mpeg4-specific private context.
Conflicts:
libavcodec/mpeg4video_parser.c
libavcodec/mpeg4videodec.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-11-29 22:27:28 +01:00
Anton Khirnov
e026ee0446
mpeg4videodec: move sprite_{shift,traj} from MpegEncContext to Mpeg4DecContext
2013-11-29 17:37:16 +01:00