Commit graph

307 commits

Author SHA1 Message Date
Joose Sainio 00acf661cf WIP: intra prediction generation from a singular function 2022-04-15 11:39:15 +03:00
Joose Sainio e74ea38673 WIP: initial structs etc. 2022-04-15 11:39:15 +03:00
Joose Sainio 57cd9bd97e minor fixes 2022-03-31 12:11:33 +03:00
Joose Sainio 99ddc209fc Fix cclm when tiles are enabled 2022-03-25 10:20:44 +02:00
Joose Sainio 2050de8891 Fix cclm prediction generation for depth 0 2022-03-25 08:54:31 +02:00
Joose Sainio a88553b206 fix jccr and improve intra parameter passing 2022-03-24 11:11:33 +02:00
Joose Sainio 0dd7646a34 Fix mip context calculation for P and B slices 2022-03-10 10:48:37 +02:00
siivonek fa963234a8 [mip] Fix CI error. Const modifier in wrong place. 2022-02-16 17:14:26 +02:00
siivonek 9b04a6f302 [mip] Combine mip mode search loop into the original intra mode search loop. Some code clean up. 2022-02-15 11:24:01 +02:00
siivonek ac45a5299c [mip] Add define for number of mip modes. Fix mip cost calculation. If mip is enabled, the cost of writing of mip flag must always be included. Some code cleanup. 2022-02-10 02:31:13 +02:00
siivonek 09f3af81c6 [mip] Improve mip flag context function. 2022-02-10 00:41:20 +02:00
siivonek 769703ea71 [mip] Fix mpm mode selection. When neighboring CU uses MIP, signaled intra mode must be planar. Fix chroma reconstruction when MIP is enabled. Only allow MIP to be used if chroma scheme is 444. Otherwise use planar mode. 2022-02-09 12:55:18 +02:00
siivonek e8ef0d2b28 [mip] Fix undefined behaviour error in CI test. 2022-02-09 12:55:17 +02:00
siivonek fcde90fbe0 [mip] Change kvz_pixel to int inside MIP implementation since some temp values could be negative. Add define for intra reference line length. Fix bug where wrong intra mode was passed to recon after search. 2022-02-09 12:55:17 +02:00
siivonek df5cbbe82f [mip] Fix issue with invalid MIP modes written into cabac. Fix Mip mode cost estimation. Implement function to derive mip flag context id. Fix some asserts. Replace floor log 2 implementation with existing kvz math function. 2022-02-09 12:55:17 +02:00
siivonek 8aea4f67f7 [mip] Fix reference indexing error. 2022-02-09 12:55:17 +02:00
siivonek 0cf89e9516 [mip] Fix CI errors. 2022-02-09 12:55:16 +02:00
siivonek d5e2bbd824 [mip] Fix things according to comments. Fix asserts. Remove MIP from chroma recon and search calls. WIP mip mode cost calculation. 2022-02-09 12:55:16 +02:00
siivonek 59a86f339e [mip] Implement MIP search. 2022-02-09 12:55:16 +02:00
siivonek e672f9b24a [mip] Implement MIP functions. 2022-02-09 12:55:15 +02:00
siivonek cb2ccce753 [mip] WIP Implement mip functions. 2022-02-09 12:55:15 +02:00
siivonek 3bbef3dff6 [mip] Add mip weight matrices. 2022-02-09 12:55:15 +02:00
siivonek 746ae8ab85 [mip] WIP Implement mip functions. 2022-02-09 12:55:15 +02:00
Marko Viitanen c6b9e19b2f [mrl] Fix kvz_intra_build_reference_inner() top reference building for mrl 2021-12-08 15:00:27 +02:00
Marko Viitanen 05e55f7fea [mrl] Simplify and fix kvz_intra_build_reference_inner() for mrl cases 2021-12-08 14:39:47 +02:00
Marko Viitanen 04cb32be91 [mrl] Use kvz_intra_build_reference_inner() with MRL since WPP fixes have been made there 2021-12-08 11:39:20 +02:00
siivonek 3a81a389c3 [mrl] Fix issues transmitting multi ref idx during search. Change multi ref idx type to uint. 2021-12-06 19:23:57 +02:00
siivonek 54505e0250 [mrl] Fix warnings. 2021-11-29 20:55:39 +02:00
siivonek 675e8b2d83 [mrl] Fix extra reference length in LCU bottom edge. Disable trace origins in valgrind test. 2021-11-29 17:11:41 +02:00
siivonek a0cfb625be [mrl] Fix extra ref line length. Fix error where un-initialized ref line index was passed. 2021-11-29 17:11:40 +02:00
siivonek b83d7687dc Fix assert. 2021-11-29 17:11:40 +02:00
siivonek 65cf515070 Fix MRL to work when inter coding is enabled. 2021-11-29 17:11:40 +02:00
siivonek 0dc25b86e2 Fix invalid memory read. 2021-11-29 17:11:40 +02:00
siivonek 9cce86ff61 Fix MRL behaviour on left LCU edge. Pass additional left edge reference buffers to reference building for MRL. 2021-11-29 17:11:39 +02:00
siivonek ddd0474c21 Fix filter error in block reconstruction when MRL is used. Disable PDPC during block reconstruction if MRL is used. Fix error in reference building. 2021-11-29 17:11:39 +02:00
siivonek 231c6f3e72 Fix top left reference building. 2021-11-29 17:11:39 +02:00
siivonek 54646e7be7 Disable intra reference filtering if MRL is used. 2021-11-29 17:11:39 +02:00
siivonek eb32f40bd9 Another fix for reference building. 2021-11-29 17:11:39 +02:00
siivonek b0a4f3345a Fix top left reference building when MRL enabled. Fix reference line extension when MRL enabled. 2021-11-29 17:11:38 +02:00
siivonek c616d3bf8a Fix the inner case of reference building when MRL is used. 2021-11-29 17:11:38 +02:00
siivonek a2a1a2a1a8 Fix mistakes in MRL related reference building. 2021-11-29 17:11:38 +02:00
siivonek 54e5a2181d [mrl] Fix rebase mistake. Disable use of PDPC if MRL is used. 2021-11-29 17:11:28 +02:00
siivonek 511ce4991b [mrl] Pass multi_ref_idx to generic angular and DC prediction funcs. Fix some outdated comments. 2021-11-29 17:02:27 +02:00
siivonek ea04feaaca Add MRL handling to reference building. 2021-11-29 16:59:55 +02:00
Marko Viitanen 3fda2dd6c8 [cleanup] Fix some warnings 2021-11-29 16:31:09 +02:00
Joose Sainio ce175c503f [cclm] remove unnecessary calculation of the downsample luma reference 2021-11-26 08:12:37 +02:00
Joose Sainio 85ff5f23b1 [cclm] Fix accessing elements beyond the CU array
# Conflicts:
#	src/intra.c
2021-11-26 08:12:25 +02:00
Joose Sainio 80ddb60ccf [cclm] fix cclm when deblocking is enabled 2021-11-26 08:12:25 +02:00
Joose Sainio f030158703 [cclm] Fix search and parameter generation for CCLM 2021-11-26 08:12:17 +02:00
Joose Sainio d9875a3d92 [cclm] fix trying cclm on the upper level 2021-11-26 08:11:54 +02:00
Joose Sainio 7187678526 [cclm] Only do cclm search when it is enabled and add test for cclm 2021-11-26 08:11:53 +02:00
Joose Sainio 70f6afff4f [cclm] Search should be working
still has duplicate code and inefficiencies, but the actual search *should*
be working.
2021-11-26 08:09:54 +02:00
Joose Sainio 91877ef2c4 [cclm] fix condition for selecting the data from frame buffer and not ctu 2021-11-26 08:09:54 +02:00
Joose Sainio ecc55c9edf [cclm] align ref pixel generation code and add comments 2021-11-26 08:09:53 +02:00
Joose Sainio 677bf1edcb [cclm] linear transform 2021-11-26 08:09:53 +02:00
Joose Sainio 4e8c9043a1 [cclm] CCLM parameter calculation *should* work correctly 2021-11-26 08:09:53 +02:00
Joose Sainio 93c02644c8 [cclm] WIP fix parameter calculation and add calling to the functions 2021-11-26 08:09:53 +02:00
Joose Sainio ef5a205faa [cclm] WIP: initial implementation of the cclm parameter calculation function 2021-11-26 08:09:52 +02:00
Marko Viitanen 54eaba3dee Fix merge issues and license texts 2021-11-23 08:46:06 +02:00
Marko Viitanen 885570e181 Merge branch 'master' of https://github.com/ultravideo/kvazaar 2021-11-22 22:11:32 +02:00
Marko Viitanen 57883369ca Change all the license texts in source headers and LICENSE file to 3-clause BSD, closes #302
* All now have the same exact text string
2021-10-13 15:22:46 +03:00
Ari Lemmetti c6b33c7b92 [SIMD] Move PDPC condition out of strategy 2021-09-06 21:20:51 +03:00
Ari Lemmetti 46cf9b6871 [SIMD] Make strategy out of PDPC for planar and DC 2021-09-06 21:20:51 +03:00
Joose Sainio 3a73abd264 [jccr] disable jccr for blocks when tr-depth != depth, i.e. 64×64 2021-09-06 11:28:32 +03:00
Joose Sainio 072b84711a [jccr] fix 64×64 CUs 2021-09-06 11:28:20 +03:00
Joose Sainio 042b5078d8 [jccr] WIP initial implementation
Add somekind of search for joint chroma residual coding.
Bitstream is currently correct but prediction is incorrect because the jccr
is actually not used in the search.

