Commit graph

3823 commits

Author SHA1 Message Date
Marko Viitanen 5ea913287b [y4m] Fix y4m header parsing problems with piped input by removing ungetc() 2022-06-03 14:02:03 +03:00
Marko Viitanen 700f526623 Add timing hrd parameters to be able to extract original framerate in decoder 2022-06-02 21:37:42 +03:00
Joose Sainio 153afc6739 Merge branch 'improve-intra-search' 2022-05-30 13:35:46 +03:00
Joose Sainio d5b6d2771c [deltaqp] Fix delta qp writing for 4x4 for CUs 2022-05-05 14:31:22 +03:00
Joose Sainio 8223112cc1 Revert "[intra] Limit intra depth to 3 (8x8) for now"
This reverts commit c8539a3701.
2022-05-05 14:28:07 +03:00
Joose Sainio feb8a4d2e3 [cli] To print version info to stdout when everything is ok. 2022-05-05 13:28:50 +03:00
Marko Viitanen c8539a3701 [intra] Limit intra depth to 3 (8x8) for now 2022-05-04 20:00:32 +03:00
Joose Sainio b4a3d54170 [rate_control] fix gop 0 + OBA 2022-05-04 12:55:28 +03:00
Joose Sainio 900ce314ef [deltaqp] Fix uvg_get_cu_ref_qp for first cu of row 2022-05-04 12:41:49 +03:00
Marko Viitanen 3a0c5b78a3 [deltaqp] Fix delta qp headers and cabac bits, add vaq and bitrate tests 2022-05-04 11:18:34 +03:00
Marko Viitanen 20ecb128cd [cleanup] Print uvg266 version every time the CLI is launched, fix manpage and README gen 2022-05-03 16:35:25 +03:00
Marko Viitanen a4bc6bb7b1 [cleanup] Remove deprecated -w and -h from documentation 2022-05-02 22:11:53 +03:00
Marko Viitanen dc83d15ea7 [build] Add better version info to the binary for debugging purposes 2022-05-02 20:51:24 +03:00
Marko Viitanen a5eb7d1496 [build] Fix conditions for struct packing macro, detect MSVC instead of everything else
* Fixes building on apple systems
2022-04-29 18:57:26 +03:00
Marko Viitanen 4005b9da4b [cleanup] Remove mentions of SMP and AMP from the documentation and code 2022-04-29 15:10:43 +03:00
Marko Viitanen 7557067b41 [build] Fix building for other than x86 target 2022-04-29 14:32:24 +03:00
Marko Viitanen a8c458469c Update README and other documents, rename github workflow from kvazaar.yml to uvg266.yml 2022-04-29 13:28:10 +03:00
Marko Viitanen 61642deb82 [cleanup] Change the interface function names and some other kvazaar mentions to uvg266 2022-04-28 22:01:02 +03:00
Marko Viitanen 45fcac612a [cleanup] Change all tabs to spaces in the ml classifier code 2022-04-28 21:14:25 +03:00
Marko Viitanen 2016f30dc0 [build] Add install configuration to CMakeLists.txt 2022-04-28 16:15:09 +03:00
Marko Viitanen 481fdf913b [build] Use version info from the CMakeLists.txt 2022-04-28 15:32:26 +03:00
Marko Viitanen 6b07bb3591 [build] Remove x264asm abstraction layer since it is not used anymore 2022-04-28 15:31:41 +03:00
Marko Viitanen b5dce4c94e Rename all files containing "kvazaar" or "kvz" to "uvg266" and "uvg" 2022-04-28 14:26:05 +03:00
Marko Viitanen f14ea35ec9 Rename kvz_ to uvg_ 2022-04-28 14:18:09 +03:00
Marko Viitanen 576bf569d3 [build] Replace visual studio and autotools build systems with CMake 2022-04-28 14:13:20 +03:00
Marko Viitanen 227556a13e [build] Remove support for the yasm asm build 2022-04-28 14:12:09 +03:00
Joose Sainio ede7603361 Fix chroma bit cost calculation 2022-04-21 11:17:44 +03:00
Joose Sainio 0381d7d779 Move 4x4 chroma tu info to bottom right cu when intra is split into 4x4 2022-04-21 09:46:54 +03:00
Joose Sainio b413aa5c43 Improve jccr search 2022-04-20 09:31:34 +03:00
Joose Sainio d41103385a fix cclm 2022-04-15 12:39:18 +03:00
Joose Sainio e9a081de4f Count bits for mip and mrl 2022-04-15 12:25:07 +03:00
Joose Sainio 61a3612395 Fix incorrect bit counting 2022-04-15 11:39:18 +03:00
Joose Sainio b9618690e7 Generate mrl references for mrl rough search 2022-04-15 11:39:18 +03:00
Joose Sainio f4dc3ab43b Fix jccr and chroma mode search 2022-04-15 11:39:18 +03:00
Joose Sainio 24faf0024d Fix MTS and actually select the best intra mode for rd < 2 2022-04-15 11:39:17 +03:00
Joose Sainio 901d60b8e7 Fix monochrome, maybe mts search and cabac debug 2022-04-15 11:39:17 +03:00
Joose Sainio abcf2a12b8 Fix setting chroma mode to planar for mip pus 2022-04-15 11:39:17 +03:00
Joose Sainio 2c48453e59 Fix mip mode count macros 2022-04-15 11:39:17 +03:00
Joose Sainio 43c2f9318e Fix mip mode generation 2022-04-15 11:39:17 +03:00
Joose Sainio 69dfd816f1 oops 2022-04-15 11:39:17 +03:00
Joose Sainio b8e5e1d9e3 Fix mrl rough search 2022-04-15 11:39:16 +03:00
Joose Sainio f75b2fdb34 Fix tr_depth setting and restore checking all pred_modes rd cost 2022-04-15 11:39:16 +03:00
Joose Sainio 6aa8240db0 Fix test_external_symbols 2022-04-15 11:39:16 +03:00
Joose Sainio 5f1e9c820f Rough search for mrl and mip 2022-04-15 11:39:16 +03:00
Joose Sainio 88c01b6d32 Fix warnings/errors 2022-04-15 11:39:16 +03:00
Joose Sainio b093248ca7 Maybe working for regular intra search 2022-04-15 11:39:16 +03:00
Joose Sainio f7563076cb WIP 2022-04-15 11:39:15 +03:00
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 52240bde6e ignore chroma during regular intra search 2022-04-15 11:39:15 +03:00
Joose Sainio debe5924a9 Fix 2022-04-15 11:38:31 +03:00
Joose Sainio 863929378f Better get_mvd_coding_cost 2022-04-01 15:15:29 +03:00
Joose Sainio 3532f7a938 Correct counting of jccr flag for inter pu rdo 2022-03-31 15:19:32 +03:00
Joose Sainio 6924497bae Fix jccr when inter is used 2022-03-31 14:59:22 +03:00
Joose Sainio 57cd9bd97e minor fixes 2022-03-31 12:11:33 +03:00
Joose Sainio 03fd8f1545 Don't write jccr flag for inter CUs when it cannot be enabled 2022-03-31 11:45:49 +03:00
Joose Sainio f5753394a0 Update intra chroma mode contexts 2022-03-31 11:30:27 +03:00
Joose Sainio 45a9bed7fb Don't count jccr bits when jccr is disabled 2022-03-31 10:30:02 +03:00
Joose Sainio c777acd91e correct calculation of mvd bitcost 2022-03-30 15:06:44 +03:00
Joose Sainio 2bf16c2010 Fix correct precision for all motion vectors 2022-03-30 11:00:17 +03:00
Joose Sainio df5bc0db4e Fix cclm when 64x64 is enabled 2022-03-30 10:10:02 +03:00
Joose Sainio 7ef25a23a9 Fix chroma cost calculation 2022-03-29 12:05:52 +03:00
Joose Sainio 5cd0554a7d fix correct chroma cost calculation 2022-03-28 14:08:35 +03:00
Joose Sainio d531d77b75 fix chroma 4x4 2022-03-28 10:21:15 +03:00
Joose Sainio 84e4fe6790 Fix broken things 2022-03-25 15:27:34 +02:00
Joose Sainio 0d7800c7f1 Use kvz_write_split_flag for all split flags during search 2022-03-25 13:56:03 +02:00
Joose Sainio e1fcd8b2e4 Add missing bits to kvz_mock_encode_coding_unit 2022-03-25 13:27:34 +02:00
Joose Sainio eb8663fbd1 Move split flag coding to its own function 2022-03-25 13:09:37 +02:00
Joose Sainio 99ddc209fc Fix cclm when tiles are enabled 2022-03-25 10:20:44 +02:00
Joose Sainio 41c9f5b858 Fix undefined behavior 2022-03-25 09:29:35 +02:00
Joose Sainio 2050de8891 Fix cclm prediction generation for depth 0 2022-03-25 08:54:31 +02:00
Joose Sainio b321015426 Use kvz_luma_mode_bits to count luma_mode_bits 2022-03-24 14:57:18 +02:00
Joose Sainio 7aa361696d Facilitate bit counting in encode_intra_luma_coding_unit 2022-03-24 13:34:26 +02:00
Joose Sainio b2a94d4276 Move transform coding and chroma cu coding out of encode_intra_coding_unit 2022-03-24 12:09:14 +02:00
Joose Sainio a88553b206 fix jccr and improve intra parameter passing 2022-03-24 11:11:33 +02:00
Joose Sainio 0be443d309 WIP: Merge remote-tracking branch 'remotes/kvz_github/master' into update-cabac-during-search 2022-03-21 11:03:46 +02:00
Joose Sainio 9b7dc207b6 remove unnecessary copying of cabac state 2022-03-18 08:28:32 +02:00
Joose Sainio e39fbb11a7 Disable bit calculations that always degrade quality 2022-03-18 08:28:32 +02:00
Joose Sainio 352d6750f5 Remove instrumentation code 2022-03-18 08:28:32 +02:00
Joose Sainio 1ae5ecdec5 include pred_mode_bits for 2Nx2N inter pus for rd=0/1
# Conflicts:
#	src/search_inter.c
2022-03-18 08:28:31 +02:00
Joose Sainio b0037b814d Use correct lambda
# Conflicts:
#	src/search_inter.c
2022-03-18 08:28:31 +02:00
Joose Sainio 00516d3dce Make sure intra does not accidentally skip coeff cost calculation 2022-03-18 08:28:31 +02:00
Joose Sainio e0ed91658b Fix no-early-skip without breaking early-skip 2022-03-18 08:28:31 +02:00
Joose Sainio d1ba62aea9 Better inter bit_costs for rdo < 2 2022-03-18 08:28:31 +02:00
Joose Sainio d720305fea Don't double count some of the bits 2022-03-18 08:28:31 +02:00
Joose Sainio 2ac9daf6e4 accurate inter bit cost during search 2022-03-18 08:28:30 +02:00
Joose Sainio 49c8334dd7 count skip flag 2022-03-18 08:28:30 +02:00
Joose Sainio 8cd81e3dcf Only count smp extra cbf bits when rd < 2 2022-03-18 08:28:30 +02:00
Joose Sainio 3ac17ffd95 better early skip? 2022-03-18 08:28:30 +02:00
Joose Sainio c7174b25cf smp/amp CUs cannot be skipped 2022-03-18 08:28:30 +02:00
Joose Sainio 71b1e59548 Better early-skip? 2022-03-18 08:28:30 +02:00
Joose Sainio ff02a84a96 Probably better order of things 2022-03-18 08:28:30 +02:00
Joose Sainio a9255901d9 Only perform rd2 calculation on the best candidate of the list if it exists
But only for 2Nx2N blocks
2022-03-18 08:28:29 +02:00
Joose Sainio a0e7165df4 use correct pu for rd calc 2022-03-18 08:28:29 +02:00
Joose Sainio 6d73db5a2a Probably correct RD cost calculation for all inter modes 2022-03-18 08:28:29 +02:00
Joose Sainio 1a9e54601f Calculate rd2 cost for all inter modes instead of just the final one 2022-03-18 08:28:29 +02:00
Joose Sainio 5afd3570f6 Update cu_qt_root_cbf_model 2022-03-18 08:28:29 +02:00
Joose Sainio f3f0037123 include root_cbf cost 2022-03-18 08:28:29 +02:00
Joose Sainio aaac260438 better merge cost 2022-03-18 08:28:28 +02:00
Joose Sainio 159793f5b4 more accurate get_mvd_coding_cost 2022-03-18 08:28:28 +02:00
Joose Sainio 8d12884e43 disable VERBOSE 2022-03-18 08:28:28 +02:00
Joose Sainio 5ed1ffb5d4 WIP: pre Christmas 2022-03-18 08:28:28 +02:00
Joose Sainio f83e21735c Fix couple of mistakes 2022-03-18 08:28:28 +02:00
Joose Sainio 243e45f07e accurate bit cost calculation when using transform skip 2022-03-18 08:28:28 +02:00
Joose Sainio a038ccc19a add back bitcost for 4×4 intra PUs 2022-03-18 08:28:27 +02:00
Joose Sainio 951a845f08 Remove consts and fix wrong types 2022-03-18 08:28:27 +02:00
Joose Sainio 64b2806cc8 Add couple of missing bits to the calculation and get intra neighbours from lcu rather than cu_array 2022-03-18 08:28:27 +02:00
Joose Sainio aea1133e6a Function for mock coding a CU and counting the bits 2022-03-18 08:27:22 +02:00
Joose Sainio 4b8d217f2d Add new macro for potentially updating cabac context when obtaining the bit cost 2022-03-18 08:19:57 +02:00
Joose Sainio d8648fe1de Preparation for accurately counting inter bits 2022-03-18 08:19:57 +02:00
Joose Sainio 311fceade7 Force use inter 2022-03-18 08:19:56 +02:00
Joose Sainio 1fb69d5e22 Correct tr depth bit calculation 2022-03-18 08:18:04 +02:00
Joose Sainio de3a76d874 Correctly calculate bits for transform split, however updating is done incorrectly, but cannot be fixed easily unfortunately 2022-03-18 08:18:04 +02:00
Joose Sainio dacc15f33b Count pred mode bit 2022-03-18 08:18:03 +02:00
Joose Sainio d2299adb1c Disable bit debug code when VERBOSE is not defined and count bits when combining the intra cus 2022-03-18 08:18:03 +02:00
Joose Sainio 9ed8d0a7d9 count all non-tr-depth related bits correctly 2022-03-18 08:17:41 +02:00
Joose Sainio 53264bc764 Update cabac context during search
Create a separate cabac that is only used during the search. It should hold
the state that the actual cabac end after encoding said CU. Only implemented
for intra so far.

