1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-18 03:19:31 +02:00
Commit Graph

43 Commits

Author SHA1 Message Date
Andreas Rheinhardt
6e8fcd9c56 avcodec/mpeg12: Don't initialize encoder-only parts of RLTable
ff_mpeg12_init_vlcs() currently initializes index_run, max_level and
max_run of ff_rl_mpeg1/2; yet the only user of these fields is the
MPEG-1/2 encoder which already initializes these tables on its own.
So remove the initializations in ff_mpeg12_init_vlcs(); this also
simplifies making ff_mpeg12_init_vlcs() thread-safe.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-31 11:11:59 +01:00
Andreas Rheinhardt
628d02a611 avcodec/speedhqenc: Call correct function
Up until now, the SpeedHQ encoder called a wrong function for init:
void ff_init_uni_ac_vlc(const uint8_t huff_size_ac[256],
                        uint8_t *uni_ac_vlc_len);
Yet the first argument actually used is of type RLTable; the size of
said struct is less than 256 if the size of a pointer is four, leading
to an access beyond the end of the RLTable.

This commit fixes this by calling the actually intended function:
init_uni_ac_vlc() from mpeg12enc.c. It was intended to use this
function [1], yet doing so was forgotten when the patch was actually
applied.

[1]: https://ffmpeg.org/pipermail/ffmpeg-devel/2020-July/266187.html

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-12-11 02:20:05 +01:00
Andreas Rheinhardt
7800cc6e82 avcodec/mpeg12: Don't pretend reading dct_dc_size_* VLCs can fail
It can't because the corresponding trees don't have any loose ends.

