1
mirror of https://git.videolan.org/git/ffmpeg.git synced 2024-07-21 19:54:13 +02:00
Commit Graph

181 Commits

Author SHA1 Message Date
Mike Melanson
9d8bb0318a Small refactoring: Instead of 4 loops for decoding AC coefficients based
on their grouping, create one loop that indexes into a table of AC VLC
tables.

There is also a small optimization here: Do not call unpack_vlcs()
if there are no fragments in the list with outstanding coefficients.
My profiling indicates that this can save upwards of 1 million
dezicycles per frame throughout the course of unpack_dct_coeffs().

Originally committed as revision 20699 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-02 04:06:27 +00:00
Mike Melanson
098523eb28 Use a list to track which fragments coded in this frame still have
outstanding coefficients yet to be decoded from the bitstream. Once a
fragment reaches end-of-block, remove it from this new list. This change
makes the VP3/Theora entropy decode process dramatically faster due to
not having to iterate incessantly over fragments which have already been
fully decoded.

Originally committed as revision 20698 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-02 02:30:15 +00:00
Mike Melanson
0efbd068e7 Make sure that all memory allocations succeed.
Based on 28_theora_malloc_checks.patch from the Google Chrome team.

Originally committed as revision 20008 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-24 06:33:16 +00:00
Google Chrome
310afddfe0 Fix >= vs > check of coded_fragment_list_index.
22_fix_theora_frag_fencepost.patch by chrome

Originally committed as revision 19995 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-23 12:42:12 +00:00
Google Chrome
fa6f27517b Fix init_get_bits() buffer size.
18_fix_theora_header_bit_len.patch by chrome

Originally committed as revision 19993 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-23 12:27:10 +00:00
Mike Melanson
428984b041 Another micro-optimization for unpack_vlcs(): Eliminate a possible
branch and save around 45k-55k dezicycles per function run.

Originally committed as revision 19974 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-23 05:38:12 +00:00
Mike Melanson
138fe83215 Perform the DC prediction reversal immediately after decoding all of
the DC coefficients. This has a greater probability of leveraging the
coefficients while they are still cached.

When testing with the Big Buck Bunny 1080p video, I consistently saw
improvements of 500k-600k dezicycles per run (through
reverse_dc_prediction()) thanks to this move.

Originally committed as revision 19966 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-22 15:58:08 +00:00
Mike Melanson
ee3d7f5852 Modify unpack_vlcs() so that there are fewer dereferences through the
main (heavily iterated) loop.

Originally committed as revision 19934 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-21 01:37:50 +00:00
Reimar Döffinger
b8791583e7 compatible_frame array can be static const, too.
Originally committed as revision 19779 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-06 08:27:23 +00:00
Reimar Döffinger
bb99108775 Make vp3 arrays static const where possible.
Originally committed as revision 19771 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-09-05 17:28:20 +00:00
Måns Rullgård
3aab27b459 Remove useless #include <unistd.h> from many files
Originally committed as revision 19499 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-22 23:37:53 +00:00
Reimar Döffinger
c79c960ade Remove useless ret variable added in last revision again.
Originally committed as revision 19357 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-06 10:28:58 +00:00
Reimar Döffinger
7cda815044 100l, theora_decode_init must pass on errors from vp3_decode_init
Originally committed as revision 19356 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-06 09:35:00 +00:00
Reimar Döffinger
c4b7b8bf9c Make decode_init fail if the huffman tables are invalid and thus init_vlc fails.
Otherwise this will crash during decoding because the vlc tables are NULL.
Partially fixes ogv/smclock.ogv.1.101.ogv from issue 1240.

Originally committed as revision 19355 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-06 09:22:39 +00:00
Reimar Döffinger
e13cca4b14 Ensure that the filter limit values do not exceed the maximum allowed value of 127.
Originally committed as revision 19351 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-05 18:27:39 +00:00
Reimar Döffinger
7fa5f9990b Extend init_loop_filter to work for filter limit values up to 127 instead
of only up to 64. 127 is the maximum value allowed by the theora specification.

Originally committed as revision 19350 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-07-05 18:25:58 +00:00
Baptiste Coudurier
7f57905d55 vp3 and theora decoders use get_buffer, set CODEC_CAP_DR1
Originally committed as revision 19107 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-06-05 08:44:26 +00:00
David Conrad
f2264fa531 Support block-level quantization in Theora
Originally committed as revision 18986 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-05-29 21:43:22 +00:00
David Conrad
ef516f7377 Move ALIGN macro to libavutil/common.h and use it in various places
Originally committed as revision 18898 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-05-22 21:32:13 +00:00
David Conrad
0a8dedc9e1 Use skip_bits_long() for large skips
This fixes ogg/theora on ARM (more generally the A32 bitstream reader)

