1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-24 13:56:33 +02:00

44542 Commits

Author SHA1 Message Date
Paul B Mahol
6b43e1a86c avcodec: add SGA Video decoder 2021-03-01 17:36:42 +01:00
Paul B Mahol
5111707df6 avcodec: add SGA PCM decoder 2021-03-01 17:36:16 +01:00
Andreas Rheinhardt
0e645b98c6 Remove double ';'
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-03-01 06:10:44 +01:00
Andreas Rheinhardt
590f491b0a avcodec/roqvideoenc: Avoid allocating buffers separately
This is possible because their size is known at compile-time; so they
can be put directly into the context and don't need to be allocated for
every frame.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-03-01 06:07:48 +01:00
Andreas Rheinhardt
ed89ebb12e avcodec/roqvideoenc: Avoid intermediate buffer
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-03-01 06:07:35 +01:00
Andreas Rheinhardt
9b776cd542 avcodec/roqvideoenc: Reuse buffers instead of alloc+free for each frame
In case of the cel evaluators it even allows to perform the
initialization of the source coordinates only once instead of for each
frame.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-03-01 06:07:28 +01:00
Andreas Rheinhardt
1a4a5fb640 avcodec/roqvideo: Use dedicated context for encoder
Up until now, the RoQ video decoder and encoder used the same context;
and said context contained several fields that are only used by the
encoder. This commit changes this and uses a dedicated context for the
encoder; it contains the common context as first element in order to use
functions common to the de- and encoder.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-03-01 06:04:46 +01:00
Paul B Mahol
4cb989e836 avcodec/exr: add fast path for case when powf() isn't needed 2021-02-28 23:19:01 +01:00
Michael Niedermayer
f01d522cf3 avcodec/dxtory: Fix undefined shift with negative linesize
Fixes: left shift of negative value -128
Fixes: 30746/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DXTORY_fuzzer-5906271469436928

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>
2021-02-28 20:11:03 +01:00
Andreas Rheinhardt
f9b5cef1d3 avcodec/libx264: Don't use init_static_data for newer versions
x264 versions >= 153 can support multiple bitdepths; they also don't
export x264_bit_depth any more. The actual check whether a bitdepth
is supported is therefore performed at runtime in x264_encoder_open.
Ergo it is unnecessary to use init_static_data for these versions:
One can already set ff_libx264_encoder.pix_fmts to the value that
X264_init_static always sets it to.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-28 17:52:12 +01:00
Paul B Mahol
85ab9deb98 avcodec/exr: handle case when |im - IM| == 1 for huff compression 2021-02-28 02:06:02 +01:00
Paul B Mahol
b69c91bbee avcodec/x86: add cfhdenc SIMD 2021-02-27 17:09:44 +01:00
James Almer
dd9227e48f avcodec/options: deprecate avcodec_get_frame_class()
AVFrame hasn't been a struct defined in libavcodec for a decade now, when
it was moved to libavutil.

Found-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2021-02-27 11:23:42 -03:00
James Almer
0c902a6147 avcodec/avrndec: remove max_lowres value
The decoder does not support lowres since 9e4225cf7f.

Signed-off-by: James Almer <jamrial@gmail.com>
2021-02-27 11:21:40 -03:00
Paul B Mahol
f9cb557d66 avcodec/exrenc: add half-float support 2021-02-27 00:44:45 +01:00
James Almer
f1a894f9d3 avcodec: add missing FF_API_OLD_ENCDEC wrappers to xmm clobber functions
Signed-off-by: James Almer <jamrial@gmail.com>
2021-02-26 19:26:31 -03:00
Andreas Rheinhardt
169259d9a3 avcodec: Add missing FF_API define for libavcodec pix fmt API
avcodec_find_best_pix_fmt2 has been deprecated and replaced by
avcodec_find_best_pix_fmt_of_2 in 2a54ae9df8cbc1717b3929222ac75f384e2ff240.
avcodec_find_best_pix_fmt_of_2 and avcodec_get_pix_fmt_loss meanwhile
were deprecated in 617e866e25b72fa5d9f9d6bbcbd7e4bd69e63a54 when these
functions were de facto moved to libavutil; this has been mentioned in
APIchanges in f7a1c5e4d2294a8970ede7f6deb2fe0a64e202a5. Yet the
attribute_deprecated was never set for the latter two functions and they
were not wrapped in an FF_API define. This commit does this.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-26 18:29:45 +01:00
Paul B Mahol
34c805c0fe avcodec/imx: use ff_reget_buffer()
Also flush internal stuff upon seeking.
This codec is not intra only.
2021-02-25 23:10:14 +01:00
Andreas Rheinhardt
e4524270f4 avcodec/avcodec: Add missing deprecation to AVCodecParser.next
The whole old next API has been deprecated in commit
7e8eba2d8755962d9dca5eade57bf8f591a73c0c, yet deprecating the next
pointer has been forgotten (the next pointers of other structures are
below the public API delimiter, but such a delimiter doesn't exist for
AVCodecParser).

Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-25 21:51:11 +01:00
James Almer
e96ea80e85 avcodec: unschedule removing some functions with FF_API_COPY_CONTEXT
These functions were never deprecated. The merge from commit 6988cf2969
included them by mistake.