TODO: 4×4 PUs probably still have some problems
2022-03-18 08:17:41 +02:00
Joose Sainio d5e4e831f4 Preliminary code for outputting bit costs during the search 2022-03-18 08:17:41 +02:00
Joose Sainio 8ff1c51835 Merge branch 'combine-intra-option' 2022-03-18 07:59:39 +02:00
Joose Sainio 85d1a54adc Add cli option for forcing inter 2022-03-17 14:48:08 +02:00
siivonek c9cbadad8a Merge branch intra_mip. 2022-03-17 12:04:59 +02:00
Joose Sainio f1a3aa60dd Don't write prediction mode for 4x4 intra cus 2022-03-14 10:34:06 +02:00
Joose Sainio eff8d7cdac Fix picture headers for open-gop 2022-03-14 10:32:46 +02:00
Joose Sainio 763ad3f8f5 Merge remote-tracking branch 'remotes/origin/unify-roi-features' 2022-03-12 08:48:09 +02:00
Joose Sainio 0dd7646a34 Fix mip context calculation for P and B slices 2022-03-10 10:48:37 +02:00
siivonek ae2e0da6ab [mip] Add parenthesis around macro parameters. 2022-03-04 00:19:01 +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 d2c24c9a0c [mip] Fix error in deriving MIP flag context id. 2022-02-09 12:55:17 +02:00
siivonek 8aea4f67f7 [mip] Fix reference indexing error. 2022-02-09 12:55:17 +02:00
siivonek b8a8bce55a [mip] Fix MIP bit cost calculation. 2022-02-09 12:55:17 +02:00
siivonek 55e4091030 [mip] Fix MIP cabac write. 2022-02-09 12:55:16 +02:00
siivonek a4366dbcc5 [mip] Fix error which caused asan CI test to fail. Was caused by an uninitialized intra CU mip value. 2022-02-09 12:55:16 +02:00
siivonek 6b33957978 [mip] Implement MIP bit cost calculation. 2022-02-09 12:55:16 +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 2daa8ad537 [mip] Implement cabac write. 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 0b9568b466 Re-add debug files to project file filters. Makefile spaces to tabs. 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
siivonek 07d78e07a6 [mip] Add defines. 2022-02-09 12:55:15 +02:00
siivonek e7da0712e5 [mip] Add commandline option for MIP. 2022-02-09 12:55:15 +02:00
Ari Lemmetti 917d26f1bf Unify delta QP / ROI map functionality. 2022-02-08 20:15:27 +02:00
Jaakko Laitinen 25a8a40de0 Merge branch 'deblock_fix' into 'master'
[Deblock] Fix deblock when using inter

