David Conrad
d63a718764
vp3: correctly clip vp3_draw_horiz_band call
...
Originally committed as revision 22377 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-09 06:52:33 +00:00
David Conrad
ff65969fd8
vp3: Set pict_type
...
Originally committed as revision 22361 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-09 00:29:26 +00:00
David Conrad
7a4e8b5913
vp3: Allocate a dummy reference frame if we have no keyframe
...
Originally committed as revision 22360 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-09 00:29:22 +00:00
David Conrad
0c9afacbf5
vp3: use FF_BUFFER_TYPE_COPY
...
Originally committed as revision 22359 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-09 00:29:19 +00:00
David Conrad
e72d2d1221
vp3: Don't leak buffers on errors
...
Originally committed as revision 22358 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-09 00:29:16 +00:00
David Conrad
739b5090af
vp3: Simplify buffer management
...
Originally committed as revision 22357 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-09 00:29:12 +00:00
David Conrad
01f9640b21
vp3: be less spammy on broken files
...
Originally committed as revision 22356 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-09 00:29:09 +00:00
Måns Rullgård
84dc2d8afa
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
2010-03-06 14:24:59 +00:00
David Conrad
e2720b6b1e
Really fix 2.95
...
Originally committed as revision 22204 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-04 10:01:03 +00:00
David Conrad
0448ef7788
Maybe fix gcc 2.95
...
Originally committed as revision 22203 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-04 09:25:42 +00:00
David Conrad
c72625f299
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.
Originally committed as revision 22190 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-03 23:27:43 +00:00
David Conrad
7a095ea6fb
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.
Originally committed as revision 22189 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-03 23:27:40 +00:00
David Conrad
35c28d23cb
Explictly separate decoding whether fragments are coded by plane
...
Originally committed as revision 22188 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-03 23:27:37 +00:00
Carl Eugen Hoyos
770128c448
Remove declaration of unused variables.
...
Originally committed as revision 22102 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-28 03:02:25 +00:00
David Conrad
6cb35b45e6
Simplify determing whether fragments are coded
...
No measurable speed difference
Originally committed as revision 21931 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-21 00:11:01 +00:00
David Conrad
a89264761f
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
2010-02-21 00:10:58 +00:00
David Conrad
855c720c86
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
2010-02-21 00:10:54 +00:00
David Conrad
ecb51b25bb
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
2010-02-21 00:10:51 +00:00
David Conrad
33dbc1b7ca
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
2010-02-21 00:10:47 +00:00
Måns Rullgård
40d1122752
Use LOCAL_ALIGNED macro for local arrays
...
Originally committed as revision 21866 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-17 20:36:20 +00:00
David Conrad
161e8cf42c
Move CODEC_FLAG_GRAY check to outer loop
...
Originally committed as revision 21805 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 18:59:25 +00:00
David Conrad
7c2e31d1f0
Move branch based on custom mode outside the loop
...
Originally committed as revision 21804 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 18:59:21 +00:00
David Conrad
eb691ef219
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
2010-02-13 18:55:27 +00:00
David Conrad
15675ce609
Eliminate fragment -> macroblock mapping array
...
Originally committed as revision 21802 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 18:55:24 +00:00
David Conrad
ea67614457
Eliminate macroblock -> fragment mapping array
...
Originally committed as revision 21801 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 18:55:21 +00:00
David Conrad
19cd517dbf
Eliminate superblock <-> macroblock mapping array
...
Originally committed as revision 21800 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-13 18:55:17 +00:00
David Conrad
735acf567c
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
2010-02-12 22:01:38 +00:00
David Conrad
a8de390163
Implement CODEC_CAP_DRAW_HORIZ_BAND for VP3 decoder
...
Originally committed as revision 21780 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-12 22:01:35 +00:00
David Conrad
621f9a40b1
Cosmetics: reindent
...
Originally committed as revision 21779 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-12 22:01:32 +00:00
David Conrad
256c0662ef
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
2010-02-12 22:01:29 +00:00
David Conrad
fe3135564a
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
2010-02-12 22:01:25 +00:00
David Conrad
ea3c2d5393
Export Theora colorspace info if present
...
Originally committed as revision 21776 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-12 22:01:22 +00:00
David Conrad
337f5c6e30
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
2010-02-12 22:01:18 +00:00
David Conrad
45c3c92576
Remove unused code that's moved elsewhere
...
Originally committed as revision 21774 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-02-12 22:00:29 +00:00
Måns Rullgård
c67278098d
Move array specifiers outside DECLARE_ALIGNED() invocations
...
Originally committed as revision 21377 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-01-22 03:25:11 +00:00
Mike Melanson
da8af9388c
Cosmetic: indent after last change.
...
Originally committed as revision 20896 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-19 07:34:11 +00:00
Mike Melanson
e6e32bdc5f
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
2009-12-19 07:33:10 +00:00
Carl Eugen Hoyos
08f1960588
Cosmetics: Fix indentation after r20751.
...
Originally committed as revision 20752 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-06 15:39:25 +00:00
Jason Garrett-Glaser
bfb5a8cec6
Simplified deblocking checks.
...
Patch by Dark Shikari
Originally committed as revision 20751 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-06 15:38:05 +00:00
Jason Garrett-Glaser
50ba3fd713
Faster checks in reverse_dc_prediction.
...
Patch by Dark Shikari
Originally committed as revision 20750 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-06 15:33:48 +00:00
Jason Garrett-Glaser
c11cb37520
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
2009-12-06 15:31:58 +00:00
Carl Eugen Hoyos
306a61b33e
Revert r20747: It mixed functional and cosmetical changes.
...
Originally committed as revision 20748 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-12-06 15:30:53 +00:00
Jason Garrett-Glaser
63c0b3d920
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
2009-12-06 12:48:09 +00:00
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