Found-by: mkver
Signed-off-by: James Almer <jamrial@gmail.com>
2021-02-25 17:35:13 -03:00
James Almer
7addddd49e Revert "avcodec/options: add missing FF_API_COPY_CONTEXT checks"
This reverts commit 0191f2d29c2a62b8699ac75f09708187e943814c.

These functions were never deprecated. The merge from commit 6988cf2969
included them by mistake.

Found-by: mkver
Signed-off-by: James Almer <jamrial@gmail.com>
2021-02-25 17:34:44 -03:00
Derek Buitenhuis
5a343853c0 avcodec/gifenc: Only write frame palette entries that actually used
GIF palette entries are not compressed, and writing 256 entries,
which can be up to every frame, uses a significant amount of
space, especially in extreme cases, where palettes can be very
small.

Example, first six seconds of Tears of Steel, palette generated
with libimagequant, 320x240 resolution, and with transparency
optimization + per frame palette:

    * Before patch: 186765 bytes
    * After patch: 77895 bytes

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2021-02-25 16:41:24 +00:00
Derek Buitenhuis
5f2804aba7 avcodec/gifenc: Add global_palette option
This option will disable the writing of the global palette in global
GIF header if it is set to 0, causing only the frame-level palette
to ever be written.

This will be useful later on when further frame-level palette
optimizations are introduced.

The default is 1, which maintains current default behavior.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2021-02-25 16:41:24 +00:00
Anton Khirnov
9e4225cf7f Handle AVID MJPEG streams directly in the MJPEG decoder.
AVID streams - currently handled by the AVRN decoder - can be (depending
on extradata contents) either MJPEG or raw video. To decode the MJPEG
variant, the AVRN decoder currently instantiates a MJPEG decoder
internally and forwards decoded frames to the caller (possibly after
cropping them).

This is suboptimal, because the AVRN decoder does not forward all the
features of the internal MJPEG decoder, such as direct rendering.
Handling such forwarding in a full and generic manner would be quite
hard, so it is simpler to just handle those streams in the MJPEG decoder
directly.

The AVRN decoder, which now handles only the raw streams, can now be
marked as supporting direct rendering.

This also removes the last remaining internal use of the obsolete
decoding API.
2021-02-25 11:46:28 +01:00
Anton Khirnov
d3d99a0a06 lavc/lscrdec: use ff_reget_buffer()
It is simpler and more efficient.

Suggested-by: James Almer <jamrial@gmail.com>
2021-02-24 17:16:46 +01:00
Anton Khirnov
5663301560 pngdec: fix and simplify apng reference handling
Current code is very confused and confusing. It uses two different
reference frames - "previous" and "last" - when only one is really
necessary. It also confuses the two, leading to incorrect output with
APNG_DISPOSE_OP_PREVIOUS mode.