Originally committed as revision 18819 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-05-14 00:02:07 +00:00
David Conrad
580a7465fb Add a chroma_sample_location field to define positioning of chroma samples
Originally committed as revision 18795 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-05-11 04:34:23 +00:00
Benjamin Larsson
241f5eab32 Remove dead assignments found by CSA
Originally committed as revision 18731 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-05-02 09:12:03 +00:00
Stefano Sabatini
9106a698e7 Rename bitstream.h to get_bits.h.
Originally committed as revision 18494 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-13 16:20:26 +00:00
Thilo Borgmann
7a00bbad21 Implement avcodec_decode_video2(), _audio3() and _subtitle2() which takes an
AVPacket argument rather than a const uint8_t *buf + int buf_size. This allows
passing of packet-specific flags from demuxer to decoder, such as the keyframe
flag, which appears necessary to playback corePNG P-frames.

Patch by Thilo Borgmann thilo.borgmann googlemail com, see also the thread
"Google Summer of Code participation" on the mailinglist.

Originally committed as revision 18351 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-07 15:59:50 +00:00
Daniel Verkamp
5ef251e504 Add missing av_cold in static init/close functions.
Patch by Daniel Verkamp daniel at drv dot nu.

Originally committed as revision 17526 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-22 13:48:55 +00:00
Alex Converse
00bbe27631 VP3: Do not ignore error from read_huffman_tree().
Originally committed as revision 17090 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-09 01:39:33 +00:00
Alex Converse
2c823b3ccc VP3: Prevent stack corruption from an unset custom coding method.
Originally committed as revision 16978 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-03 22:59:47 +00:00
Diego Biurrun
bad5537e2c Use full internal pathname in doxygen @file directives.
Otherwise doxygen complains about ambiguous filenames when files exist
under the same name in different subdirectories.

Originally committed as revision 16912 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-01 02:00:19 +00:00
Aurelien Jacobs
b250f9c66d Change semantic of CONFIG_*, HAVE_* and ARCH_*.
They are now always defined to either 0 or 1.

Originally committed as revision 16590 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-01-13 23:44:16 +00:00
Loren Merritt
5fecfb7d58 clear_block mmx
Originally committed as revision 16045 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-12-10 21:35:17 +00:00
David Conrad
357f45d9bc MMX VP3 Loop Filter
Originally committed as revision 15630 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-17 03:18:08 +00:00
David Conrad
c5f67c1559 Remove unused variables
Originally committed as revision 15602 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-12 19:41:17 +00:00
David Conrad
9971331dfb Move VP3 loop filter to DSPContext
Originally committed as revision 15551 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-04 10:26:17 +00:00
David Conrad
1ae4518d73 Cosmetics: reindent
Originally committed as revision 15505 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-01 14:48:54 +00:00
David Conrad
10f38380be Unneeded else
Originally committed as revision 15504 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-01 14:48:35 +00:00
David Conrad
6599e2a74a Unneeded braces
Originally committed as revision 15503 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-01 14:48:16 +00:00
David Conrad
6298f49f75 Return if unpacking motion vectors for a keyframe
Originally committed as revision 15502 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-01 14:48:00 +00:00
David Conrad
a0ce2d1bbc Cosmetics: indentation
Originally committed as revision 15501 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-01 14:44:30 +00:00
David Conrad
277e3e534b Visible width/height fields were added in Theora 3.2
Originally committed as revision 15500 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-01 14:43:08 +00:00
David Conrad
51ace5777e filter_limit_values only needs 7 bits, make its tables smaller
Originally committed as revision 15499 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-01 14:40:29 +00:00
David Conrad
ba31df31d9 Cosmetics: indentation
Originally committed as revision 15492 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-30 19:51:02 +00:00
David Conrad
fc9618195b Merge (vp3|theora)_calculate_pixel_addresses
Originally committed as revision 15491 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-30 19:50:43 +00:00
David Conrad
6920b98322 Missed hunks of last commit
Originally committed as revision 15490 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-30 19:22:20 +00:00
David Conrad
33aae37ec0 Remove unused vp3 debugging info
Originally committed as revision 15489 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-30 19:18:22 +00:00
David Conrad
12ce1f3fc1 Downgrade severity of leftover bits in header packets, and don't check for the comment header
Originally committed as revision 15469 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-30 04:18:22 +00:00
David Conrad
068e82bac1 Use skip_frame for keyframe-only decoding rather than #ifdef
Originally committed as revision 15463 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-29 22:04:35 +00:00
David Conrad
7f065b36c8 Take idct permutation into account when initializing dequantization matrices
Originally committed as revision 15344 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-17 19:29:40 +00:00
Aurelien Jacobs
4834eb191c theoradec: cosmetics: indentation
Originally committed as revision 15167 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-03 00:19:08 +00:00
Aurelien Jacobs
feaf1a7393 theoradec: skip decoding of uncoded MV in 4MV code
Thusnelda, the new experimental Theora encoder is using this Theora feature
that was previously not exploited.
fixes issue579

Originally committed as revision 15166 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-03 00:17:11 +00:00
Aurelien Jacobs
e32e2d56d4 theoradec: small 4MV code reorganization to ease future improvements
no functional changes

Originally committed as revision 15165 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-03 00:10:30 +00:00