summaryrefslogtreecommitdiff
path: root/libavcodec/hevc_filter.c
Commit message (Collapse)AuthorAge
* x86/hevc: add ff_hevc_sao_band_filter_{8,10,12}_{sse2,avx,avx2}James Almer2015-02-01
| | | | | | | | | | | | | | | | | | | | | | Original x86 intrinsics code and initial 8bit yasm port by Pierre-Edouard Lepere. 10/12bit yasm ports, refactoring and optimizations by James Almer Benchmarks of BQTerrace_1920x1080_60_qp22.bin with an Intel Core i5-4200U width 32 40338 decicycles in sao_band_filter_0_8, 2048 runs, 0 skips 8056 decicycles in ff_hevc_sao_band_filter_8_32_sse2, 2048 runs, 0 skips 7458 decicycles in ff_hevc_sao_band_filter_8_32_avx, 2048 runs, 0 skips 4504 decicycles in ff_hevc_sao_band_filter_8_32_avx2, 2048 runs, 0 skips width 64 136046 decicycles in sao_band_filter_0_8, 16384 runs, 0 skips 28576 decicycles in ff_hevc_sao_band_filter_8_32_sse2, 16384 runs, 0 skips 26707 decicycles in ff_hevc_sao_band_filter_8_32_avx, 16384 runs, 0 skips 14387 decicycles in ff_hevc_sao_band_filter_8_32_avx2, 16384 runs, 0 skips Reviewed-by: Christophe Gisquet <christophe.gisquet@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* hevcdsp: replace the SAOParams struct parameter from sao_band_filterJames Almer2015-02-01
| | | | | | | Pass instead the two variables from the struct needed in the function. This simplifies writing asm optimized versions of the function Signed-off-by: James Almer <jamrial@gmail.com>
* hevcdsp: remove unused parameter from sao_band_filterJames Almer2015-02-01
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* Merge commit '7acdd3a1275bcd9cad48f9632169f6bbaeb39d84'Michael Niedermayer2014-08-09
|\ | | | | | | | | | | | | | | | | | | * commit '7acdd3a1275bcd9cad48f9632169f6bbaeb39d84': hevc_filter: avoid excessive calls to ff_hevc_get_ref_list() Conflicts: libavcodec/hevc_filter.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * hevc_filter: avoid excessive calls to ff_hevc_get_ref_list()Anton Khirnov2014-08-09
| | | | | | | | | | | | | | | | 1) each of the loops run within a single CTB, so the relevant reference list is constant 2) when that CTB is, or lies on the same slice as, the current one, we can use a simple access instead of a relatively expensive call to ff_hevc_get_ref_list()
* | Merge commit 'a7a17e3f1915ce69b787dc58c5d8dba0910fc0a4'Michael Niedermayer2014-08-09
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'a7a17e3f1915ce69b787dc58c5d8dba0910fc0a4': hevc_filter: move some conditions out of loops Conflicts: libavcodec/hevc_filter.c This is possibly less readable than the variant used before. Thus please take a look and if people agree its worse, dont hesitate to revert. See: 83976e40e89655162e5394cf8915d9b6d89702d9 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * hevc_filter: move some conditions out of loopsAnton Khirnov2014-08-09
| |
| * hevc: deobfuscate slice/tile boundary handling for DBFAnton Khirnov2014-08-09
| | | | | | | | | | Use named constants instead of magic numbers, avoid using variables with inverse meaning from what their name implies.
| * hevc_filter: drop more redundant checksAnton Khirnov2014-08-09
| | | | | | | | The if() around those loops ensures this condition is always false.
| * hevc_filter: drop redundant checksAnton Khirnov2014-08-09
| | | | | | | | | | ff_hevc_deblocking_boundary_strengths() is never called if the deblocking filter is disabled for the slice.
* | hevc_deblock: change tc typeChristophe Gisquet2014-08-06
| | | | | | | | | | | | | | The x86 asm expects int32_t so use that type. Reviewed-by: Mickaël Raulet <mraulet@insa-rennes.fr> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | hevc_filter: run vertical and horizontal togetherChristophe Gisquet2014-07-29
| | | | | | | | | | | | | | | | This should help cache locality. On win64: Before: 1397x cycles, 16216 bytes After: 1369x cycles, 16040 bytes Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | hevc: rename variable in boundary strength to b more explicitAnton Khirnov2014-07-28
| | | | | | | | | | | | | | Signed-off-by: Mickaël Raulet <mraulet@insa-rennes.fr> cherry picked from commit 348bebedc0012aae201419669fca1eb61ec93ca6 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | hevc: remove non necessary parameters to ff_hevc_set_qpyMickaël Raulet2014-07-28
| | | | | | | | | | | | cherry picked from commit 6f58c111ad9920d983bb18eacf901193bac5d937 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '73bb8f61d48dbf7237df2e9cacd037f12b84b00a'Michael Niedermayer2014-07-26
|\| | | | | | | | | | | | | | | | | | | | | * commit '73bb8f61d48dbf7237df2e9cacd037f12b84b00a': hevcdsp: remove an unneeded variable in the loop filter Conflicts: libavcodec/hevc_filter.c See: d7e162d46b4a0fc03ca5161cdcac840152f048cb Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * hevcdsp: remove an unneeded variable in the loop filterAnton Khirnov2014-07-26
| | | | | | | | beta0 and beta1 will always be the same
* | hevcdsp: remove an unneeded variable in the loop filterAnton Khirnov2014-07-22
| | | | | | | | | | | | | | | | | | beta0 and beta1 will always be the same within a CU Signed-off-by: Mickaël Raulet <mraulet@insa-rennes.fr> cherry picked from commit 4a23d824741a289c7d2d2f2871d1e2621b63fa1b Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | hevc/rext: update boundary strength for chroma deblocking filterMickaël Raulet2014-07-22
| | | | | | | | | | | | cherry picked from commit 7d05c95ac5a63d7675bf645e74b4cf1fffff4796 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | hevc: report more precise progressChristophe Gisquet2014-07-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's a lag of one CTB line for SAO behind deblocking filter, except for last line. However, once SAO has been completed on a line, all its pixels, i.e. up to y+ctb_size are filtered and ready to be used as reference. Without SAO, when deblocking filter finishes a CTB line, only the bottom bottom 4 pixels may be filtered when next CTB is process by the deblocing. The await_progess for hevc then checks whether the bottom pixels of a PU requires access beyond that point, so the reporting should effectively report up to the the above limits. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | hevc: fix transquant_bypassMickaël Raulet2014-07-19
| | | | | | | | | | cherry picked from commit 4a16cb2c70728a55d2fd723aff01b13ea259c4df Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | hevc/sao: optimze sao implementationMickaël Raulet2014-07-18
| | | | | | | | | | | | | | | | | | | | - adding one extra pixel all around the frame - do not copy when SAO is not applied 5% improvement cherry picked from commit 10fc29fc19a12c4d8168fbe1a954b76386db12d0 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | hevc/rext: basic infrastructure for supporting range extensionMickaël Raulet2014-07-15
| | | | | | | | | | | | | | | | - support for 4:2:2 and 4:4:4 up to 12 bits - add a new profile for range extension (cherry picked from commit d3c067fa65bbc871758d28aa07f54123430ca346) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | hevc: move restore_tqb where it should be.Mickaël Raulet2014-07-15
| | | | | | | | | | | | (cherry picked from commit 8fafc96a9805d11bfe32537c8f78a294a5844065) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | hevc: simplify SAO computation, delay from one row its computationMickaël Raulet2014-07-15
| | | | | | | | | | | | (cherry picked from commit f2c5f647cec786df26f442a85e6d685a131a50c9) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | hevc: C code update for new motion compensationMickaël Raulet2014-05-06
| | | | | | | | | | | | | | pretty print C Reviewed-by: "Ronald S. Bultje" <rsbultje@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit 'ff486c0f7f6b2ace3f0238660bc06cc35b389676'Michael Niedermayer2014-02-23
|\| | | | | | | | | | | | | * commit 'ff486c0f7f6b2ace3f0238660bc06cc35b389676': hevc: Do not right shift a negative value in get_pcm Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * hevc: Do not right shift a negative value in get_pcmLuca Barbato2014-02-23
| |
* | Merge commit '50c988aa6d6c6f0ceb8f922bcea34800b56b85d9'Michael Niedermayer2014-02-23
|\| | | | | | | | | | | | | * commit '50c988aa6d6c6f0ceb8f922bcea34800b56b85d9': hevc: Drop unnecessary shifts in deblocking_filter_CTB Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * hevc: Drop unnecessary shifts in deblocking_filter_CTBLuca Barbato2014-02-23
| | | | | | | | beta_offset is pre-multiplied by 2.
* | avcodec/hevc: remove unused variablesMichael Niedermayer2014-02-08
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avcodec/hevc: Simplify get_qPy_pred()Michael Niedermayer2014-02-08
| | | | | | | | | | | | | | Fixes use of uninitialized memory Fixes: 93728afd9aa074ba14a09bfd93a632fd-asan_static-oob_124a17d_1445_cov_1021181966_DBLK_D_VIXS_1.bit Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avcodec/hevc_filter: assert validity of qp predictor inputMichael Niedermayer2014-02-07
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit '09e2203b8ba6943d5c0fe6d73b65b145c3fdf98e'Michael Niedermayer2014-02-02
|\| | | | | | | | | | | | | * commit '09e2203b8ba6943d5c0fe6d73b65b145c3fdf98e': hevc: Consider first quantization group any reference to 0, 0 Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * hevc: Consider first quantization group any reference to 0, 0Luca Barbato2014-02-01
| | | | | | | | | | | | | | | | According to my understanding of T-REC-H.265-2013044 chapter 8.6.1. Sample-Id: 00001438-google Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: libav-stable@libav.org
| * hevc: Fix modulo operationsMichael Niedermayer2014-01-21
| | | | | | | | | | | | | | Keep qp fields within the range. Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
| * Add HEVC decoderGuillaume Martres2013-10-31
| | | | | | | | | | | | | | | | | | | | | | Initially written by Guillaume Martres <smarter@ubuntu.com> as a GSoC project. Further contributions by the OpenHEVC project and other developers, namely: Mickaël Raulet <mraulet@insa-rennes.fr> Seppo Tomperi <seppo.tomperi@vtt.fi> Gildas Cocherel <gildas.cocherel@laposte.net> Khaled Jerbi <khaled_jerbi@yahoo.fr> Wassim Hamidouche <wassim.hamidouche@insa-rennes.fr> Vittorio Giovara <vittorio.giovara@gmail.com> Jan Ekström <jeebjp@gmail.com> Anton Khirnov <anton@khirnov.net> Martin Storsjö <martin@martin.st> Luca Barbato <lu_zero@gentoo.org> Yusuke Nakamura <muken.the.vfrmaniac@gmail.com> Reimar Döffinger <Reimar.Doeffinger@gmx.de> Diego Biurrun <diego@biurrun.de> Signed-off-by: Anton Khirnov <anton@khirnov.net>
* avcodec/hevc: Fix modulo operationsMichael Niedermayer2014-01-06
| | | | | | | Fixes qp fields becoming out of range Fixes: asan_static-oob_e393a3_6998_WPP_A_ericsson_MAIN10_2.bit Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* libavcodec/hevc: random cosmetics to reduce diff to ↵Michael Niedermayer2013-11-02
| | | | | | 064698d381e1e7790f21b0199a8930ea04e2e942 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* libavcodec/hevc: random cosmetics to reduce diff to ↵Michael Niedermayer2013-11-02
| | | | | | 064698d381e1e7790f21b0199a8930ea04e2e942 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* libavcodec/hevc: indention related cosmetics to reduce diff to ↵Michael Niedermayer2013-11-02
| | | | | | 064698d381e1e7790f21b0199a8930ea04e2e942 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* libavcodec/hevc: reduce bracket differences to ↵Michael Niedermayer2013-11-02
| | | | | | 064698d381e1e7790f21b0199a8930ea04e2e942 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* avcodec/hevc: more whitespaces to reduce difference to ↵Michael Niedermayer2013-11-02
| | | | | | 064698d381e1e7790f21b0199a8930ea04e2e942 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* avcodec/hevc: Adjust white-spaces to reduce difference to ↵Michael Niedermayer2013-11-02
| | | | | | 064698d381e1e7790f21b0199a8930ea04e2e942 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* hevc: better mt implementationAnton Khirnov2013-10-27
| | | | | | Signed-off-by: Mickaël Raulet <mraulet@insa-rennes.fr> (cherry picked from commit 93afb8c519deca85b3c97804927de5b016dd32d1) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* hevc : cosmetic changes(cherry picked from commit ↵Mickaël Raulet2013-10-27
| | | | | | | | 7308c0ccf13f18cebe4851e6dcd6b5c0b09be1dd) Decreases the difference to Anton Khirnovs patch v5 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* hevc: add wavefront parallel processingMickaël Raulet2013-10-22
| | | | | | | cherry picked from commit b971f2c8fdc60f8bab605a6e8060492eb548a53a cherry picked from commit e57b0a2c915ce6b8a9d57b8292f6581f0680842e Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* hevc: pretty print(cherry picked from commit ↵Mickaël Raulet2013-10-22
| | | | | | | | | | | | 6332b3afe298b9e1060e8549aea3aa2771b43f5d) Conflicts: libavcodec/hevc.h libavcodec/hevc_filter.c libavcodec/hevc_refs.c Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* hevc: optimize residual coding(cherry picked from commit ↵Mickaël Raulet2013-10-17
| | | | | | 70692a44708157b4dfa50e402e446bfa2b27f55e) Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* lavc: add a HEVC decoder.Guillaume Martres2013-10-15
Initially written by Guillaume Martres <smarter@ubuntu.com> as a GSoC project. Further contributions by the OpenHEVC project and other developers, namely: Mickaël Raulet <mraulet@insa-rennes.fr> Seppo Tomperi <seppo.tomperi@vtt.fi> Gildas Cocherel <gildas.cocherel@laposte.net> Khaled Jerbi <khaled_jerbi@yahoo.fr> Wassim Hamidouche <wassim.hamidouche@insa-rennes.fr> Vittorio Giovara <vittorio.giovara@gmail.com> Jan Ekström <jeebjp@gmail.com> Anton Khirnov <anton@khirnov.net> Martin Storsjö <martin@martin.st> Luca Barbato <lu_zero@gentoo.org> Yusuke Nakamura <muken.the.vfrmaniac@gmail.com> Signed-off-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>