Fixes #9017.
2021-02-24 17:16:46 +01:00
Anton Khirnov
087359ad85 lavc/lscrdec: drop unapplicable private capabilities
FF_CODEC_CAP_ALLOCATE_PROGRESS makes no sense because the decoder does
not support frame threading.
FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM makes no sense because the decoder
does not handle skip_frame.
2021-02-24 17:16:46 +01:00
Anton Khirnov
3a5b857d4c lavc: split LSCR decoder out of PNG decoder
It shares very little code with pngdec, so keeping them together only
makes the code harder to read.
2021-02-24 17:16:46 +01:00
Paul B Mahol
33025ab976 avcodec/cfhdenc: do not try to encode junk 2021-02-24 17:14:03 +01:00
Paul B Mahol
fbfa78508b avcodec/cfhdenc: add padding to each decomposition 2021-02-24 17:14:03 +01:00
Paul B Mahol
d69f4be1c6 avcodec/cfhdenc: refactor DSP code for CFHD encoder
This is needed to implement x86 SIMD.
2021-02-24 17:14:03 +01:00
Paul B Mahol
767d3f7dcf avcodec/exr: simplify piz decompression
Note that >32 codes are no longer supported, give
proper error code if such scenario ever happens.
2021-02-24 17:10:14 +01:00
Andreas Rheinhardt
b913a4e18d avcodec/rv34data: Remove rv34_dquant_tab
It is unused and coincides with ff_modified_quant_tab.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 09:52:40 +01:00
Andreas Rheinhardt
585b764f95 avcodec/x86/constants: Remove unused ff_pw_17
Unused since 80944df720da98d6e5ee0e355db5814735914ec9.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 09:49:03 +01:00
Andreas Rheinhardt
f529793490 avcodec/celp_math: Disable unused function
The code using ff_exp2 (namely ff_acelp_decode_gain_code) use it only if
G729_BITEXACT is defined. So disable it if not.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 09:40:42 +01:00
Andreas Rheinhardt
7825cc392a avcodec/x86/diracdsp_init: Reuse macro
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 09:38:12 +01:00
Andreas Rheinhardt
0f317eb8e7 avcodec/x86/diracdsp_init: Simplify macro
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 09:36:13 +01:00
Andreas Rheinhardt
68bd6c7dac avcodec/x86/diracdsp_init: Make functions only used here static
This allowed to remove forward declarations. Because compilers expect
declarations for all functions they encounter even when it is within
blocks disabled via "if (0 && foo)", one has to use a real #if in
ff_diracdsp_init_x86.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 09:17:40 +01:00
Andreas Rheinhardt
3a80b1ac12 avcodec/x86/diracdsp_init: Remove unused MMX functions
Unused since a1f3b18bf55f106c974eacb1dc831be4d2bd5277, yet as nonstatic
functions the compiler can't detect this, so that these functions aren't
stripped and no warning is emitted.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 08:58:57 +01:00
Andreas Rheinhardt
559a26600a avcodec/acelp_vectors: Remove unused ff_fc_2pulses_9bits_track1
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 08:57:17 +01:00
Andreas Rheinhardt
790be3125d avcodec/acelp_pitch_delay: Inline small functions only used once
ff_acelp_decode_8bit_to_1st_delay3, ff_acelp_decode_4bit_to_2nd_delay3
and ff_acelp_decode_5_6_bit_to_2nd_delay3 are all only used once (by
g729dec) whereas ff_acelp_decode_9bit_to_1st_delay6 and
ff_acelp_decode_6bit_to_2nd_delay6 are completely unused; with the
possible exception of ff_acelp_decode_4bit_to_2nd_delay3, these
functions are so small that inlining them is appropriate; and as long as
ff_acelp_decode_4bit_to_2nd_delay3 is only called once, this is also
true for it.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 08:56:12 +01:00
Andreas Rheinhardt
bce9c5e276 avcodec/rangecoder: Move ff_rac_check_termination to tests/rangecoder.c
It is only used there.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 08:53:43 +01:00
Andreas Rheinhardt
f729dee615 avcodec/mqcenc: Remove unused ff_mqc_length
Unused since 4624656797b667eb6405186682eb04e74dfd90fd.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 08:53:22 +01:00
Andreas Rheinhardt
4c8d9b1d09 avcodec/ac3tab: Remove unused ff_eac3_default_chmap
Added in 0c79b1402a48a99f32435a0f5ad2364c58c6fcf3 to use it
in a function that was never used and was itself removed in
676f1f533e2c2960d81784188592a066b9ff1c3d.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 08:47:11 +01:00
Andreas Rheinhardt
3bf07b1a2d avcodec/bitstream: Rewrite code to avoid triggering compiler warning
Clang infers from the existence of a default case that said case can be
taken. In case of libavcodec/bitstream.c said default case consisted of
an av_assert1 that evaluates to nothing in case of the ordinary assert
level. In this case (that doesn't happen) a variable wouldn't be
initialized, so Clang emitted Wsometimes-uninitialized warnings.
Solve this by making sure that the default path also initializes
the aforementioned variable.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 07:50:56 +01:00
Andreas Rheinhardt
1c9e53d70b avcodec/movtextenc: Check for too many styles
The counter for the number of styles is written on two bytes, ergo
anything > UINT16_MAX is invalid. This also fixes a compiler warning
because of a tautologically true check on 64bit systems.

Reviewed-by: Philip Langdale <philipl@overt.org>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-24 07:50:39 +01:00
Paul B Mahol
d7f10b2497 avcodec/exrenc: use correct type for actual_size as argument for zlib 2021-02-23 12:38:57 +01:00
Andreas Rheinhardt
ad58113afe avcodec/tiff_data: Move data to its only user
tiff.c is the only user of the data from tiff_data.c (the dependency of
the tiff encoder of it is spurious). Therefore this commit moves all the
data from tiff_data.c to tiff_data.h (which is only included by tiff.c)
and makes the objects declared therein static.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-23 11:30:57 +01:00
Andreas Rheinhardt
bb9167dbde avformat/isom: Split movaudio/movvideo tags off into a separate file
The NUT and avi demuxers only need ff_codec_movvideo_tags and so this
removes a dependency on the rest of isom.c as well as on mpeg4audio.c
(which isom depends on); it is similar for the Matroska demuxer and
muxers, except that the mpeg4audio.c dependency can't be avoided.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-23 10:14:26 +01:00
Andreas Rheinhardt
b5207b7afd avcodec/Makefile: Remove outdated dependency of FLV demuxer on mpeg4audio
Unneeded since f96a653184e63cea91e08ea75ae60d309e431f40 and
b2bb09bcc330156e9d79d7ddfa59f9c5d05ca149.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-02-23 10:14:26 +01:00