Statistics
| Branch: | Revision:

ffmpeg / libavcodec / vp3.c @ 60867312

History | View | Annotate | Download (76.5 KB)

# Date Author Comment
60867312 04/16/2010 12:21 PM David Conrad

vp3: More buffer length checks

.5% slower to fix some crashes on invalid streams

Originally committed as revision 22893 to svn://svn.ffmpeg.org/ffmpeg/trunk

d7097c2d 04/16/2010 12:21 PM David Conrad

vp3: Remove internal debug statement

Originally committed as revision 22892 to svn://svn.ffmpeg.org/ffmpeg/trunk

72415b2a 03/30/2010 11:30 PM Stefano Sabatini

Define AVMediaType enum, and use it instead of enum CodecType, which
is deprecated and will be dropped at the next major bump.

Originally committed as revision 22735 to svn://svn.ffmpeg.org/ffmpeg/trunk

14268254 03/13/2010 10:25 AM David Conrad

vp3: Split out motion vectors to their own array

1.5% faster overall decode on my penryn

Originally committed as revision 22504 to svn://svn.ffmpeg.org/ffmpeg/trunk

1e76a1da 03/13/2010 05:59 AM David Conrad

theora: Add support for 4:2:2 and 4:4:4 subsampling

Originally committed as revision 22500 to svn://svn.ffmpeg.org/ffmpeg/trunk

1a856042 03/13/2010 05:59 AM David Conrad

vp3: remove unneeded error, this is internal and doesn't happen

Originally committed as revision 22499 to svn://svn.ffmpeg.org/ffmpeg/trunk

57783884 03/13/2010 05:56 AM David Conrad

vp3: Make fragment_width _height by plane

Originally committed as revision 22498 to svn://svn.ffmpeg.org/ffmpeg/trunk

1c183aa4 03/13/2010 05:56 AM David Conrad

vp3: we only need a temp MV array of size 4

Originally committed as revision 22497 to svn://svn.ffmpeg.org/ffmpeg/trunk

703acd54 03/13/2010 05:56 AM David Conrad

vp3: Use memset to clear the fragment array

Originally committed as revision 22496 to svn://svn.ffmpeg.org/ffmpeg/trunk

cd9c03f5 03/13/2010 05:56 AM David Conrad

vp3: Init MVs to 0

Originally committed as revision 22495 to svn://svn.ffmpeg.org/ffmpeg/trunk

a16389c1 03/13/2010 05:56 AM David Conrad

vp3: Simplify init_block_mapping

Originally committed as revision 22494 to svn://svn.ffmpeg.org/ffmpeg/trunk

f50dafa8 03/10/2010 12:59 AM David Conrad

vp3: avoid buffer overread in coeff decode

I couldn't measure it to be slower for normal interframe videos.
For the worst case, high-bitrate intra-only videos, it can be 0.7% slower.

Originally committed as revision 22416 to svn://svn.ffmpeg.org/ffmpeg/trunk

d63a7187 03/09/2010 06:52 AM David Conrad

vp3: correctly clip vp3_draw_horiz_band call

Originally committed as revision 22377 to svn://svn.ffmpeg.org/ffmpeg/trunk

ff65969f 03/09/2010 12:29 AM David Conrad

vp3: Set pict_type

Originally committed as revision 22361 to svn://svn.ffmpeg.org/ffmpeg/trunk

7a4e8b59 03/09/2010 12:29 AM David Conrad

vp3: Allocate a dummy reference frame if we have no keyframe

Originally committed as revision 22360 to svn://svn.ffmpeg.org/ffmpeg/trunk

0c9afacb 03/09/2010 12:29 AM David Conrad

vp3: use FF_BUFFER_TYPE_COPY

Originally committed as revision 22359 to svn://svn.ffmpeg.org/ffmpeg/trunk

e72d2d12 03/09/2010 12:29 AM David Conrad

vp3: Don't leak buffers on errors

Originally committed as revision 22358 to svn://svn.ffmpeg.org/ffmpeg/trunk

739b5090 03/09/2010 12:29 AM David Conrad

