summaryrefslogtreecommitdiff
path: root/libavcodec/rv34.c
Commit message (Collapse)AuthorAge
* lavc: Edge emulation with dst/src linesizeRonald S. Bultje2013-11-15
| | | | | | 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-31
|
* rv34: Fix a memory leak on errorsMartin Storsjö2013-09-19
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* Remove commented-out debug #define cruftDiego Biurrun2013-05-16
|
* lavc decoders: work with refcounted frames.Anton Khirnov2013-03-08
|
* Add missing error_resilience includes to files that use ERDiego Biurrun2013-03-07
|
* error_resilience: decouple ER from MpegEncContextAnton Khirnov2013-02-15
|
* dsputil: Move LOCAL_ALIGNED macros to libavutilDiego Biurrun2013-02-08
|
* rv34: Drop now unnecessary dsputil dependenciesDiego Biurrun2013-02-06
|
* Drop DCTELEM typedefDiego Biurrun2013-01-22
| | | | | | 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-20
| | | | | | | | 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-08
|
* rv34: use ff_MPV_common_frame_size_change()Janne Grunau2012-09-19
| | | | | 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-07
|
* rv34: remove inline keyword from rv34_decode_block().Ronald S. Bultje2012-04-28
| | | | Force-inlining increases object size by 8kB and causes a 2% slowdown.
* rv40: change a logical test into a bitwise one.Christophe Gisquet2012-04-28
| | | | Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* rv34: remove constant parameterChristophe Gisquet2012-04-28
| | | | | | 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-10
| | | | | | | | | | 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-28
| | | | Also remove one pointless zero initialization in rangecoder.c.
* rv34: set mb_num_left to 0 after finishing a frameRonald S. Bultje2012-03-26
| | | | | | | | | | | | | 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-23
|
* rv34: Handle only complete frames in frame-mt.Janne Grunau2012-03-23
| | | | | | | | 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-07
| | | | | | | 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-07
| | | | Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* Replace AVFrame pointer type punning by proper struct member assignments.Diego Biurrun2012-03-01
|
* mpegvideo: Add ff_ prefix to nonstatic functionsMartin Storsjö2012-02-15
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* vlc/rl: Add ff_ prefix to the nonstatic symbolsMartin Storsjö2012-02-15
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* rv34: handle size changes during frame multithreadingJanne Grunau2012-02-14
| | | | | 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-14
| | | | Also adds an error message.
* 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>