Commit graph

3851 commits

Author SHA1 Message Date
Ari Koivula 139e00f064 Fix fluctuation of coefficients on identical frames when RDOQ is on.
Moves CABAC context initialization to take place before search. This fixes
an issue with RDOQ returning different coefficients for identical adjacent
frames.

- This actually probably worsens BD-rate a little for all frames except the
  first one because we were using last frames final CABAC context for every
  LCU and now we are using initialized CABAC contexts. The fix is to encode
  the LCU before we start compressing the next LCU so we can update CABAC
  contexts.
2014-03-05 17:00:08 +02:00
Marko Viitanen c5842e1769 More fixes to B0 mv candidate selection
After this fix, inter coding works in depth != 0
2014-03-05 12:53:35 +02:00
Marko Viitanen 278042aaac Fixed top-right CU copy to lcu structure 2014-03-04 16:32:31 +02:00
Marko Viitanen 91e83db3c6 Bugfix for inter_get_spatial_merge_candidates() b2 block checking
Wrong variable was used to check for x-border
2014-03-04 15:34:32 +02:00
Marko Viitanen df669ca7df Added skip mode checking to the new lcu search 2014-03-04 12:48:19 +02:00
Marko Viitanen bddadbb4ed Inter coding fixed and added call to encode_transform_tree() 2014-03-03 17:42:44 +02:00
Marko Viitanen 09d4b47395 Fixed CU array calculations in inter_get_spatial_merge_candidates() 2014-03-03 16:25:33 +02:00
Marko Viitanen 17b256b5e3 Converted inter mv candidate functions to use lcu structure
Implemented merge and mvd candidate search
Added initialization of the whole work_tree
2014-03-03 16:08:35 +02:00
Marko Viitanen 1f82239367 Implemented inter search and reconstruction with lcu structure 2014-03-03 14:51:36 +02:00
Marko Viitanen b5fca8b206 Added missing chroma ref pixel init and fixed pic width/height in intra ref border
intra_build_reference_border() was given wrong picture width and height on chroma.
Chroma top-left reference pixels were not copied on init_lcu_t()
2014-03-03 12:21:55 +02:00
Ari Koivula 448285a56a Fix bug in intra mode coding. 2014-02-28 17:36:04 +02:00
Marko Viitanen f1882a0d82 Fixed CU type initialization and PU index calculations 2014-02-28 15:56:27 +02:00
Ari Koivula c05e91472d Fix intra reference border construction on LCU boundary. 2014-02-28 15:43:59 +02:00
Marko Viitanen 83e2079587 Fixed chroma stride in intra_build_reference_border() 2014-02-28 15:24:47 +02:00
Ari Koivula 19f67d4466 Fix LCU reference pixel indexing in reference border construction. 2014-02-28 14:22:13 +02:00
Ari Koivula 768d54ff4c Fix wrong array offset in intra search. 2014-02-28 14:22:13 +02:00
Marko Viitanen 0a6d9bda41 Fixed stride values in transform_chroma() 2014-02-27 17:47:00 +02:00
Marko Viitanen 4027de6e1f Fixed reconstruct_chroma() stride values 2014-02-27 16:48:51 +02:00
Ari Koivula 6e11eda133 Fix coeff flag initialization.
They should be initialized, even if none exist.
2014-02-27 16:43:20 +02:00
Marko Viitanen 9968fd46b0 Fixed chroma array index calculations in transform_tree() and intra_recon_lcu() 2014-02-27 16:42:32 +02:00
Ari Koivula 71d9ab7e26 Fix copying-up of coefficients during search. 2014-02-27 15:58:47 +02:00
Ari Koivula 526fdfc078 Fix erroneous indexing of pixel arrays. 2014-02-27 15:51:21 +02:00
Ari Koivula 5f75753f85 Set coeff flags correctly.
The coeff flags are no longer propagated upwards because encode_transform_tree
is being called from depth > 0. The fix is to initialize the whole coeff flag
array when the coeff flag is set.
2014-02-27 15:45:07 +02:00
Ari Koivula eda5ade06d Add missing offsets for lcu_t.cu pointers.
Also changes alternate ways of doing the offset to use LCU_CU_OFFSET macro.
2014-02-27 14:22:01 +02:00
Ari Koivula a8237bcb1e Remove duplicated defines. 2014-02-27 14:03:33 +02:00
Marko Viitanen b58c5b872a Fixed cu coordinate derivation in lcu_set_intra_mode() 2014-02-27 13:53:26 +02:00
Ari Koivula f6c97712b2 Add lcu_set_intra_mode. 2014-02-27 13:02:24 +02:00
Ari Koivula faea7caaf4 Remove unnecessary copying of reconstructed pixels from init_lcu_t.
The reconstructed pixels don't exist yet.
2014-02-27 11:58:32 +02:00
Ari Koivula 869ca5aa58 Add copying of LCU coefficients to search. 2014-02-27 11:56:16 +02:00
Marko Viitanen 117f74b481 Fixed allocated size for coefficient arrays 2014-02-27 11:05:21 +02:00
Marko Viitanen 7a1bf6b17d Intra fix: encode_transform_tree() call was missing and depth was not set 2014-02-27 10:53:01 +02:00
Marko Viitanen 8ae453551d Fixed cu type definition and reconstruction function calling
reconstruction could have been called when no search was done
2014-02-26 17:50:09 +02:00
Ari Koivula 879c355d9d Add work_tree_copy_down. 2014-02-26 17:31:26 +02:00
Marko Viitanen f788661a54 Fixed coeff flag derivation from NxN blocks 2014-02-26 16:54:49 +02:00
Ari Koivula 9faecd375a Add work_tree_copy_up. 2014-02-26 16:08:43 +02:00
Ari Koivula 1450d0edf8 Add lcu_t copying to main CU array. 2014-02-26 16:08:43 +02:00
Ari Koivula e651078e78 Fix compilation for rebase.
Conflicts:
	src/search.c
