Commit graph

640 commits

Author SHA1 Message Date
Andreas Rheinhardt
d9f5bd15fd avcodec/sp5x: Remove unused quant tables
Only the fifth one is used.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-01-26 13:57:00 +01:00
Andreas Rheinhardt
44bb776f13 avcodec/mpegvideo_enc: Make mpv_encode_defaults thread-safe
This is a prerequisite for making any encoder that uses
ff_mpv_encode_init() init-threadsafe; it already makes the AMV,
the MJPEG and the MPEG-1/2 encoders init-threadsafe.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-01-25 14:51:53 +01:00
Andreas Rheinhardt
b347384173 avcodec/me_cmp: Remove ff_check_alignment()
The usage of a static variable presents a potential for data races and
means that this function can't be used in init functions of codecs with
FF_CODEC_CAP_INIT_THREADSAFE (unless of course one presumes that
everything is alright in which case the error is not triggered; but then
the whole function is pointless...). This makes the Snow decoder
init-threadsafe as it already claims.

Notice that this function has been removed in 2014 by Libav in commit
9103185bd1, because only some codepaths
are checked this way and because it only affects legacy compilers. The
latter is of course even more true today.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2021-01-21 19:13:06 +01:00
Anton Khirnov
c8c2dfbc37 lavu: move LOCAL_ALIGNED from internal.h to mem_internal.h
That is a more appropriate place for it.
2021-01-01 14:11:01 +01:00
Gyan Doshi
b9b719fedc avcodec/mpegvideo_enc: check for SpeedHQ encoder
Avoids build failure when mpegvideo_enc is built but SpeedHQ encoder
isn't.
2020-12-09 12:50:05 +05:30
Jean-Baptiste Kempf
052a5993ad avcodec: add SpeedHQ encoder 2020-11-24 09:38:35 +01:00
Anton Khirnov
dc1099442e 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.
2020-10-28 13:53:23 +01:00
Michael Niedermayer
a0f20c3b3f avcodec/mpegvideo_enc: Replace some s->avctx by avctx
Fixes issue reported by: Xu Guangxin <guangxin.xu@intel.com>
Original report:
Steps to reproduce:
1. ./configure --enable-debug=3 --disable-libx264 && make install
2. ffmpeg -i input.mp4 -profile:v baseline output.mp4 -y

you will see a crash like this:
[mpeg4 @ 0x5555575854c0] [Eval @ 0x7fffffffbf80] Undefined constant or missing '(' in 'baseline'
[mpeg4 @ 0x5555575854c0] Unable to parse option value "baseline"
[mpeg4 @ 0x5555575854c0] Error setting option profile to value baseline.
Thread 1 "ffmpeg" received signal SIGSEGV, Segmentation fault.

root cause:
If the codec has FF_CODEC_CAP_INIT_CLEANUP flag, and avcodec_open2 got an error before avctx->codec->init,
the ff_mpv_encode_end will face a null s->avctx.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-08-30 16:18:37 +02:00
Andreas Rheinhardt
8129c32e48 avcodec, avfilter, avformat: Remove redundant avpriv_align_put_bits
flush_put_bits() already fills the bitstream with zeroes, so it is
unnecessary to align the bitstream before.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-08-01 18:56:32 +02:00
Steinar H. Gunderson
c63c303a1f avcodec/put_bits: Parametrize bit buffer type
Preparatory patch for making the bit buffer different size on different
platforms; make a typedef and make all the hardcoded sizes into expressions
deriving from this size.

No functional change; generated assembler is near-identical.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-07-19 10:59:43 +02:00
Limin Wang
67de2d6a8c avcodec/mpegvideo_enc: remove FF_ALLOCZ_ARRAY_OR_GOTO and gotos lable
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-06-13 06:59:19 +08:00
James Almer
6e1903938b avcodec/internal: move packet related functions to their own header
Signed-off-by: James Almer <jamrial@gmail.com>
2020-06-02 19:02:12 -03:00
Limin Wang
467d9e27e0 avcodec: Add FF_CODEC_CAP_INIT_CLEANUP
then ff_mpv_encode_end() will be unnecessary in ff_mpv_encode_init()
if it's failed.