See merge request cs/ultravideo/vvc/uvg266!8
2021-12-31 14:41:06 +02:00
Jaakko Laitinen 57d8623931 [Deblock] Fix B-frame detection 2021-12-30 16:18:43 +02:00
Jaakko Laitinen fe9d673b2a [Deblock] Fix Luma issue
mvdThreashold set incorrectly
2021-12-29 17:26:00 +02:00
siivonek 4ffef711d7 Merge branch 'intra_mrl_cost' 2021-12-15 15:51:19 +02:00
Marko Viitanen 2545081be5 [threading] Added more margin to fracmv_within_tile() because of nondeterministic behaviour 2021-12-14 11:16:43 +02:00
Marko Viitanen 2cdeff75cb [debug] Add debug.c/.h to visual studio project and some debugging options 2021-12-14 11:15:35 +02:00
Joose Sainio 6c50939af3 Different roi-matrix for each frame
Implement reading the roi-matrix for each frame from binary file. Extremely simple and breaks on any unhappy paths.

# Conflicts:
#	src/cfg.c
#	src/cli.c
#	src/encoder.c
#	src/image.c
#	src/rate_control.c
2021-12-12 22:13:05 +02:00
Jaakko Laitinen 77457391b4 [Deblock] Refactor deblock pixel gather
Refactor deblock pixel gather for large blocks to be less confusing.
2021-12-10 19:05:43 +02:00
Marko Viitanen dce5c2b293 [threading] Add dependency to one more CTU to the right
* in VVC the conditions for limiting motion vectors might not have been correct
 * x + 1 and y + 1 CTU dependency did not mean that x + 2 would be available, as in HEVC