2014-02-26 16:08:15 +02:00
Marko Viitanen b4181dd398 Fixed problems with the new structure and commented out old search 2014-02-26 14:57:57 +02:00
Marko Viitanen bf21e4d019 Modified encode_transform_tree() to use new structure 2014-02-26 14:28:02 +02:00
Marko Viitanen 43abe296d0 Fixed intra headers and implemented intra search in the new structure 2014-02-26 12:45:43 +02:00
Marko Viitanen 40138f082e Modified intra_get_dir_luma_predictor() to use the new structure
Also fixed intra_pred_ratecost() parameters and usage of intra_build_reference_border()
2014-02-26 12:38:30 +02:00
Marko Viitanen 1197e24b3f Modified intra_prediction() to use new structure and renamed intra_merge_cost() 2014-02-26 12:34:22 +02:00
Marko Viitanen 68b4e9e3db Modified intra_build_reference_border() to work on the new structure 2014-02-26 12:30:12 +02:00
Marko Viitanen d0a9c5e83b Implemented intra_recon_lcu() to reconstruct intra in the new structure 2014-02-26 12:28:24 +02:00
Marko Viitanen fb9e3ad1d2 Implemented proper intra mode cost calculation
This does not currently affect the search primary search defining the used block sizes, only the refining second intra search. Gain 1.9% BD-rate on All Intra 600f of BQMall QP 22,27,32,37.
2014-02-26 12:26:54 +02:00
Ari Koivula b067b2f802 Add lcu_t initialization. 2014-02-26 10:58:20 +02:00
Ari Koivula 7e520a85c4 Add skeleton/plan for LCU based search.
The plan is to replace the dumb search we are doing now with proper sequential
search that is encapsulated inside data structure that holds all temporary
search data for the LCU.
2014-02-25 13:06:22 +02:00
Marko Viitanen d2b8f50351 Merge branch 'master' of https://github.com/lu-zero/kvazaar 2014-02-25 10:53:51 +02:00
Marko Viitanen 565be069b9 Implemented proper intra mode cost calculation
This does not currently affect the search primary search defining the used block sizes, only the refining second intra search. Gain 1.9% BD-rate on All Intra 600f of BQMall QP 22,27,32,37.
2014-02-24 15:28:37 +02:00
Luca Barbato a6dfe79d16 encoder: Export g_convert_to_bit correctly
It is a global table initialized in encoder.c and used all over the
codebase.
2014-02-22 18:02:09 +01:00