summaryrefslogtreecommitdiffstats
path: root/libavcodec/rv34.c
Commit message (Collapse)AuthorAgeFilesLines
* mpegvideo: move mpegvideo formats-related defines to mpegutils.hVittorio Giovara2014-03-161-0/+1
|
* mpegvideo: drop support for real (non-emulated) edgesAnton Khirnov2014-01-091-2/+0
| | | | | | | Several decoders disable those anyway and they are not measurably faster on x86. They might be somewhat faster on other platforms due to missing emu edge SIMD, but the gain is not large enough (and those decoders relevant enough) to justify the added complexity.
* lavc: Edge emulation with dst/src linesizeRonald S. Bultje2013-11-151-3/+9
| | | | | | Allow supporting files for which the image stride is smaller than the maximum block size + number of subpel mc taps, e.g. a 64x64 VP9 file or a 16x16 VP8 file with -fflags +emu_edge.
* rv34: stop using deprecated avcodec_set_dimensionsAnton Khirnov2013-10-311-1/+5
|
* rv34: Fix a memory leak on errorsMartin Storsjö2013-09-191-2/+6
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* Remove commented-out debug #define cruftDiego Biurrun2013-05-161-2/+0
|
* lavc decoders: work with refcounted frames.Anton Khirnov2013-03-081-81/+90
|
* Add missing error_resilience includes to files that use ERDiego Biurrun2013-03-071-0/+1
|
* error_resilience: decouple ER from MpegEncContextAnton Khirnov2013-02-151-6/+6
|
* dsputil: Move LOCAL_ALIGNED macros to libavutilDiego Biurrun2013-02-081-1/+0
|
* rv34: Drop now unnecessary dsputil dependenciesDiego Biurrun2013-02-061-2/+2
|
* Drop DCTELEM typedefDiego Biurrun2013-01-221-10/+10
| | | | | | It does not help as an abstraction and adds dsputil dependencies. Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* lavc: introduce VideoDSPContextRonald S. Bultje2012-12-201-3/+3
| | | | | | | | Move some functions from dsputil. The idea is that videodsp contains functions that are useful for a large and varied set of video decoders. Currently, it contains emulated_edge_mc() and prefetch(). Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* Replace PIX_FMT_* -> AV_PIX_FMT_*, PixelFormat -> AVPixelFormatAnton Khirnov2012-10-081-1/+1
|
* rv34: use ff_MPV_common_frame_size_change()Janne Grunau2012-09-191-11/+3
| | | | | Specialised functionality for size changes with the advantage of supporting frame size changes during frame-based multithreading.
* Replace all CODEC_ID_* with AV_CODEC_ID_*Anton Khirnov2012-08-071-3/+3
|
* rv34: remove inline keyword from rv34_decode_block().Ronald S. Bultje2012-04-281-1/+1
| | | | Force-inlining increases object size by 8kB and causes a 2% slowdown.
* rv40: change a logical test into a bitwise one.Christophe Gisquet2012-04-281-1/+1
| | | | Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* rv34: remove constant parameterChristophe Gisquet2012-04-281-11/+6
| | | | | | is_block2 was always 0, so just remove it, and change accordingly the code. Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* rv40dsp: implement prescaled versions for biweight.Christophe GISQUET2012-04-101-24/+34
| | | | | | | | | | Quite often, the original weights are multiple of 512. By prescaling them by 1/512 when they are computed (once per frame), no intermediate shifting is needed, and no prescaling on each call either. The x86 code already used that trick. Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* Replace memset(0) by zero initializations.Diego Biurrun2012-03-281-4/+1
| | | | Also remove one pointless zero initialization in rangecoder.c.
* rv34: set mb_num_left to 0 after finishing a frameRonald S. Bultje2012-03-261-0/+2
| | | | | | | | | | | | | Prevents running error resilience on a previous frame which will write to the pic->mb_type[] array of the previous image. The array might already be re-used for a new image in a subsequent thread, thus cause two threads to write to the same pic->mb_type[] array, causing a race condition which can crash in rv34_decode_cbp(), called by rv34_decode_inter_mb_header() (which accesses mb_type[] twice, assuming values are maintained, which the race condition breaks). Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: libav-stable@libav.org
* rv34: error out on size changes with frame threadingJanne Grunau2012-03-231-0/+7
|
* rv34: Handle only complete frames in frame-mt.Janne Grunau2012-03-231-79/+112
| | | | | | | | Correct handling of errors to prevent hags or crashes is very complex otherwise. The frame initializing is also moved from decode_slice() to decode_frame() for clarity.
* rv34: remove dead code in intra availability checkChristophe GISQUET2012-03-071-15/+0
| | | | | | | This was an incorrect copy-and-paste to a code not needing the original code. Spotted by Jason in a previous review but forgotten in the commit. Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* rv34: clean a bit availability checks.Christophe GISQUET2012-03-071-10/+10
| | | | Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* Replace AVFrame pointer type punning by proper struct member assignments.Diego Biurrun2012-03-011-3/+3
|
* mpegvideo: Add ff_ prefix to nonstatic functionsMartin Storsjö2012-02-151-11/+11
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* vlc/rl: Add ff_ prefix to the nonstatic symbolsMartin Storsjö2012-02-151-4/+4
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rv34: handle size changes during frame multithreadingJanne Grunau2012-02-141-64/+82
| | | | | Factors all context dynamic memory handling to its own functions. Fixes bug 220.
* rv34: use AVERROR return values in ff_rv34_decode_frame()Janne Grunau2012-02-141-4/+8
| | | | Also adds an error message.
* rv34: 1-pass inter MB reconstructionChristophe GISQUET2012-01-161-131/+96
| | | | Implement 1-pass inverse transform and reconstruction for inter blocks.
* rv34: Intra 16x16 handlingChristophe GISQUET2012-01-161-125/+156
| | | | | | | 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-161-53/+191
| | | | | | | | 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-121-2/+3
| | | | | | | | 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-121-37/+58
| | | | | | | | | | | | | | | 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-101-0/+90
| | | | | | | | 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-101-2/+1
| | | | | 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-041-2/+3
| | | | | | | | | 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-041-36/+44
| | | | | | | | | | | 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-131-2/+2
| | | | | | Simplify a little error resilience calls Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
* error_resilience: use the ER_ namespaceLuca Barbato2011-12-131-2/+2
| | | | | | 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-131-16/+2
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* rv34: align temporary block of "dct" coefsMans Rullgard2011-12-011-2/+2
| | | | | | This is needed for optimised transforms. Signed-off-by: Mans Rullgard <mans@mansr.com>
* rv34: fix signed multiplication overflowMans Rullgard2011-11-261-1/+1
| | | | | | | 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-211-1/+1
| | | | | 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-121-79/+3
|
* rv34: Check for invalid slices offsetsLaurent Aimar2011-09-221-1/+10
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rv34: Check for invalid slice offsetsLaurent Aimar2011-09-201-4/+5
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rv34: Fix potential overreadsLaurent Aimar2011-09-191-2/+3
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
OpenPOWER on IntegriCloud