vp3: Simplify buffer management

Originally committed as revision 22357 to svn://svn.ffmpeg.org/ffmpeg/trunk

01f9640b 03/09/2010 12:29 AM David Conrad

vp3: be less spammy on broken files

Originally committed as revision 22356 to svn://svn.ffmpeg.org/ffmpeg/trunk

84dc2d8a 03/06/2010 02:24 PM Måns Rullgård

Remove DECLARE_ALIGNED_{8,16} macros

These macros are redundant. All uses are replaced with the generic
DECLARE_ALIGNED macro instead.

Originally committed as revision 22233 to svn://svn.ffmpeg.org/ffmpeg/trunk

e2720b6b 03/04/2010 10:01 AM David Conrad

Really fix 2.95

Originally committed as revision 22204 to svn://svn.ffmpeg.org/ffmpeg/trunk

0448ef77 03/04/2010 09:25 AM David Conrad

Maybe fix gcc 2.95

Originally committed as revision 22203 to svn://svn.ffmpeg.org/ffmpeg/trunk

c72625f2 03/03/2010 11:27 PM David Conrad

Delay translating DCT tokens into coefficients until immediately before IDCT

This is generally around 12% faster than the prior method of creating a
linked list for each block as tokens are read, but can be anywhere from
8% to 28% faster depending on file and CPU....

7a095ea6 03/03/2010 11:27 PM David Conrad

Do MC and IDCT in coding (hilbert) order

This increases the slice size to 64 pixels, due to having to decode an
entire chroma superblock row per slice.

This can be up to 6% slower depending on clip and CPU, but is necessary
for future optimizations that gain significantly more than was lost....

35c28d23 03/03/2010 11:27 PM David Conrad

Explictly separate decoding whether fragments are coded by plane

Originally committed as revision 22188 to svn://svn.ffmpeg.org/ffmpeg/trunk

770128c4 02/28/2010 03:02 AM Carl Eugen Hoyos

Remove declaration of unused variables.

Originally committed as revision 22102 to svn://svn.ffmpeg.org/ffmpeg/trunk

6cb35b45 02/21/2010 12:11 AM David Conrad

Simplify determing whether fragments are coded

No measurable speed difference

Originally committed as revision 21931 to svn://svn.ffmpeg.org/ffmpeg/trunk

a8926476 02/21/2010 12:10 AM David Conrad

Handle Theora's continued runs in superblock coding.

This doesn't really matter yet since 4:2:0 1080p has only 3060 superblocks,
but larger resolutions or 4:4:4 1080p could hit this case.

Originally committed as revision 21930 to svn://svn.ffmpeg.org/ffmpeg/trunk

855c720c 02/21/2010 12:10 AM David Conrad

Decode fully coded superblocks in the same manner as partial superblocks and qpi

No speed difference, but it will simplify the special 4129 case.

Originally committed as revision 21929 to svn://svn.ffmpeg.org/ffmpeg/trunk

ecb51b25 02/21/2010 12:10 AM David Conrad

Make the special 4129 case for long-run bit strings a #define and explain it

Originally committed as revision 21928 to svn://svn.ffmpeg.org/ffmpeg/trunk

33dbc1b7 02/21/2010 12:10 AM David Conrad

Use memset to set the runs partially coded superblocks

Much faster for long runs (e.g. nearly uncoded frames), slightly faster
for the general case.

Originally committed as revision 21927 to svn://svn.ffmpeg.org/ffmpeg/trunk

40d11227 02/17/2010 08:36 PM Måns Rullgård

Use LOCAL_ALIGNED macro for local arrays

Originally committed as revision 21866 to svn://svn.ffmpeg.org/ffmpeg/trunk

161e8cf4 02/13/2010 06:59 PM David Conrad

Move CODEC_FLAG_GRAY check to outer loop

Originally committed as revision 21805 to svn://svn.ffmpeg.org/ffmpeg/trunk

7c2e31d1 02/13/2010 06:59 PM David Conrad

Move branch based on custom mode outside the loop