2021-12-10 16:07:34 +02:00
Jaakko Laitinen 9e95b16368 [Deblock] Fix chroma deblocking issues when inter is enabled
Added cbf_copy() calls for chroma components in the lcu_fill_cbf() function since deblocking now uses that information for chroma as well.
2021-12-10 15:30:47 +02:00
Ari Lemmetti 51dd942778 Fix uninitialized fields of CU/PU infos. 2021-12-10 00:32:08 +02:00
Ari Lemmetti 2424a976a4 Prevent using uninitialized memory 2021-12-10 00:21:58 +02:00
Ari Lemmetti e45c6a9c68 Fix too few added keys in inter search stats.
The function search_pu_inter_bipred may add more PUs than there are reference pictures.
2021-12-10 00:03:37 +02:00
siivonek 236265a1f4 [mrl] Implement MRL bitcost calculation. 2021-12-09 16:43:25 +02:00
Ari Lemmetti a1a7036445 Fix indexing. Get rid of warning about jump depending on uninitialized value. 2021-12-08 23:06:39 +02:00
Ari Lemmetti bb1f2a0895 Reorder condition to prevent indexing past the array 2021-12-08 21:13:25 +02:00
Ari Lemmetti e87b12dec1 Move mv_cand initialization to better place 2021-12-08 21:09:16 +02:00
Ari Lemmetti f17a500b77 Get rid of warnings. (Unused variables, suggested parentheses) 2021-12-08 21:06:12 +02:00
Ari Lemmetti c411e65977 Prevent FME and bipred from the same reference picture if present in L0 and L1 2021-12-08 20:35:03 +02:00
Ari Lemmetti 49935710a8 Only one ME per reference picture (same ref in L0 and L1) 2021-12-08 16:35:47 +02:00
Ari Lemmetti ae498553c0 Add define MAX_UNIT_STATS_MAP_SIZE. Add assertions to inter search. 2021-12-08 15:53:31 +02:00
siivonek dea3ca12aa Merge branch 'intra_mrl' 2021-12-08 15:51:50 +02:00
Ari Lemmetti 1af90b194e Add missing bits to RD costs. 2021-12-08 15:34:05 +02:00
Ari Lemmetti 706d718d5d Perform FME for n best PUs from L0 and L1. 2021-12-08 15:34:05 +02:00
Ari Lemmetti 7f7112cc57 Use up-to-date value of mv dir for bit cost calculations 2021-12-08 15:34:04 +02:00
Ari Lemmetti 4e19f7b71e Move mode decision logic and current PU setting to higher-level functions 2021-12-08 15:34:04 +02:00
Ari Lemmetti 3e967c0077 Add missing assertion and set cu before 2021-12-08 15:34:04 +02:00
Ari Lemmetti bdece66dc4 Compare the final costs only once and then set the current CU 2021-12-08 15:34:04 +02:00
Ari Lemmetti 0b223b24f2 Fix comment 2021-12-08 15:34:03 +02:00
Ari Lemmetti 4d02b69c4e Set CU type in inter search functions 2021-12-08 15:34:03 +02:00
Ari Lemmetti 2b9b398524 Remove now unnecessary state store/restore 2021-12-08 15:34:03 +02:00
Ari Lemmetti 3a219146ed Rename some variables 2021-12-08 15:34:03 +02:00
Ari Lemmetti dc4676eef1 Remove merge attempts from bipred functions 2021-12-08 15:34:03 +02:00
Ari Lemmetti adb31ce959 Use the new struct for bipred refinement as well 2021-12-08 15:34:02 +02:00
Ari Lemmetti 70a393a3dc Set mv candidates before cost calculations for bipred. Use the new struct for bipred. 2021-12-08 15:34:02 +02:00
Ari Lemmetti 574d6c4593 Eliminate copy-paste logic from different ME algorithms. 2021-12-08 15:34:02 +02:00
Ari Lemmetti d28c2295dc The best_* fields are no longer used to track anything. Convert costs to double. 2021-12-08 15:34:02 +02:00
Ari Lemmetti 9905cd42d6 Rename "indx" to "keys". There are too many "indices" already. 2021-12-08 15:34:01 +02:00
Ari Lemmetti 5edb82648a More intuitive logic for computing RD costs and bit costs for SMP 2021-12-08 15:34:01 +02:00
Ari Lemmetti aca9192054 Move cu_info_t initializations to search_pu_inter. Rename cur_cu cur_pu. 2021-12-08 15:34:01 +02:00
Ari Lemmetti 8406942d06 Improve the new data structure a bit. Use also for merge candidates. 2021-12-08 15:34:01 +02:00
Ari Lemmetti 94096dd175 Ignore merge candidates when computing AMVP motion vector costs. 2021-12-08 15:34:00 +02:00
Ari Lemmetti 48773b0d25 Replace and relocate deprecated cost and mode parameter tracking. 2021-12-08 15:34:00 +02:00
Ari Lemmetti 1940f0880f Add amvp unipredictions to both lists if reference picture is present 2021-12-08 15:33:57 +02:00
siivonek 64e6eb1f28 [mrl] Clean old commented mrl code. 2021-12-08 15:21:43 +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 0dcd6dbec0 [mrl] Fix kvz_angular_pred_avx2() for mrl and enable cpuid in CI 2021-12-08 14:48:44 +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
Marko Viitanen f501465e8d [debug] Add yuview debug output for transform skip 2021-12-03 19:38:50 +02:00
Marko Viitanen 545fc305e7 [cleanup] Remove unused variables in trskip coding functions 2021-12-03 17:23:19 +02:00
Marko Viitanen 46af1536ee [trskip] Signal sig coeff group correctly for the transform skip when blocksize > 4x4 2021-12-03 17:17:06 +02:00
Marko Viitanen fe7aff90b7 [mts] Signal MTS with inter blocks 2021-12-03 11:00:07 +02:00
Marko Viitanen 1dd378e851 [cleanup] Remove deprecated width and height parameters and other small changes
* change some mentions of Kvazaar to uvg266
  * remove cfg.framerate