Hard coded to be enabled
2021-09-06 11:28:08 +03:00
Marko Viitanen 3516972237 [LMCS] Move LMCS mapping / inverse to the source LCU data 2021-05-18 21:22:22 +03:00
Marko Viitanen 178d62bde3 [LMCS] Move LMCS data structures under the frame 2021-05-12 11:42:34 +03:00
Marko Viitanen 0c5e1db0fa Fix wpp chroma bug 2020-12-15 22:59:22 +02:00
Marko Viitanen 071fe7fd51 Limit the top-right intra references when wpp is turned on
Chroma hash still fails.
2020-12-15 22:33:32 +02:00
Marko Viitanen bddfb47a55 Merge remote-tracking branch 'remotes/kvazaar_github/master' 2020-09-25 11:49:11 +03:00
Ari Lemmetti f31dddc019 Bypass inverse quantization and inverse transform when trying early skip 2020-04-10 16:02:09 +03:00
Marko Viitanen 94d89f03c7 Added cfg variable intra_smoothing_disabled and some cleanup 2019-11-20 08:38:33 +02:00
Pauli Oikkonen 979d66031c Create a strategy out of intra_pred_filtered_dc 2019-11-19 14:50:31 +02:00
Marko Viitanen 28dc4fa2ed Fix intra MPM selection 2019-09-05 09:39:13 +03:00
RLamm 60be6d411c Intra filtering fixed at least for luma. All intra modes output valid luma (hashes match), but chroma is still broken. 2019-08-30 16:14:00 +03:00
RLamm 83ac39094a Use new PDPC filtering for planar and DC modes 2019-08-29 12:51:34 +03:00
Ari Lemmetti 2343958a14 Fix transform split for small luma blocks 2019-08-24 21:50:17 +03:00
Ari Lemmetti 800fc8644d Reset CBFs because CBFs might have been set earlier for depth earlier. 2019-08-24 21:49:33 +03:00
Marko Viitanen 5bebb18943 Change intra filtering according to VTM6 2019-08-23 08:56:35 +03:00
Marko Viitanen dfa5621024 Intrapred cleanup 2019-07-16 14:23:10 +03:00
Marko Viitanen 8280bd3217 Add channel info to angular_pred and fix the displacement tables.
Also includes 4-tap intra filtering code commented out
2019-07-04 09:35:47 +03:00
Sami Ahovainio 3564b4829e Fixed split context decision. Modified intra mode initialization to match VTM version aa76fc5c04cf43390f43d63f9977bea8ee31997a. 2019-06-12 12:59:16 +03:00
Marko Viitanen 3bdc8ac8d3 Fix intra_chroma_pred_mode and cbf contexts 2019-03-26 09:10:09 +02:00
Marko Viitanen d15f58517f Changed intra coding to use 6 MPM, implemented merge sort and MPM selection 2019-03-20 15:20:31 +02:00
Marko Viitanen e015d7eb2b Fix compiler warnings 2018-10-17 10:43:11 +03:00
Marko Viitanen b6f2c66c73 Fixed intra Most Probable Mode (mpm) derivation to conform VTM 2.1 2018-09-21 10:33:54 +03:00
Marko Viitanen 35fa8e9785 Fix kvz_intra_get_dir_luma_predictor -> Intra working 2018-09-13 12:32:17 +03:00
Marko Viitanen f75b0b11c3 Simplify intra filtered ref pixel selection 2018-09-13 10:09:52 +03:00
Marko Viitanen 82de0fbee7 Switch intra search to use the actual 67 modes 2018-09-13 09:43:45 +03:00
Marko Viitanen 382917bcd3 New table for choosing angular intra filtered references and a small bugfix on the end condition of angular intra 2018-09-13 09:35:55 +03:00
Sami Ahovainio d2291fea83 Intra mode scaling moved from angular prediction to kvz_intra_predict. pdpc implemented in kvz_intra_predict. 2018-08-31 10:01:28 +03:00
Sami Ahovainio 54ebadfc43 Clarifying comments and changes towards WAIP 2018-08-29 16:00:08 +03:00
Sami Ahovainio 42741a2c40 Some changes for PCM and Intra towards VTM 2.0 compatibility. 2018-08-27 09:18:15 +03:00
Marko Viitanen b33aa37484 Enable max_trans_hier_depth values and disable DC and angular filtering 2018-08-14 15:24:21 +03:00
Arttu Ylä-Outinen 8b2483ca1c Combine intra reconstruction functions
Replaces function kvz_intra_recon_lcu_luma and
kvz_intra_recon_lcu_chroma in intra.c with function kvz_intra_recon_cu.
The new function can handle reconstruction for both luma and chroma.
Removes some duplicated code.
2017-05-24 12:07:31 +03:00
Arttu Ylä-Outinen e67fdb853d Move intra leaf TB recon to a separate function
Moves code for intra leaf transform block reconstruction from functions
kvz_intra_recon_lcu_luma and kvz_intra_recon_lcu_chroma to a new
function intra_recon_tb_leaf. Removes some duplicated code.
2017-05-24 12:07:31 +03:00
Arttu Ylä-Outinen 9395867a9a Quantize all colors in a single traversal
Changes kvz_quantize_lcu_residual to process all three colors in
a single traversal of the TU tree.
2017-05-12 16:42:41 +03:00
Arttu Ylä-Outinen cc87e0dcc7 Combine luma and chroma quantization functions
Replaces functions kvz_quantize_lcu_luma_residual and
kvz_quantize_lcu_chroma_residual in transform.c with function
kvz_quantize_lcu_residual. The new function can handle any of the YUV
colors. Removes some duplicated code.
2017-05-12 16:42:41 +03:00
Pierre-Loup Cabarat 2b8ce5e47c Add intra prediction modes encryption 2017-03-06 17:27:39 +01:00