Originally committed as revision 21804 to svn://svn.ffmpeg.org/ffmpeg/trunk

eb691ef2 02/13/2010 06:55 PM David Conrad

Directly check whether a fragment is coded for 4MV mode instead of iterating
through the entire coded fragment list.

Originally committed as revision 21803 to svn://svn.ffmpeg.org/ffmpeg/trunk

15675ce6 02/13/2010 06:55 PM David Conrad

Eliminate fragment -> macroblock mapping array

Originally committed as revision 21802 to svn://svn.ffmpeg.org/ffmpeg/trunk

ea676144 02/13/2010 06:55 PM David Conrad

Eliminate macroblock -> fragment mapping array

Originally committed as revision 21801 to svn://svn.ffmpeg.org/ffmpeg/trunk

19cd517d 02/13/2010 06:55 PM David Conrad

Eliminate superblock <-> macroblock mapping array

Originally committed as revision 21800 to svn://svn.ffmpeg.org/ffmpeg/trunk

735acf56 02/12/2010 10:01 PM David Conrad

Don't pre-calculate first_pixel

3.6% faster on Elephants_Dream_HD-q7-aq7.ogg on my penryn

Originally committed as revision 21781 to svn://svn.ffmpeg.org/ffmpeg/trunk

a8de3901 02/12/2010 10:01 PM David Conrad

Implement CODEC_CAP_DRAW_HORIZ_BAND for VP3 decoder

Originally committed as revision 21780 to svn://svn.ffmpeg.org/ffmpeg/trunk

621f9a40 02/12/2010 10:01 PM David Conrad

Cosmetics: reindent

Originally committed as revision 21779 to svn://svn.ffmpeg.org/ffmpeg/trunk

256c0662 02/12/2010 10:01 PM David Conrad

Do loop filter per-row rather than per-frame

3% faster on Elephants_Dream_HD-q7-aq7.ogg on my penryn

Originally committed as revision 21778 to svn://svn.ffmpeg.org/ffmpeg/trunk

fe313556 02/12/2010 10:01 PM David Conrad

Move apply_loop_filter above render_slice, it'll be used by the latter soon

Originally committed as revision 21777 to svn://svn.ffmpeg.org/ffmpeg/trunk

ea3c2d53 02/12/2010 10:01 PM David Conrad

Export Theora colorspace info if present

Originally committed as revision 21776 to svn://svn.ffmpeg.org/ffmpeg/trunk

337f5c6e 02/12/2010 10:01 PM David Conrad

Theora 3.4 doesn't exist; these fields were misunderstandings of the spec

Originally committed as revision 21775 to svn://svn.ffmpeg.org/ffmpeg/trunk

45c3c925 02/12/2010 10:00 PM David Conrad

Remove unused code that's moved elsewhere

Originally committed as revision 21774 to svn://svn.ffmpeg.org/ffmpeg/trunk

c6727809 01/22/2010 03:25 AM Måns Rullgård

Move array specifiers outside DECLARE_ALIGNED() invocations

Originally committed as revision 21377 to svn://svn.ffmpeg.org/ffmpeg/trunk

da8af938 12/19/2009 07:34 AM Mike Melanson

Cosmetic: indent after last change.

Originally committed as revision 20896 to svn://svn.ffmpeg.org/ffmpeg/trunk

e6e32bdc 12/19/2009 07:33 AM Mike Melanson

Optimize unpack_vectors() by not shuffling around redundant vectors.
Inspired by guidance from Dark Shikari. On a Core 2 Duo 2.0 GHz, this
change decodes the 10-minute Big Buck Bunny 1080p short about 2 seconds
faster.

Originally committed as revision 20895 to svn://svn.ffmpeg.org/ffmpeg/trunk

08f19605 12/06/2009 03:39 PM Carl Eugen Hoyos

Cosmetics: Fix indentation after r20751.

Originally committed as revision 20752 to svn://svn.ffmpeg.org/ffmpeg/trunk

bfb5a8ce 12/06/2009 03:38 PM Jason Garrett-Glaser

Simplified deblocking checks.

Patch by Dark Shikari