The FF_CODEC_CAP_INIT_CLEANUP flag is need for single thread, For multithread,
it'll be cleanup still by AV_CODEC_CAP_FRAME_THREADS flag if have.

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-27 21:59:51 +08:00
Anton Khirnov
f30a41a608 Stop hardcoding align=32 in av_frame_get_buffer() calls.
Use 0, which selects the alignment automatically.
2020-05-22 14:38:57 +02:00
Limin Wang
14285e4ca2 avcodec/mpegvideo_enc: return more specific error codes for ff_mpv_encode_init()
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-09 09:33:49 +08:00
Limin Wang
6825f7c0ba avcodec/mpegvideo_enc: reindent code
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-08 21:09:28 +08:00
Andreas Rheinhardt
cc2a9509ce libavcodec, libpostproc: Remove outcommented START/STOP_TIMER
as well as includes of libavutil/timer.h.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-03-14 18:24:04 +01:00
Ramiro Polla
531fbce0b2 mpegvideo_enc: add intra_penalty option for p frames
This option allows more control over the use of intra macroblocks in
predictive frames.

By using '-intra_penalty max', intra macroblocks are never used in
predictive frames.

It is useful for glitch artists to generate input material. This option
allows them to split and merge two video files while maintaining fluid
motion from the second video without having intra macroblocks restoring
chunks of the first video.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-10-24 19:45:17 +02:00
Steven Liu
76ab5ebbee avcodec/mpegvideo_enc: add logging context to log
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2019-10-08 13:47:21 +08:00
Michael Niedermayer
7246bf365a avcodec/mpegvideo_enc: Use av_assert1() instead of assert()
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-02-17 10:29:42 +01:00
Michael Niedermayer
1aa796bc9c avcodec/mpegvideo_enc: Use av_assert1() instead of assert() in merge_context_after_encode()
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-02-07 00:29:01 +01:00
Rostislav Pehlivanov
a1c6fc773f mpegvideo: remove support for libxvid's RC system
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2018-05-05 19:41:30 +01:00
Muhammad Faiz
caa4bd7a9f avcodec/me_cmp: remove ff_me_cmp_init_static()
Precalculate and constify ff_square_tab.

Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2018-02-05 22:42:59 +07:00
James Almer
bfab430856 Merge commit '94eed68ace'
* commit '94eed68ace':
  lavc: Drop deprecated options moved to private contexts

Merged-by: James Almer <jamrial@gmail.com>
2017-10-23 17:08:32 -03:00
James Almer
b79a7da36f Merge commit 'bb45d11282'
* commit 'bb45d11282':
  lavc: Drop deprecated codec flags

Merged-by: James Almer <jamrial@gmail.com>
2017-10-23 16:19:38 -03:00
James Almer
400ecd8e40 Merge commit '72dc7ddd18'
* commit '72dc7ddd18':
  lavc: Drop deprecated error rate option

Merged-by: James Almer <jamrial@gmail.com>
2017-10-23 15:50:46 -03:00
Carl Eugen Hoyos
724cf83f10 Remove some unneeded casts of bit_rate. 2017-09-22 01:33:22 +02:00
James Almer
4a654be3fb avcodec/mpegvideo_enc: fix mixed declarations and code warning 2017-07-25 00:58:24 -03:00
Michael Niedermayer
aff93e1929 avcodec/mpegvideo_enc: Use intra/inter scantable matching mb type in quantization
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-07-24 02:42:33 +02:00
Michael Niedermayer
f670c13f13 avcodec: Rename ff_mpv_decode_mb() to ff_mpv_reconstruct_mb
The new name more accuratly describes what the function does

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-06-19 17:54:40 +02:00
Stefano Sabatini
dc70ea8c19 lavc/mpegvideo_enc: allow low_delay for non MPEG2 codecs depending on strict_std_compliance
Forcing low_delay can be useful, even if not officially supported.
2017-06-06 09:56:49 +02:00
Rostislav Pehlivanov
03eb0515c1 mpegvideo_enc: disable optimized huffman coding with AMV or slice threads
Doesn't work yet with slice threading and won't work with AMV.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-04-09 21:53:31 +02:00
Michael Niedermayer
724bb805ef Revert "mjpegenc: disable huffman coding with AMV"
This was the wrong patch