2021-12-02 23:09:40 +02:00
Marko Viitanen 3a447e09c2 [trskip] Allow changing the max tr-skip size 2021-12-02 22:56:07 +02:00
Ari Lemmetti 2ed434e57b Remove now deprecated array 2021-12-02 20:00:19 +02:00
Ari Lemmetti 90c0a708a7 Add new structs for storing statistics during the search. Use in AMVP search. 2021-12-02 20:00:19 +02:00
Ari Lemmetti 936fb76685 Remove merge candidate stuff from search_pu_inter_ref
There is a separate merge analysis now
2021-12-02 20:00:19 +02:00
Ari Lemmetti 3265d45a4e Temporarily remove FME threshold for verification purposes 2021-12-02 20:00:18 +02:00
Ari Lemmetti e000c7229f Fix bit costs in search_pu_inter_ref a bit 2021-12-02 20:00:18 +02:00
Ari Lemmetti ec2f4e0bac Use double for RD costs in most places 2021-12-02 20:00:15 +02:00
Joose Sainio f1f0033bf5 Add a cli option to control whether intra cus are tried to combine on the lower depth when search for said depth is disabled 2021-12-02 10:52:29 +02:00
Marko Viitanen 1c7c14d544 [debug] Add MV debugging tool enabled with KVZ_DEBUG_PRINT_MV_INFO 2021-12-01 15:51:25 +02:00
Marko Viitanen 09d2881ca9 [debug] Handle tiles with the yuview data 2021-12-01 15:36:29 +02:00
Marko Viitanen 6a89817adb [debug] Arrange the yuview CSV data by POC and type, add data for CU type 2021-12-01 14:43:34 +02:00
Marko Viitanen 03013f571d [tmvp] Fix a bug with selecting tmvp reflist and negate the MVs according to POC 2021-12-01 12:42:04 +02:00
Marko Viitanen 4f42c9c22c [debug] Fix problems in YUView CSV format 2021-12-01 08:55:21 +02:00
Marko Viitanen c4aa579911 [debug] Change tabs to semicolons 2021-11-30 22:15:14 +02:00
Marko Viitanen 5cbc655954 [debug] Add debug.c/.h and initial version of YUView CSV format printers 2021-11-30 22:11:20 +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 a01734375b [mrl] Fix reference builder call in CCLM code. 2021-11-29 17:11:40 +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 e41067220c Fix error in block reconstruction when MRL is used. 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 a5dc2a3ce1 Disable MRL when copying best mode from top left CU. 2021-11-29 17:02:26 +02:00
siivonek 55a3274de8 Skip searching planar mode in RDO search if MRL is in use. 2021-11-29 17:02:26 +02:00
siivonek 1064603164 Limit MRL search to only MPM modes. 2021-11-29 17:02:26 +02:00
siivonek bbf0f02f3c Fix mistake in MRL commandline value parsing. 2021-11-29 17:02:26 +02:00
siivonek f0a412e202 Fix errors in MRL implementation in intra rdo search. 2021-11-29 17:02:26 +02:00
siivonek 9396940900 Implement writing MRL bits to cabac. 2021-11-29 17:02:25 +02:00
siivonek 8fb5220b17 [mrl] Implement MRL into cabac coding. 2021-11-29 17:02:15 +02:00
siivonek 81ddf2f83a [mrl] Add MRL support to intra rdo search. 2021-11-29 16:59:56 +02:00
siivonek c3860f1cbc Move max reference line idx define to proper place. 2021-11-29 16:59:56 +02:00
siivonek cdb64f5e86 Change MRL variable name to snake_case. 2021-11-29 16:59:55 +02:00
siivonek ea04feaaca Add MRL handling to reference building. 2021-11-29 16:59:55 +02:00
siivonek f22af05dd6 Extend the reference arrays for MRL. 2021-11-29 16:59:55 +02:00
siivonek 3462ac7219 Add multiRefIndex to reference handling. 2021-11-29 16:59:55 +02:00
siivonek b8d4af3660 Extend reference arrays for use with MRL. 2021-11-29 16:59:55 +02:00
siivonek b0f5b93c6d Add commandline option for multiple reference line (MRL) intra prediction. 2021-11-29 16:59:55 +02:00
Marko Viitanen 3fda2dd6c8 [cleanup] Fix some warnings 2021-11-29 16:31:09 +02:00
Marko Viitanen 810270907b Fix log2_max_pic_order_cnt_lsb_minus4 by using the poc_lsb_bits variable, fixes gop=16 2021-11-26 20:31:12 +02:00
Ari Lemmetti d6b2ec5814 Only check used reference picture lists when validating merge candidates.
Merge candidate struct should be initialized to zero, so this should not have any effect. The conditions are added in case someone decides to copy the code as an example.
2021-11-26 18:47:14 +02:00
Marko Viitanen 44f4ce7063 [bipred] Fix reference list writing with low-delay gop with bipred use-case 2021-11-26 17:16:32 +02:00
Marko Viitanen f0f77b9bfa [bipred] Fix sh_num_ref_idx_active_minus1 flag when gop==0 and bipred are used 2021-11-26 17:12:59 +02:00
Marko Viitanen 36d302ba38 [bipred] Fix reference list writing when gop==0 and bipred are used, add to CI also 2021-11-26 17:04:30 +02:00
Marko Viitanen e662a2747b Merge branch 'tile_fixes' 2021-11-26 14:30:05 +02:00
Marko Viitanen b648bb1cd1 [tiles] Clear HMVP size properly before each leaf encoder 2021-11-26 14:00:39 +02:00
Marko Viitanen 056ed3f979 [tiles] Init HMVP for each tile 2021-11-26 10:26:43 +02:00
Joose Sainio 385e91399a [intra rdo] Raise maximum rd level to 4
Separate the rd option for chroma intra mode search from the full intra
mode search, i.e., rd=3 enables chroma mode search and rd=4 enables full
intra mode search.
2021-11-26 08:12:37 +02:00
Joose Sainio ce175c503f [cclm] remove unnecessary calculation of the downsample luma reference 2021-11-26 08:12:37 +02:00
Joose Sainio 697d4c0652 [cclm] Add bits to RD calculation 2021-11-26 08:12:31 +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 c16ce9a82b [cclm] fix bin type for the second cclm mode bit 2021-11-26 08:11:53 +02:00
Joose Sainio 87a458dc85 [cclm] fix incorrect log_width for chroma ref generation 2021-11-26 08:11:53 +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 754607dae4 [cclm] bitstream writing + cabac 2021-11-26 08:11:53 +02:00
Joose Sainio 1c431d8f88 [cclm] Add commandline argument 2021-11-26 08:11:39 +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 62250a692d [tiles] Move HMVP from state->frame to state->tile->frame, so each tile has own lut 2021-11-25 20:21:13 +02:00
Marko Viitanen d8a8f02471 [tiles] Set rectangular slices flag -> I-frames working with tiles 2021-11-25 16:24:51 +02:00
Marko Viitanen 4c578d9cad [tiles] Write correct headers when tiles are enabled 2021-11-25 15:36:28 +02:00
Marko Viitanen 47108a9bb6 [tmvp] Change some variables to unsigned for ubsan error fix 2021-11-25 12:07:02 +02:00
Marko Viitanen f3d27b0a4b [tmvp] Select correct reflist and reverse the MVs when selecting for L1, add tmvp to tests 2021-11-25 11:51:39 +02:00
Marko Viitanen 83430a49f2 [tmvp] Round TMVP colocated MVs using float conversion from VTM 2021-11-24 21:57:46 +02:00
Marko Viitanen 37405ffdee [tmvp] Remove check for duplicate candidates since it's not used in VVC 2021-11-24 19:57:46 +02:00
Marko Viitanen cfd9b46328 [tmvp] Write sh_collocated_ref_idx when more than one picture in L0 list 2021-11-24 15:23:29 +02:00
Marko Viitanen 8dc2cc32f7 [tmvp] Replace C3 and H with C0 and C1 in get_temporal_merge_candidates() 2021-11-24 15:19:01 +02:00
Marko Viitanen 348f54f5bb [tmvp] Change maximum MV in scaled mv clipping 2021-11-24 15:18:11 +02:00
Marko Viitanen 12e38684ff [inter] Change mvd coding cost to use cabac contexts 2021-11-23 16:25:31 +02:00
Marko Viitanen b644e85c1a [bipred] Fix bipred candidate selection 2021-11-23 10:58:47 +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 1b86533b00 [inter] Scale MV's to qpel for cost calculation 2021-11-22 21:50:40 +02:00
Marko Viitanen 7df4542c48 [fme] Fix filter coeffs used in kvz_filter_qpel_blocks_diag_luma_avx2() 2021-11-22 20:50:00 +02:00
Marko Viitanen 64705a27ee [fme] Enable 1/16th luma pixel fme 2021-11-22 20:31:30 +02:00