Originally committed as revision 20751 to svn://svn.ffmpeg.org/ffmpeg/trunk

50ba3fd7 12/06/2009 03:33 PM Jason Garrett-Glaser

Faster checks in reverse_dc_prediction.

Patch by Dark Shikari

Originally committed as revision 20750 to svn://svn.ffmpeg.org/ffmpeg/trunk

c11cb375 12/06/2009 03:31 PM Jason Garrett-Glaser

Check transform==15 first, since it's more common than 13.

Patch by Dark Shikari

Originally committed as revision 20749 to svn://svn.ffmpeg.org/ffmpeg/trunk

306a61b3 12/06/2009 03:30 PM Carl Eugen Hoyos

Revert r20747: It mixed functional and cosmetical changes.

Originally committed as revision 20748 to svn://svn.ffmpeg.org/ffmpeg/trunk

63c0b3d9 12/06/2009 12:48 PM Jason Garrett-Glaser

Various VP3 optimizations.
Faster checks in reverse_dc_prediction.
Simplified deblocking checks.
Check transform==15 first, since it's more common than 13.

Originally committed as revision 20747 to svn://svn.ffmpeg.org/ffmpeg/trunk

9d8bb031 12/02/2009 04:06 AM Mike Melanson

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....

098523eb 12/02/2009 02:30 AM Mike Melanson

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...

0efbd068 09/24/2009 06:33 AM Mike Melanson

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

310afddf 09/23/2009 12:42 PM Google Chrome

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

fa6f2751 09/23/2009 12:27 PM Google Chrome

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

428984b0 09/23/2009 05:38 AM Mike Melanson

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

138fe832 09/22/2009 03:58 PM Mike Melanson

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...

ee3d7f58 09/21/2009 01:37 AM Mike Melanson

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

b8791583 09/06/2009 08:27 AM Reimar Döffinger

compatible_frame array can be static const, too.

Originally committed as revision 19779 to svn://svn.ffmpeg.org/ffmpeg/trunk

bb991087 09/05/2009 05:28 PM Reimar Döffinger

Make vp3 arrays static const where possible.

Originally committed as revision 19771 to svn://svn.ffmpeg.org/ffmpeg/trunk

3aab27b4 07/22/2009 11:37 PM Måns Rullgård

Remove useless #include <unistd.h> from many files

Originally committed as revision 19499 to svn://svn.ffmpeg.org/ffmpeg/trunk

c79c960a 07/06/2009 10:28 AM Reimar Döffinger

Remove useless ret variable added in last revision again.

Originally committed as revision 19357 to svn://svn.ffmpeg.org/ffmpeg/trunk

7cda8150 07/06/2009 09:35 AM Reimar Döffinger

100l, theora_decode_init must pass on errors from vp3_decode_init

Originally committed as revision 19356 to svn://svn.ffmpeg.org/ffmpeg/trunk

c4b7b8bf 07/06/2009 09:22 AM Reimar Döffinger

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

e13cca4b 07/05/2009 06:27 PM Reimar Döffinger

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

7fa5f999 07/05/2009 06:25 PM Reimar Döffinger

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

7f57905d 06/05/2009 08:44 AM Baptiste Coudurier

vp3 and theora decoders use get_buffer, set CODEC_CAP_DR1

Originally committed as revision 19107 to svn://svn.ffmpeg.org/ffmpeg/trunk

f2264fa5 05/29/2009 09:43 PM David Conrad

Support block-level quantization in Theora

Originally committed as revision 18986 to svn://svn.ffmpeg.org/ffmpeg/trunk

ef516f73 05/22/2009 09:32 PM David Conrad

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

0a8dedc9 05/14/2009 12:02 AM David Conrad

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

580a7465 05/11/2009 04:34 AM David Conrad

Add a chroma_sample_location field to define positioning of chroma samples

Originally committed as revision 18795 to svn://svn.ffmpeg.org/ffmpeg/trunk

241f5eab 05/02/2009 09:12 AM Benjamin Larsson

Remove dead assignments found by CSA