This reverts commit 7f9b492d54.
2017-04-09 21:53:30 +02:00
Rostislav Pehlivanov
7f9b492d54 mjpegenc: disable huffman coding with AMV
Isn't supported.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2017-04-09 00:00:32 +01:00
Vittorio Giovara
94eed68ace lavc: Drop deprecated options moved to private contexts
Deprecated in 10/2014 and 07/2015.
2017-03-23 10:09:17 +01:00
Vittorio Giovara
bb45d11282 lavc: Drop deprecated codec flags
Deprecated between 04/2014 - 05/2015.
2017-03-23 10:09:16 +01:00
Vittorio Giovara
72dc7ddd18 lavc: Drop deprecated error rate option
Deprecated in 10/2013.
2017-03-23 10:09:14 +01:00
Clément Bœsch
e6be531a30 Merge commit '68811a41c7'
* commit '68811a41c7':
  mpegvideo_enc: use the new encoding API for b_strategy=2

Merged-by: Clément Bœsch <u@pkh.me>
2017-03-21 13:01:46 +01:00
Clément Bœsch
b2cb9191ea Merge commit 'f03f78bc1c'
* commit 'f03f78bc1c':
  mpegvideo_enc: handle encoding errors with b_strategy=2

Merged-by: Clément Bœsch <u@pkh.me>
2017-03-21 12:57:02 +01:00
Clément Bœsch
70ca9b76e2 Merge commit '6f733ecab6'
* commit '6f733ecab6':
  mpegvideo_enc: add const to the AVCodec instance

Merged-by: Clément Bœsch <u@pkh.me>
2017-03-21 12:55:40 +01:00
Michael Niedermayer
3e1507a954 avcodec/mjpegenc: Bypass the 2 pass encoding when optimal tables are not requested
This limits the bugs, speedloss and extra memory allocation to the case when
optimal tables are needed.
Fixes regressions with slice multi-threading

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-02-10 00:12:01 +01:00
Jerry Jiang
884506dfe2 Implement optimal huffman encoding for (M)JPEG.
> seems to break
> make fate-vsynth1-mjpeg-444

Fixed.
2017-02-08 13:59:53 +00:00
Clément Bœsch
566bfd59c9 Merge commit 'd639dcdae0'
* commit 'd639dcdae0':
  ratecontrol: Move Xvid-related functions to the place they are actually used

Merged-by: Clément Bœsch <u@pkh.me>
2017-02-01 14:21:36 +01:00
Diego Biurrun
a6901b9c6b Drop libxvid rate control support for mpegvideo encoding
The feature has outlived is usefulness and complicates the code.
2016-12-11 09:27:40 +01:00
Michael Niedermayer
85407c7e63 avcodec/mpegvideo: Fix edge emu buffer overlap with interlaced mpeg4
Fixes Ticket5936
Regression since c5fc8ae126

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-11-17 12:21:48 +01:00
Michael Niedermayer
de0cd0ffc9 avcodec/mpegvideo_enc: Add missing emms_c() to clear MMX state after SIMD use
Fixes undefined behavior due to calling libc allocation with unclean FPU state

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-10-22 13:46:46 +02:00
Michael Niedermayer
03ec6b780c avcodec/mpegvideo_enc: Clear mmx state in ff_mpv_reallocate_putbitbuffer()
This function must be called from the mb or slice encoding loop and MMX state may not
be clean there

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-10-21 14:17:50 +02:00
Anton Khirnov
68811a41c7 mpegvideo_enc: use the new encoding API for b_strategy=2 2016-09-28 10:01:52 +02:00
Anton Khirnov
f03f78bc1c mpegvideo_enc: handle encoding errors with b_strategy=2 2016-09-28 10:01:52 +02:00
Anton Khirnov
6f733ecab6 mpegvideo_enc: add const to the AVCodec instance 2016-09-28 10:01:52 +02:00