Commit graph

3680 commits

Author SHA1 Message Date
Jovasa f269ba436b
Merge pull request #6 from skal65535/fix
Fix several compile warnings
2022-06-16 10:59:00 +03:00
Marko Viitanen 429e945496 Round width and height to next 8 pixels instead of 4
* New macro CONF_WINDOW_PAD_IN_PIXELS
2022-06-16 09:45:35 +03:00
Marko Viitanen c71de0e9f9 Fix conformance window, signal only in SPS 2022-06-14 14:18:14 +03:00
Joose Sainio c8314d3ec3 update man page 2022-06-14 10:38:42 +03:00
LigH eab9a94455
Missing backslash escape in line break 2022-06-13 10:29:20 +02:00
Joose Sainio 7a22b94f0e [avmr] fix mvp_candidate rounding 2022-06-13 09:29:50 +03:00
Pascal Massimino 055b813bb3 Fix several compile errors:
src/search_inter.c:1210: implicit conversion from 'int' to 'int16_t'
                           was truncating constants.
  src/intra.c:511: const qualifier discarded
2022-06-09 17:49:59 +02:00
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