summaryrefslogtreecommitdiff
path: root/libavcodec/rv34.c
Commit message (Collapse)AuthorAge
* rv34: 1-pass inter MB reconstructionChristophe GISQUET2012-01-16
| | | | Implement 1-pass inverse transform and reconstruction for inter blocks.
* rv34: Intra 16x16 handlingChristophe GISQUET2012-01-16
| | | | | | | Extract processing of intra 16x16 blocks from intra macroblock processing. Also implement a function performing inverse transform and block reconstruction for DC-only blocks in 1 pass instead of 2.
* rv34: Inter/intra MB code splitChristophe GISQUET2012-01-16
| | | | | | | | Split inter/intra macroblock handling code. This will allow further optimizations such as performing inverse transform and block reconstruction in a single pass as well as specialize code. Signed-off-by: Janne Grunau <janne-libav@jannau.net>
* rv34: fix and optimise frame dependency checkingJanne Grunau2012-01-12
| | | | | | | | The sporadic threading errors during fate-rv30 were caused by calling ff_thread_await_progress with mb row -1 as argument. That returns immediately since progress is initialized to -1. Not yet computed motion vectors from the reference could be used for the first macroblocks.
* rv34: DC-only inverse transformChristophe GISQUET2012-01-12
| | | | | | | | | | | | | | | When decoding coefficients, detect whether the block is DC-only, and take advantage of this knowledge to perform DC-only inverse transform. This is achieved by: - first, changing the 108x4 element modulo_three_table into a 108 element table (kind of base4), and accessing each value using mask and shifts. - then, checking low bits for 0 (as they represent the presence of higher frequency coefficients) Also provide x86 SIMD code for the DC-only inverse transform. Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
* rv34: frame-level multi-threadingJanne Grunau2012-01-10
| | | | | | | | Statistics for bourne.rmvb -an -f null 1 thread: 37.12s user 0.03s system 99% cpu 37.174 total 2 threads: 47.63s user 0.24s system 185% cpu 25.807 total 4 threads: 41.21s user 0.30s system 327% cpu 12.674 total
* rv34: use get_bits_left()Janne Grunau2012-01-10
| | | | | It is not necessary to store the bit stream length in a RV34DecContext field.
* rv34: fix invalid memory access for small video dimensionsJohn Brooks2012-01-04
| | | | | | | | | For small video dimensions calculations of the upper bound for pixel access may result in negative value. Using an unsigned comparison works only if the greater operand is non-negative. This is fixed by doing edge emulation explicitly for such conditions. Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
* rv34: joint coefficient decoding and dequantizationChristophe GISQUET2012-01-04
| | | | | | | | | | | Perform dequantization while decoding coefficients instead of performing it on the entire coefficients buffer. Since quantized coefficients are very sparse, this usually causes a small speedup. Speedup of around 1% on Panda board compared to the removed here neon code. Global speedup is probably around 3%. Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
* lavc: introduce ER_MB_END and ER_MB_ERRORLuca Barbato2011-12-13
| | | | | | Simplify a little error resilience calls Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* error_resilience: use the ER_ namespaceLuca Barbato2011-12-13
| | | | | | Add the namespace to {AC_,DC_,MV_}{END,ERROR} macros Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* rv34: move 4x4 dequant to RV34DSPContextMans Rullgard2011-12-13
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* rv34: align temporary block of "dct" coefsMans Rullgard2011-12-01
| | | | | | This is needed for optimised transforms. Signed-off-by: Mans Rullgard <mans@mansr.com>
* rv34: fix signed multiplication overflowMans Rullgard2011-11-26
| | | | | | | Multiply by unsigned 0x01010101 to replicate bytes into 32-bit word. Signed-off-by: Mans Rullgard <mans@mansr.com>
* h264: 4:2:2 intra decoding supportBaptiste Coudurier2011-10-21
| | | | | Signed-off-by: Diego Biurrun <diego@biurrun.de> Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* rv34: move inverse transform functions to DSP contextJanne Grunau2011-10-12
|
* rv34: Check for invalid slices offsetsLaurent Aimar2011-09-22
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rv34: Check for invalid slice offsetsLaurent Aimar2011-09-20
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rv34: Fix potential overreadsLaurent Aimar2011-09-19
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rv34: Fix buffer size used for MC of B frames after a resolution changeLaurent Aimar2011-09-19
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rv34: Avoid NULL dereference on corrupted bitstreamLaurent Aimar2011-09-19
| | | | | | rv34_decode_slice() can return without allocating any pictures. Signed-off-by: Martin Storsjö <martin@martin.st>
* Fixed size given to init_get_bits().Laurent Aimar2011-09-15
| | | | | | | init_get_bits() takes a number of bits and not a number of bytes as its size argument. Signed-off-by: Alex Converse <alex.converse@gmail.com>
* rv34: check that subsequent slices have the same type as first one.Kostya Shishkov2011-09-12
| | | | | | | | This prevents some crashes when corrupted bitstream reports e.g. P-type slice in I-frame. Official RealVideo decoder demands all slices to be of the same type too. Signed-off-by: Anton Khirnov <anton@khirnov.net>
* rv34: free+allocate buffer instead of reallocating it to preserve alignmentKostya Shishkov2011-08-12
| | | | Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* Add weighted motion compensation for RV40 B-framesKostya Shishkov2011-08-11
| | | | Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* RV3/4: calculate B-frame motion weights once per frameKostya Shishkov2011-08-11
| | | | Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* Move RV3/4-specific DSP functions into their own contextKostya Shishkov2011-08-11
| | | | Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* Pretty-print RV3/4 decoder sourceKostya Shishkov2011-08-09
| | | | Signed-off-by: Diego Biurrun <diego@biurrun.de>
* Correct chroma vector calculation for RealVideo 3.Kostya Shishkov2011-08-02
| | | | | | | Old version divided it wrong, which resulted in chroma drift (visible on FATE sample too as dirty trails left by clouds). Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* Eliminate FF_COMMON_FRAME macro.Diego Biurrun2011-07-11
| | | | | FF_COMMON_FRAME holds the contents of the AVFrame structure and is also copied to struct Picture. Replace by an embedded AVFrame structure in struct Picture.
* Remove unused static tables and static inline functions.Diego Biurrun2011-07-04
|
* doxygen: Prefer member groups over grouping into modulesReinhard Tartler2011-07-02
| | | | | | | | | Before this, almost all module groups have been used for grouping functions and fields in structures semantically. This causes them to not appear properly in the file documentation and needlessly clutters up the "Modules" index. Additionally, this commit streamlines some spelling and appearances.
* Adds 8-, 9- and 10-bit versions of some of the functions used by the h264 ↵Oskar Arvidsson2011-05-10
| | | | | | | | | | | | | | | | | decoder. This patch lets e.g. dsputil_init chose dsp functions with respect to the bit depth to decode. The naming scheme of bit depth dependent functions is <base name>_<bit depth>[_<prefix>] (i.e. the old clear_blocks_c is now named clear_blocks_8_c). Note: Some of the functions for high bit depth is not dependent on the bit depth, but only on the pixel size. This leaves some room for optimizing binary size. Preparatory patch for high bit depth h264 decoding support. Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* Replace deprecated FF_*_TYPE symbols with AV_PICTURE_TYPE_*.Stefano Sabatini2011-05-02
| | | | Signed-off-by: Diego Biurrun <diego@biurrun.de>
* lavc: remove FF_API_HURRY_UP cruftAnton Khirnov2011-04-26
|
* lavc: mark hurry_up for removal on next major bumpAnton Khirnov2011-04-02
| | | | | It has been deprecated for about five years, skip_idct/skip_frame should be used instead.
* Replace FFmpeg with Libav in licence headersMans Rullgard2011-03-19
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* Move ff_emulated_edge_mc() into DSPContext.Ronald S. Bultje2011-01-28
|
* Disambiguate bitstream groups for AAC and RV30/RV40.Diego Biurrun2010-07-02
| | | | Originally committed as revision 23995 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Fix "initialization from incompatible pointer type" warning in rv34.Eli Friedman2010-06-30
| | | | | | Patch by Eli Friedman (at gmail). Originally committed as revision 23897 to svn://svn.ffmpeg.org/ffmpeg/trunk
* rv34: kill VLAsMåns Rullgård2010-06-25
| | | | Originally committed as revision 23774 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Remove explicit filename from Doxygen @file commands.Diego Biurrun2010-04-20
| | | | | | | | Passing an explicit filename to this command is only necessary if the documentation in the @file block refers to a file different from the one the block resides in. Originally committed as revision 22921 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Revert commit 22378.Vitor Sessak2010-03-09
| | | | | | It broke FATE and kostya asked me on IRC to revert it. Originally committed as revision 22379 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Check for reference frames so RV 3/4 won't segfault trying to copy data fromKostya Shishkov2010-03-09
| | | | | | nonexisting reference. Originally committed as revision 22378 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Call avcodec_set_dimensions() instead of simply setting avctx->width/heightKostya Shishkov2009-11-24
| | | | | | when frame dimensions change in RV3/4. Originally committed as revision 20595 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Update dimensions in AVCodecContext when RV3/4 frame dimensions changeKostya Shishkov2009-11-22
| | | | Originally committed as revision 20572 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Convert ZERO8x2 macro into inline functionKostya Shishkov2009-08-30
| | | | Originally committed as revision 19746 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Zeroing pic->motion_val in RV3/4 causes alignment problems on some 64-bitKostya Shishkov2009-08-30
| | | | | | | architectures since stride is multiple of 4 and not of 8, so split fill_rectangle() calls to operate on 32-bit words instead of 64-bit ones. Originally committed as revision 19744 to svn://svn.ffmpeg.org/ffmpeg/trunk
* Adjust r->avail_cache[] indexes to avoid alignment issues when zeroing blockKostya Shishkov2009-08-30
| | | | | | inside it. Originally committed as revision 19743 to svn://svn.ffmpeg.org/ffmpeg/trunk
* RV3/4 intra types array causes alignment issues (at least on ARM5), thus changeKostya Shishkov2009-07-01
| | | | | | its stride and offset to always have align 4. Originally committed as revision 19316 to svn://svn.ffmpeg.org/ffmpeg/trunk