Originally committed as revision 18731 to svn://svn.ffmpeg.org/ffmpeg/trunk

9106a698 04/13/2009 04:20 PM Stefano Sabatini

Rename bitstream.h to get_bits.h.

Originally committed as revision 18494 to svn://svn.ffmpeg.org/ffmpeg/trunk

7a00bbad 04/07/2009 03:59 PM Thilo Borgmann

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....

5ef251e5 02/22/2009 01:48 PM Daniel Verkamp

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

00bbe276 02/09/2009 01:39 AM Alex Converse

VP3: Do not ignore error from read_huffman_tree().

Originally committed as revision 17090 to svn://svn.ffmpeg.org/ffmpeg/trunk

2c823b3c 02/03/2009 10:59 PM Alex Converse

VP3: Prevent stack corruption from an unset custom coding method.

Originally committed as revision 16978 to svn://svn.ffmpeg.org/ffmpeg/trunk

bad5537e 02/01/2009 02:00 AM Diego Biurrun

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

b250f9c6 01/13/2009 11:44 PM Aurelien Jacobs

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

5fecfb7d 12/10/2008 09:35 PM Loren Merritt

clear_block mmx

Originally committed as revision 16045 to svn://svn.ffmpeg.org/ffmpeg/trunk

357f45d9 10/17/2008 03:18 AM David Conrad

MMX VP3 Loop Filter

Originally committed as revision 15630 to svn://svn.ffmpeg.org/ffmpeg/trunk

c5f67c15 10/12/2008 07:41 PM David Conrad

Remove unused variables

Originally committed as revision 15602 to svn://svn.ffmpeg.org/ffmpeg/trunk

9971331d 10/04/2008 10:26 AM David Conrad

Move VP3 loop filter to DSPContext

Originally committed as revision 15551 to svn://svn.ffmpeg.org/ffmpeg/trunk

1ae4518d 10/01/2008 02:48 PM David Conrad

Cosmetics: reindent

Originally committed as revision 15505 to svn://svn.ffmpeg.org/ffmpeg/trunk

10f38380 10/01/2008 02:48 PM David Conrad

Unneeded else

Originally committed as revision 15504 to svn://svn.ffmpeg.org/ffmpeg/trunk

6599e2a7 10/01/2008 02:48 PM David Conrad

Unneeded braces

Originally committed as revision 15503 to svn://svn.ffmpeg.org/ffmpeg/trunk

6298f49f 10/01/2008 02:48 PM David Conrad

Return if unpacking motion vectors for a keyframe

Originally committed as revision 15502 to svn://svn.ffmpeg.org/ffmpeg/trunk

a0ce2d1b 10/01/2008 02:44 PM David Conrad

Cosmetics: indentation

Originally committed as revision 15501 to svn://svn.ffmpeg.org/ffmpeg/trunk

277e3e53 10/01/2008 02:43 PM David Conrad

Visible width/height fields were added in Theora 3.2

Originally committed as revision 15500 to svn://svn.ffmpeg.org/ffmpeg/trunk

51ace577 10/01/2008 02:40 PM David Conrad

filter_limit_values only needs 7 bits, make its tables smaller

Originally committed as revision 15499 to svn://svn.ffmpeg.org/ffmpeg/trunk

ba31df31 09/30/2008 07:51 PM David Conrad

Cosmetics: indentation

Originally committed as revision 15492 to svn://svn.ffmpeg.org/ffmpeg/trunk

fc961819 09/30/2008 07:50 PM David Conrad

Merge (vp3|theora)_calculate_pixel_addresses

Originally committed as revision 15491 to svn://svn.ffmpeg.org/ffmpeg/trunk

6920b983 09/30/2008 07:22 PM David Conrad

Missed hunks of last commit

Originally committed as revision 15490 to svn://svn.ffmpeg.org/ffmpeg/trunk

33aae37e 09/30/2008 07:18 PM David Conrad

Remove unused vp3 debugging info

Originally committed as revision 15489 to svn://svn.ffmpeg.org/ffmpeg/trunk

12ce1f3f 09/30/2008 04:18 AM David Conrad

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