Removing the checks also removed an instance of av_log(NULL (with a
nonsense message) from the codebase.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-10-12 02:10:41 +02:00
Mark Thompson
278c308cea mpeg12: Add a common function to find the best frame rate
This will be used later in both the mpeg2_metadata filter and the
VAAPI MPEG-2 encoder.  Also adds a unit test.

(cherry picked from commit b5859e0b04)
2017-10-17 20:56:30 +01:00
Steinar H. Gunderson
2a293ec7ac avcodec: add Newtek SpeedHQ decoder
This decoder can decode all existing SpeedHQ formats (SHQ0–5, 7, and 9),
including correct decoding of the alpha channel.

1080p is decoded in 142 fps on one core of my i7-4600U (2.1 GHz Haswell),
about evenly split between bitstream reader and IDCT. There is currently
no attempt at slice or frame threading, even though the format trivially
supports both.

NewTek very helpfully provided a full set of SHQ samples, as well as
source code for an SHQ2 encoder (not included) and assistance with
understanding some details of the format.
2017-01-11 16:02:10 +01:00
Clément Bœsch
8ef57a0d61 Merge commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb'
* commit '41ed7ab45fc693f7d7fc35664c0233f4c32d69bb':
  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
Michael Niedermayer
2e8ad2d65a avcodec/mpeg12: Remove duplicate block_last_index setting code
Based on 7c25ffe070 and 58dd885f9a

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-02-16 21:47:56 +01:00
Derek Buitenhuis
58dd885f9a Merge commit '7c25ffe070c286874a8c3513f7504b90e1626b0c'
* commit '7c25ffe070c286874a8c3513f7504b90e1626b0c':
  mpeg1: Make intra-block decoding independent of MpegEncContext

Merged-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2016-02-16 19:25:17 +00:00
Vittorio Giovara
7c25ffe070 mpeg1: Make intra-block decoding independent of MpegEncContext
This allows untangling the eatqi decoder from the MPEG-1 decoder.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Diego Biurrun <diego@biurrun.de>
2016-02-09 20:04:59 +01:00
Michael Niedermayer
d52c5e9d75 Merge commit '8606e881b02bec2ac24943d22c8afe11d641fac8'
* commit '8606e881b02bec2ac24943d22c8afe11d641fac8':
  mpeg12: Move the vlc bits to a stand alone file

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-12 21:34:22 +02:00
Luca Barbato
8606e881b0 mpeg12: Move the vlc bits to a stand alone file 2015-06-12 12:29:46 +01:00
Michael Niedermayer
0aba7192e1 Merge commit 'b2b766914a49c4e3537df3a585e97b98d432edd2'
* commit 'b2b766914a49c4e3537df3a585e97b98d432edd2':
  mpegvideo: mpeg12: Move function declarations

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2015-06-01 01:27:02 +02:00
Vittorio Giovara
b2b766914a mpegvideo: mpeg12: Move function declarations 2015-05-31 13:06:19 +02:00
Michael Niedermayer
2bfcd74ad3 Merge commit 'e557584aa7df6ac9f52af7ee7e5c963437da2e2f'
* commit 'e557584aa7df6ac9f52af7ee7e5c963437da2e2f':
  mpeg12: Move Mpeg1Context declaration to the only place it is used

Conflicts:
	libavcodec/mpeg12.h
	libavcodec/mpeg12dec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-28 11:56:05 +01:00
Michael Niedermayer
016c00cf68 Merge commit '1b6d66745ac1768adb387c2227cdcf4452271149'
* commit '1b6d66745ac1768adb387c2227cdcf4452271149':
  Split MPEG-1/2 decoder code off from MPEG-1/2 common code

Conflicts:
	libavcodec/Makefile
	libavcodec/mpeg12.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-28 11:45:50 +01:00
Michael Niedermayer
385ffc7650 Merge commit 'eee2000b41234ae9465c314e18bfec1700181f32'
* commit 'eee2000b41234ae9465c314e18bfec1700181f32':
  mpeg12: Move some ff_mpeg1_* function declarations to a more suitable place

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-28 11:30:29 +01:00
Michael Niedermayer
63a97d5674 Merge commit 'b6649ab5037fb55f78c2606f3d23cea0867cdeaa'
* commit 'b6649ab5037fb55f78c2606f3d23cea0867cdeaa':
  cosmetics: Remove unnecessary extern keywords from function declarations

Conflicts:
	libswscale/x86/swscale.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-03-28 11:20:41 +01:00
Diego Biurrun
e557584aa7 mpeg12: Move Mpeg1Context declaration to the only place it is used 2013-03-27 14:26:11 +01:00
Diego Biurrun
1b6d66745a Split MPEG-1/2 decoder code off from MPEG-1/2 common code 2013-03-27 14:26:11 +01:00
Diego Biurrun
eee2000b41 mpeg12: Move some ff_mpeg1_* function declarations to a more suitable place 2013-03-27 14:21:45 +01:00
Diego Biurrun
b6649ab503 cosmetics: Remove unnecessary extern keywords from function declarations 2013-03-27 14:21:45 +01:00
Michael Niedermayer
ac8987591f Merge commit '88bd7fdc821aaa0cbcf44cf075c62aaa42121e3f'
* commit '88bd7fdc821aaa0cbcf44cf075c62aaa42121e3f':
  Drop DCTELEM typedef

Conflicts:
	libavcodec/alpha/dsputil_alpha.h
	libavcodec/alpha/motion_est_alpha.c
	libavcodec/arm/dsputil_init_armv6.c
	libavcodec/bfin/dsputil_bfin.h
	libavcodec/bfin/pixels_bfin.S
	libavcodec/cavs.c
	libavcodec/cavsdec.c
	libavcodec/dct-test.c
	libavcodec/dnxhdenc.c
	libavcodec/dsputil.c
	libavcodec/dsputil.h
	libavcodec/dsputil_template.c
	libavcodec/eamad.c
	libavcodec/h264_cavlc.c
	libavcodec/h264idct_template.c
	libavcodec/mpeg12.c
	libavcodec/mpegvideo.c
	libavcodec/mpegvideo.h
	libavcodec/mpegvideo_enc.c
	libavcodec/ppc/dsputil_altivec.c
	libavcodec/proresdsp.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-01-23 17:44:56 +01:00
Diego Biurrun
88bd7fdc82 Drop DCTELEM typedef
It does not help as an abstraction and adds dsputil dependencies.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2013-01-22 18:32:56 -08:00
Michael Niedermayer
41135b7f64 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  lavr: add option for dithering during sample format conversion to s16
  mpeg12: do not decode extradata more than once.

Conflicts:
	libavcodec/mpeg12.c
	libavcodec/mpeg12.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2012-12-20 12:18:28 +01:00
Anton Khirnov
5823686261 mpeg12: do not decode extradata more than once.
Fixes CVE-2012-2803.

CC: libav-stable@libav.org
2012-12-19 22:32:54 +01:00
Michael Niedermayer
de1824e970 mpeg12: fix logic that prevents extradata from being parsed twice.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2012-05-11 18:46:56 +02:00
Michael Niedermayer
9c020810c1 Revert "mpeg12: move full_pel from MpegEncContext to Mpeg1Context"
This reverts commit da22ba7df4.

Conflicts:

	libavcodec/mpeg12.c
	libavcodec/mpeg12.h
2011-10-24 01:48:51 +02:00
Michael Niedermayer
fe906830fd Revert "mpeg12: move closed_gop from MpegEncContext to Mpeg1Context"
This reverts commit 3fc0830432.
The revert is done because the reasoning behind the commit was
flawed, closed_gop is not mpeg1/2 specific.

Conflicts:

	libavcodec/mpeg12.c
	libavcodec/mpeg12.h
2011-10-24 01:04:14 +02:00
Michael Niedermayer
2b0cdb7364 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  Move id3v2 tag writing to a separate file.
  swscale: add missing colons to x86 assembly yuv2planeX.
  g722: split decoder and encoder into separate files
  cosmetics: remove extra spaces before end-of-statement semi-colons
  vorbisdec: check output buffer size before writing output
  wavpack: calculate bpp using av_get_bytes_per_sample()
  ac3enc: Set max value for mode options correctly
  lavc: move get_b_cbp() from h263.h to mpeg4videoenc.c
  mpeg12: move closed_gop from MpegEncContext to Mpeg1Context
  mpeg12: move full_pel from MpegEncContext to Mpeg1Context
  mpeg12: move Mpeg1Context from mpeg12.c to mpeg12.h
  mpegvideo: remove some unused variables from MpegEncContext.

Conflicts:
	libavcodec/mpeg12.c
	libavformat/mp3enc.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-10-24 01:01:21 +02:00
Anton Khirnov
3fc0830432 mpeg12: move closed_gop from MpegEncContext to Mpeg1Context
It's MPEG-1/2 specific.
2011-10-23 14:15:56 +02:00
Anton Khirnov
da22ba7df4 mpeg12: move full_pel from MpegEncContext to Mpeg1Context
It's MPEG-1 specific.
2011-10-23 14:14:39 +02:00
Anton Khirnov
cc05a45d33 mpeg12: move Mpeg1Context from mpeg12.c to mpeg12.h
It will be used in vdpau code.
2011-10-23 14:14:34 +02:00
Mans Rullgard
2912e87a6c Replace FFmpeg with Libav in licence headers
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 13:33:20 +00:00
Vitor Sessak
6e16398aa3 Make dc_lum_vlc and dc_chroma_vlc non-static symbols,
this fixed the decoding of version 3 PSX MDEC files.

Originally committed as revision 26230 to svn://svn.ffmpeg.org/ffmpeg/trunk
2011-01-05 19:38:42 +00:00
Måns Rullgård
db2f209352 mpeg12: fix non-standard use of "extern inline"
Rename ff_mpeg1_decode_block_intra to mpeg1_decode_block_intra and
make it static.  Add ff_mpeg1_decode_block_intra as plain extern
function calling mpeg1_decode_block_intra.

Originally committed as revision 18859 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-05-17 00:54:29 +00:00
Peter Ross
50240e5646 convert mpeg1_decode_block_intra() to inline global
Originally committed as revision 17000 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-05 07:57:11 +00:00
Stefano Sabatini
987903826b Globally rename the header inclusion guard names.
Consistently apply this rule: the guard name is obtained from the
filename by stripping the leading "lib", converting '/' and '.'  to
'_' and uppercasing the resulting name. Guard names in the root
directory have to be prefixed by "FFMPEG_".

Originally committed as revision 15120 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-31 07:39:47 +00:00
Diego Biurrun
071083b4a5 Rename ff_init_vlcs function to the more descriptive name ff_mpeg12_init_vlcs.
Now that it is exported, this should avoid confusion and name clashes.

Originally committed as revision 14867 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-20 17:05:14 +00:00
Diego Biurrun
0da49fca79 Untangle mpeg12.c and mdec.c so that mdec.c can be compiled separately.
Originally committed as revision 14851 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-19 20:52:26 +00:00
Diego Biurrun
5b21bdabe4 Add FFMPEG_ prefix to all multiple inclusion guards.
Originally committed as revision 10765 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-10-17 09:37:46 +00:00
Aurelien Jacobs
b66af278ac forgot to svn add mpeg12.h in r9477
Originally committed as revision 9487 to svn://svn.ffmpeg.org/ffmpeg/trunk
2007-07-05 12:59:38 +00:00
Janne Grunau
cd8c64e197 Revert "mpeg12: move full_pel from MpegEncContext to Mpeg1Context"
This reverts commit da22ba7df4 since it
broke slice threading. Slice threading just duplicates MpegEncContext
so every value used during mpeg_decode_slice has to be in it.
A second patch will fix the illusion that Mpeg1Context is available
in mpeg_decode_slice.
2011-10-24 00:59:41 +02:00