summaryrefslogtreecommitdiff
path: root/libavcodec/vp9.c
Commit message (Collapse)AuthorAgeFilesLines
* vp9: split decode_coeff_b loop inside txsz branch.Ronald S. Bultje2014-02-171-56/+99
| | | | | | | | The advantage of this is that the is32x32 division branch in decode_coeffs_b is removed from the inner loop to outside the block coef decoding loop in decode_coeffs. Also, it allows us to merge the txsz branches from the block coef decoding loop, the context merge and the context split.
* vp9: fix compilation with !HAVE_FAST_64BIT.Clément Bœsch2014-02-091-3/+3
| | | | Spotted-by: Carl Eugen Hoyos <cehoyos@ag.or.at>
* vp9: invert order in l[] intra prediction array.Ronald S. Bultje2014-02-091-7/+7
| | | | | | The directional intra predictors either don't care about order (dc, h, dc_left, tm), or they prefer inverted order (vr, dr, hd). This allows more efficient SIMD implementations.
* vp9: remove memset in loopfilter level setting loop.Ronald S. Bultje2014-02-091-10/+53
| | | | Use same function for segmentation map writing also.
* vp9: coef decoding context-splat speedup.Ronald S. Bultje2014-02-091-10/+42
|
* vp9: decode_mode context optimizations.Ronald S. Bultje2014-02-091-28/+75
|
* vp9: more aligned zeroes.Ronald S. Bultje2014-02-091-2/+3
|
* vp9: faster skip-block coefficient blanking.Ronald S. Bultje2014-02-091-6/+27
|
* vp9: coef context reading optimization.Ronald S. Bultje2014-02-091-14/+17
|
* vp9: just disallow temporal or no-update segmentation on size-change.Ronald S. Bultje2014-02-091-9/+12
| | | | | | The spec doesn't describe how it should be decoded so this is probably the safest thing to do. Fixes valgrind errors on fuzzed11.ivf and fixes valgrind errors on fuzzed10.ivf differently.
* vp9: don't allow retaining old segmentation maps after a size change.Ronald S. Bultje2014-02-081-4/+9
| | | | Fixes valgrind warnings on fuzzed10.ivf.
* vp9: some variable re-arrangements for alignment.Ronald S. Bultje2014-02-081-23/+35
|
* vp9: re-allocate block buffers on uses_2pass change w/o size change.Ronald S. Bultje2014-02-081-1/+22
| | | | Fixes valgrind errors and crashes in fuzzed9.ivf.
* vp9: fix mix-up of last-frame/cur-frame in frame size checks.Ronald S. Bultje2014-02-081-2/+5
| | | | Fixes invalid reads in fuzzed7.ivf.
* vp9: fix invalid ref frame w/h on size change.Ronald S. Bultje2014-01-261-27/+36
| | | | | | | | | Fixes invalid reads and crashes in vp90-2-05-resize.webm and fuzzed6.ivf. The output is still not identical to what libvpx does (because we don't actually scale in MC). Reviewed-by: ubitux Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* vp9: disable use_last_frame_mvs on resolution change (scalable).Ronald S. Bultje2014-01-261-1/+2
| | | | | | | | Prevents some invalid memory accesses after resolution change in vp90-2-05-resize.webm, and libvpx does this too. Reviewed-by: ubitux Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* vp9: fix memory corruption if header decoding fails after size change.Ronald S. Bultje2014-01-241-1/+2
|
* vp9: fix mt-related hang a parser infinite loop.Ronald S. Bultje2014-01-111-2/+6
| | | | | | | Fixes trac ticket 3274. Looked-at-by: ubitux Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* Merge commit 'ca96e337169093979d7c763064ad9dae12b3108c'Michael Niedermayer2014-01-091-2/+2
|\ | | | | | | | | | | | | | | | | | | * commit 'ca96e337169093979d7c763064ad9dae12b3108c': vp9: drop support for real (non-emulated) edges Conflicts: libavcodec/vp9block.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavc: VP9 decoderRonald S. Bultje2013-11-151-0/+1270
| | | | | | | | | | | | | | Originally written by Ronald S. Bultje <rsbultje@gmail.com> and Clément Bœsch <u@pkh.me> Further contributions by: Anton Khirnov <anton@khirnov.net> Diego Biurrun <diego@biurrun.de> Luca Barbato <lu_zero@gentoo.org> Martin Storsjö <martin@martin.st> Signed-off-by: Luca Barbato <lu_zero@gentoo.org> Signed-off-by: Anton Khirnov <anton@khirnov.net>
* vp9: make mv bounds 32bit.Ronald S. Bultje2014-01-071-1/+1
| | | | Fixes an assert in file from trac ticket 3188.
* vp9: reset contextual caches on frame size change with mt enabled.Ronald S. Bultje2014-01-071-4/+12
| | | | Fixes crash/valgrind errors in trac ticket 3188 and hang in 3274.
* vp9: fix crash if segmentation=1, keyframe/intraonly=1 and updatemap=0.Ronald S. Bultje2013-12-241-1/+2
| | | | | | | | | The reference map is never used in such cases, but we accidently copied it anyway. This could cause crashes if this map has not yet been allocated. Fixes trac ticket 3188. Reviewed-by: Clément Bœsch <u@pkh.me> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* vp9: fix bug in updating of coef probabilities with parallelmode=1.Ronald S. Bultje2013-12-241-1/+4
| | | | | | | Fixes trac ticket 3228. Reviewed-by: Clément Bœsch <u@pkh.me> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* vp9: make decode_coeffs() return value void.Ronald S. Bultje2013-11-301-90/+61
| | | | | | | It was previously int and would return error if decode_coeffs_b() returns an error; however, that can never happen, so refactor all that code to make all dependent functions return void also (all the way up to decode_coeffs_sb()).
* vp9: cosmetics.Ronald S. Bultje2013-11-301-73/+73
|
* vp9: add a 2-pass decoding mode, and add frame-mt support.Ronald S. Bultje2013-11-301-90/+290
| | | | | | | For a random 1080p sample, decoding time went from 9.7sec (1 threads) to 6.0sec (2 threads) and 5.2sec (4 threads) in 2-pass decoding mode. I don't have any samples that use the parallelmode feature, but the gains should be higher.
* vp9: allocate 'b', 'block/uvblock' and 'eob/uveob' dynamically.Ronald S. Bultje2013-11-301-12/+31
|
* vp9: split last/cur_frame from the reference buffers.Ronald S. Bultje2013-11-301-102/+202
| | | | | | We need more information from last/cur_frame than from reference buffers, so we can use a simplified structure for reference buffers, and then store mvs and segmentation map information in last/cur.
* vp9: move some entries out of VP9Block into VP9Context.Ronald S. Bultje2013-11-301-59/+59
| | | | | They aren't really block-related variables in the sense that they are not block-coded, rather they are state trackers.
* vp9: split packet parsing into an AVParser.Ronald S. Bultje2013-11-301-53/+4
|
* vp9: use proper refcounting.Ronald S. Bultje2013-11-301-54/+38
| | | | | Based on something similar in libav. Author is likely Anton Khirnov <anton@khirnov.net> but I'm not sure.
* avcodec/vp9: assert on sane size in update_size().Clément Bœsch2013-11-161-0/+2
| | | | | | | | | w and h are both read as uint16 + 1 so this can not happen. A similar change was introduced in 97962b2 / 72ca830, with the av_log()+AVERROR_INVALIDDATA form, suggesting it could be triggerable somehow. Change suggested by Ronald S. Bultje.
* avcodec/vp9: remove some reset-to-zero from vp9_decode_free().Clément Bœsch2013-11-161-10/+0
| | | | | | | | | | | | Those should not be necessary. Original change by one of these developers: Anton Khirnov <anton@khirnov.net> Diego Biurrun <diego@biurrun.de> Luca Barbato <lu_zero@gentoo.org> Martin Storsjö <martin@martin.st> See 97962b2 / 72ca830
* avcodec/vp9: add a never triggerable assert.Clément Bœsch2013-11-161-0/+2
| | | | | | | | | vp8_rac_get_tree() is called with a tree of size 3, so the returned value can not be outside [0;3]. All of the [0;3] cases are handled in the switch, so the assert should not be triggerable by any means. A similar change was introduced in 97962b2 / 72ca830, with the av_log()+AVERROR_INVALIDDATA form, suggesting it could be triggerable somehow. This assert might help static analyzer, or simply the reader.
* vp9: Ensure that the arithmetic coder values are read in the right orderMartin Storsjö2013-11-161-28/+28
| | | | | | | | | The operands of an addition can be evaluated in any order, since the addition isn't a sequence point. The only operators that have a defined evaluation order are &&, ||, ?: and the sequence operator ','. This fixes fate-vp9 on ARM RVCT.
* avcodec/vp9: make last_invisible local.Clément Bœsch2013-11-161-3/+4
| | | | | | | | | | Original change by one of these developers: Anton Khirnov <anton@khirnov.net> Diego Biurrun <diego@biurrun.de> Luca Barbato <lu_zero@gentoo.org> Martin Storsjö <martin@martin.st> See 97962b2 / 72ca830
* avcodec/vp9: fix "initialize" typo.Clément Bœsch2013-11-151-1/+1
| | | | | | | | | | Originally spotted and fixed by one of these developers: Anton Khirnov <anton@khirnov.net> Diego Biurrun <diego@biurrun.de> Luca Barbato <lu_zero@gentoo.org> Martin Storsjö <martin@martin.st> See 97962b2 / 72ca830
* Merge commit '458446acfa1441d283dacf9e6e545beb083b8bb0'Michael Niedermayer2013-11-151-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '458446acfa1441d283dacf9e6e545beb083b8bb0': lavc: Edge emulation with dst/src linesize Conflicts: libavcodec/cavs.c libavcodec/h264.c libavcodec/hevc.c libavcodec/mpegvideo_enc.c libavcodec/mpegvideo_motion.c libavcodec/rv34.c libavcodec/svq3.c libavcodec/vc1dec.c libavcodec/videodsp.h libavcodec/videodsp_template.c libavcodec/vp3.c libavcodec/vp8.c libavcodec/wmv2.c libavcodec/x86/videodsp.asm libavcodec/x86/videodsp_init.c Changes to the asm are not merged, they are left for volunteers or in their absence for later. The changes this merge introduces are reordering of the function arguments See: face578d56c2d1375e40d5e2a28acc122132bc55 Merged-by: Michael Niedermayer <michaelni@gmx.at>
* avcodec/vp9: use av_freep() for above_partition_ctxPaul B Mahol2013-11-121-1/+1
| | | | | | Fixes use after free if memory allocation fails. Signed-off-by: Paul B Mahol <onemda@gmail.com>
* vp9: fix mvref finding to adhere to bug in libvpx.Ronald S. Bultje2013-11-091-2/+8
| | | | Fixes a particular youtube video that I unfortunately can't share.
* Put vp9_scans and vp9_scans_nb in ro_data.Ronald S. Bultje2013-11-041-2/+2
| | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* vp9: skip itxfm_add if the whole block has no coefficients.Ronald S. Bultje2013-10-271-2/+2
| | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* vp9: always consume the full input packetHendrik Leppkes2013-10-221-2/+2
| | | | | Reviewed-by: "Ronald S. Bultje" <rsbultje@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* avcodec/vp9: Add asserts to help source code analyzersMichael Niedermayer2013-10-201-0/+2
| | | | | See CID1108596 and CID1108595 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* avcodec/vp9: fix band_counts array size / paddingRonald S. Bultje2013-10-161-1/+1
| | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* cosmetics: group remaining .name and .long_name.Clément Bœsch2013-10-041-1/+1
| | | | See b2bed9325.
* Native VP9 decoder.Ronald S. Bultje2013-10-021-0/+3576
Authors: Ronald S. Bultje <rsbultje gmail com>, Clement Boesch <u pkh me>