Commit graph

3720 commits

Author SHA1 Message Date
Joose Sainio 0575c9c592 [intra] Fix warnings 2022-06-28 15:23:25 +03:00
Joose Sainio 80ab347d93 [intra] Luma working 2022-06-28 15:22:47 +03:00
Joose Sainio 23fda23322 [intra] Count fractional bits with get_coeff_cabac_cost 2022-06-28 15:22:33 +03:00
Joose Sainio 6d080b215c [intra] WIP: improve search 2022-06-28 15:22:20 +03:00
Joose Sainio c16f42e9df [satd] DC scaling 2022-06-28 15:20:56 +03:00
Joose Sainio 480a907c07 [lfnst] change kvz_ to uvg_ 2022-06-28 15:20:44 +03:00
siivonek 7abbf14d50 [lfnst] Fix lfnst constraint calculation check. Constraints will now be calculated regardless of tr_idx value. 2022-06-28 15:20:44 +03:00
siivonek d15fb473a2 [lfnst] Fix error in mts skip check. Skip value was derived from tr_skip instead of correct tr_idx. 2022-06-28 15:20:44 +03:00
siivonek 4d3688cf17 [lfnst] Fix error in luma tr_skip check. All cbf was checked when only luma cbf needed to be checked. 2022-06-28 15:20:43 +03:00
siivonek 9171e03a53 [lfnst] Add cu intra check to lfnst calls. 2022-06-28 15:20:43 +03:00
siivonek 4fee153318 [lfnst] Fix assert. No need for >= 0 check for unsigned integer. 2022-06-28 15:20:43 +03:00
siivonek b836c6f529 [lfnst] Fix error in is_lfnst_allowed. Error caused cabac to fail on depth 4 chroma blocks. 2022-06-28 15:20:43 +03:00
siivonek cf4343989f [lfnst] Add early termination to mts/lfnst search if MTS_SKIP is selected. Resolve TODOs. 2022-06-28 15:20:42 +03:00
siivonek e056e87ca0 [lfnst] Fix help text missing line break. Fix luma transform skip check. 2022-06-28 15:20:42 +03:00
siivonek 7551952eeb [lfnst] Fix separate tree type checks. Fix lfnst search. Lfnst is now done in outer loop. 2022-06-28 15:20:42 +03:00
siivonek 896bc093d3 [lfnst] Remove unused stuff from lfnst constraint check. Use temp values for storing lfnst constraints during search instead of updating values inside pred cu. 2022-06-28 15:20:41 +03:00
siivonek 7b6b6586c6 [lfnst] Implement lfnst constraint check during search. 2022-06-28 15:20:41 +03:00
siivonek 64c5cfb127 [lfnst] Fix error in scan table selection. 2022-06-28 15:20:41 +03:00
siivonek 1c5f7f9dfc [lfnst] Fix errors in quantization code. Lfnst was called in wrong place. Fix error in lfnst algorithm, 16 bit integer overflow issue. 2022-06-28 15:20:41 +03:00
siivonek 2975b1fef0 [lfnst] WIP Implement lfnst search. Resolve some TODOs. 2022-06-28 15:20:40 +03:00
siivonek de18eef956 [lfnst] Chroma transform data is no longer stored in top left block. Remove -4x-4 coordinate offset. 2022-06-28 15:20:40 +03:00
siivonek 76947c4c41 [lfnst] Fix rebase errors. 2022-06-28 15:20:40 +03:00
siivonek b9c71b7f01 [lfnst] Fix cabac write issues. Lfnst constraints needed to be reset after encode_transform_coeff call. 2022-06-28 15:20:39 +03:00
siivonek ca2890d7e9 [lfnst] Fix error in inv lfnst call in quant generic. Add lfnst calls to quant avx2. Improve lfnst flag sps write. 2022-06-28 15:20:39 +03:00
siivonek 7928149d05 [lfnst] Fix CI errors. Had to remove const modifier from function call. 2022-06-28 15:20:39 +03:00
siivonek c1190e47d6 [lfnst] Fix cabac write issues. Remove is_luma from encode coeff function call, that information is already passed with type. Change parameter name 'type' -> 'color' to better reflect its purpose. 2022-06-28 15:20:38 +03:00
siivonek e3d92a5296 [lfnst] Add separate function to check if lfnst can be used with ISP. 2022-06-28 15:20:38 +03:00
siivonek acfc28d7ce [lfnst] Fix CI errors. Lfnst tables didn't have kvz prefix. 2022-06-28 15:20:37 +03:00
siivonek ee9258b2d9 [lfnst] WIP Fix errors in lfnst cabac write. 2022-06-28 15:20:37 +03:00
siivonek 560be8c5b4 [lfnst] Fix writing sps lfnst flag. 2022-06-28 15:20:37 +03:00
siivonek 835f576eef [lfnst] Fix error in writing lfnst constraints. Added check to test if CU data exists before referencing it. 2022-06-28 15:20:37 +03:00
siivonek e11fd3154d [lfnst] Implement cabac write. 2022-06-28 15:20:36 +03:00
siivonek 929828392a [lfnst] Implement inverse lfnst. 2022-06-28 15:20:36 +03:00
siivonek fb289ce875 [lfnst] Change lfnst context name. It now follows the naming convention of other similar contexts. 2022-06-28 15:20:36 +03:00
siivonek 026beb3154 [lfnst] Add lfnst coef scan table. 2022-06-28 15:20:35 +03:00
siivonek d9f556e219 [lfnst] Implement forward LFNST functions. 2022-06-28 15:20:35 +03:00
siivonek c039f3ba80 [lfnst] Add lfnst transform tables. 2022-06-28 15:20:35 +03:00
siivonek 213fe13a27 [lfnst] Add commandline option for lfnst. Implement cabac lfnst flag init and sps flag. 2022-06-28 15:20:35 +03:00
Marko Viitanen 4880b47a4e [cleanup] Update README AppVeyor badge url and remove mentions of Kvazaar 2022-06-18 13:49:09 +03:00
Marko Viitanen fb17bbc1ca [cleanup] Fix MSVC warnings about type conversion and signed/unsigned comparison 2022-06-18 13:43:16 +03:00
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