Commit graph

3826 commits

Author SHA1 Message Date
Marko Viitanen 8aded6406b [ibc] Fix issue in search 2023-05-08 12:26:06 +03:00
Marko Viitanen 34c7c432f9 [ibc] Fix deblocking for the IBC blocks 2023-05-08 11:58:40 +03:00
Joose Sainio e636db489f [cfg] Parameterize intra rough search granularity 2022-09-28 08:49:38 +03:00
Joose Sainio ed6a0528fe Further make things faster 2022-08-30 15:17:05 +03:00
Joose Sainio b0b2b0e536 Try making ultrafast all intra a bit faster 2022-08-29 14:11:08 +03:00
Marko Viitanen 6de2e2d581 [ibc] Fix some git merge issues and IBC merge candidate selection 2022-08-03 10:46:02 +03:00
Marko Viitanen 6a0e2a062d [ibc] Implement a proper search for IBC based on Inter search 2022-07-29 11:53:11 +03:00
Marko Viitanen 65c017c2f2 [ibc] Add check for above block in IBC search 2022-07-29 11:53:11 +03:00
Marko Viitanen 09e62a68fe [ibc] Fix merge candidate selection bug and IBC HMVP size reset at the start of the lcu row 2022-07-29 11:53:10 +03:00
Marko Viitanen d288cc46e9 [ibc] Fix coding of IBC in P and B slices, enable in search 2022-07-29 11:53:10 +03:00
Marko Viitanen 48584eead9 [ibc] Reset the jccr flags to fix a bug with IBC 2022-07-29 11:53:10 +03:00
Marko Viitanen 7ce01b4826 [ibc] Tune search costs a bit and revert debug vector scaling 2022-07-29 11:53:09 +03:00
Marko Viitanen 0fdf96fab2 [ibc] Change internal MV storage to INTERNAL_MV_PREC and code it as full-pel 2022-07-29 11:53:09 +03:00
Marko Viitanen cc4c757695 [ibc] Fix bugs on IBC reconstruction and add a simple search for I-frames 2022-07-29 11:53:08 +03:00
Marko Viitanen d9164f3cfe [ibc] Simplify the IBC merge candidate and mv cand selection 2022-07-29 11:53:08 +03:00
Marko Viitanen a46a4531a3 [ibc] Add HMVP for IBC and correct AMVP selection 2022-07-29 11:52:17 +03:00
Marko Viitanen dbc2006ba9 [ibc] Implement IBC reconstruction function when blocks are completely in the ibc buffer 2022-07-29 11:52:16 +03:00
Marko Viitanen b49d32af21 [ibc] Add IBC buffers 2022-07-29 11:52:15 +03:00
Marko Viitanen 6ec4c37b47 [ibc] Add IBC Flag context and code the bits, disable by default for now 2022-07-29 11:49:49 +03:00
Marko Viitanen 20d0a9b65e [ibc] Add --ibc parameter and config values for Intra Block Copy 2022-07-29 11:49:49 +03:00
Marko Viitanen cd2d4066d5 Fix scaled MV clipping and remove some unused variables 2022-07-28 13:59:11 +03:00
Marko Viitanen 3dd738ebb5 Fix mv_t rounding problems in some functions 2022-07-27 13:02:37 +03:00
Marko Viitanen 5ce1035291 [debug] Fix Motion Vector debug code not to overflow on videos not divisible by LCU_WIDTH 2022-07-27 12:48:39 +03:00
Marko Viitanen b7b7c22e44 Change mv_t to int32_t because of possible overflow in large videos 2022-07-27 12:48:39 +03:00
Joose Sainio ea32ef33ac [lfnst] handle transform skip correctly during search 2022-07-08 10:57:26 +03:00
Joose Sainio 03fb6ce92e [lfnst] Fix lfnst+tr_skip for dual tree 2022-07-08 10:57:26 +03:00
Joose Sainio 450cd00290 [mts] Fix cost calculation 2022-07-08 10:56:35 +03:00
Joose Sainio f9212b4e44 [mts] Don't do tr-skip when tr-skip is disabled 2022-07-06 15:15:28 +03:00
Joose Sainio dc7c8eeb41 [tr-skip] fix uvg_encode_ts_residual 2022-07-06 10:51:01 +03:00
Joose Sainio 427d611a00 [intra] Perform chroma search for rd2 2022-07-05 12:29:27 +03:00
Joose Sainio e2c34e7c25 [lfnst] Fix lfnst for --rd 2 2022-07-05 12:19:21 +03:00
Joose Sainio 02aa36f1a2 [tests] Fix final issue with avx2 satd and update test results 2022-07-05 10:28:59 +03:00
Joose Sainio 42adfb52a7 [satd] Satd scaling on avx2 implementations and re-enable satd tests 2022-07-05 09:34:59 +03:00
Joose Sainio 1f6a62e70e [fix-up] Force lfnst off when trying the mode from below depth block 2022-07-04 13:45:16 +03:00
Joose Sainio 3de4b99aec [jccr] Fix cost calculation 2022-07-04 13:41:14 +03:00
Joose Sainio 3a6414c31d [dual-tree] Fix deblock 2022-06-30 14:21:03 +03:00
Joose Sainio 5fefea025f [lfnst] get constarints for jccr mode 2022-06-29 16:35:55 +03:00
Joose Sainio b35a75b2eb [lfnst] Fix lfnst with rdoq 2022-06-29 16:25:25 +03:00
Joose Sainio 6ef532775b [intra] Fix various issues with cclm, mip, dual-tree, and lfnst 2022-06-29 15:09:34 +03:00
Joose Sainio 06d277bc78 [doc] update manpage and readme 2022-06-28 16:25:25 +03:00
Joose Sainio 68243e284f [cleanup] fix warnings 2022-06-28 16:02:22 +03:00
Joose Sainio b4ab9debf1 [lfnst] fix lfnst with cclm 2022-06-28 15:32:34 +03:00
Joose Sainio e25ea52f6f [lfnst] Fix mistakes 2022-06-28 15:32:33 +03:00
Joose Sainio 2fbbae834b [cclm] fix cclm for 4x4 2022-06-28 15:32:33 +03:00
Joose Sainio b8b603feb7 [lfnst] fix compile 2022-06-28 15:32:33 +03:00
Joose Sainio a0dd412811 [cclm] fix cclm bound calculation 2022-06-28 15:32:32 +03:00
Joose Sainio 75e500da10 [lfnst] LFNST working with dual tree 2022-06-28 15:32:32 +03:00
Joose Sainio faba18fe17 [dual-tree] only perform lfnst search when lfnst is enabled 2022-06-28 15:32:32 +03:00
Joose Sainio d16d6e3dd8 [dual-tree] [lfnst] allow counting lfnst bits for chroma in dual-tree 2022-06-28 15:32:31 +03:00
Joose Sainio 37590add20 [lfnst] [dual-tree] LFNST should work with dual tree 2022-06-28 15:32:31 +03:00
Joose Sainio 6c7dc9004c [dual-tree] Fix split context state updating 2022-06-28 15:32:31 +03:00
Joose Sainio b0d616b03c [dual-tree][tests] Fix some issues and enable cabac state test to test for dual tree 2022-06-28 15:32:30 +03:00
Joose Sainio 345c50ecee [dual-tree] rename kvz_ to uvg_ 2022-06-28 15:32:30 +03:00
Joose Sainio 3f12ee58b0 [dual-tree] fix --pu-depth-intra 4-4 for dual tree 2022-06-28 15:32:30 +03:00
Joose Sainio b8215baa30 [dual-tree] Fix CCLM+dual tree 2022-06-28 15:32:30 +03:00
Joose Sainio cf144e2724 [dual-tree] Works for all depths with basic tools 2022-06-28 15:32:29 +03:00
Joose Sainio 1c313e9c19 [dual-tree] works for depths 1 and 2 2022-06-28 15:32:29 +03:00
Joose Sainio 15cb06ded1 [dual-tree] Fix at least for implicit splits 2022-06-28 15:32:29 +03:00
Joose Sainio ed8496e57e [dual-tree] Matches except for cutoff bottom CTUs for forced depth=1 2022-06-28 15:32:28 +03:00
Joose Sainio 2017cb122a [dual-tree] Actually does whole frame 2022-06-28 15:32:28 +03:00
Joose Sainio abd00d04a1 [dual-tree] Still not working but bitstream valid 2022-06-28 15:32:28 +03:00
Joose Sainio 0adb0846d2 [dual-tree] Bitstream valid, hash missmatches 2022-06-28 15:32:28 +03:00
Joose Sainio be2ef18fea [dual-tree] Not working 2022-06-28 15:32:27 +03:00
Joose Sainio 8fba042e02 [dual-tree]preliminary preparation for dual tree 2022-06-28 15:32:27 +03:00
Joose Sainio 74c931a7c7 [lfnst] cost on chroma when necessary and fixes 2022-06-28 15:32:27 +03:00
Joose Sainio 20010cf759 [lfnst] Fix hash mismatches for depth 4 chroma 2022-06-28 15:32:10 +03:00
Joose Sainio ed602d1c07 [lfnst] Cabac state matches for all sizes but hash mismatches 2022-06-28 15:31:55 +03:00
Joose Sainio 7a7bf045e6 [lfnst] 16x16 2022-06-28 15:31:42 +03:00
Joose Sainio d7f7a2d99b [lfnst] working for 32x32 2022-06-28 15:31:42 +03:00
Joose Sainio b75ce57fce [intra] Fix chroma search for rd=2 2022-06-28 15:30:56 +03:00
Joose Sainio 6413854f3d [intra] fix intra recon 2022-06-28 15:30:47 +03:00
Joose Sainio a6d79407ab [lfnst] various small fixes 2022-06-28 15:30:28 +03:00
Joose Sainio cfc3fa9f09 [lfnst] Include lfnst in chroma search 2022-06-28 15:29:56 +03:00
Joose Sainio 36137e2bee [lfnst] WIP 2022-06-28 15:29:50 +03:00
Joose Sainio 55a0e35892 [lfnst] Count lfsnt bits 2022-06-28 15:29:41 +03:00
Joose Sainio 66fef4934e Fix another rebase mistake 2022-06-28 15:29:34 +03:00
Joose Sainio 3da4a313ce Fix rebase mistakes 2022-06-28 15:29:25 +03:00
Joose Sainio 882b00068b [intra] Perform intra chroma search before the mode is selected 2022-06-28 15:29:20 +03:00
Joose Sainio 4dba21ea54 [jccr] Remove select_jccr_mode function 2022-06-28 15:29:11 +03:00
Joose Sainio 658d639f8b [jccr] Chroma tr_search for inter 2022-06-28 15:29:05 +03:00
Joose Sainio 85bfeea602 [jccr] Move chroma transform search related functions to transform.c 2022-06-28 15:28:53 +03:00
Joose Sainio 489876b9c7 [tr-skip] Add cmdline option for chroma transform skip 2022-06-28 15:28:47 +03:00
Joose Sainio 3afff7940c [jccr] update tr-skip context for jccr blocks 2022-06-28 15:28:40 +03:00
Joose Sainio c7a7a4719a [debug] remove debug prints 2022-06-28 15:28:29 +03:00
Joose Sainio 835b7fa736 [test] Add capability for testing the consistency of the cabac state 2022-06-28 15:28:06 +03:00
Joose Sainio 02931e8c24 [intra] Only use the old search if tr_depth != depth 2022-06-28 15:27:56 +03:00
Joose Sainio fbd5911aa9 [tr-skip] Update tr_skip context for chroma & count bits 2022-06-28 15:27:30 +03:00
Joose Sainio f056178e80 [jccr] Chroma transform search kinda working 2022-06-28 15:27:21 +03:00
Joose Sainio 27b730c2e9 [jccr] WIP chroma transform search 2022-06-28 15:26:47 +03:00
Joose Sainio c309b81532 [intra] Fix chroma bit counting 2022-06-28 15:26:41 +03:00
Joose Sainio aa2f412c20 [rd] Don't calculate cost for non-basic transforms that do not have coeffs 2022-06-28 15:26:36 +03:00
Joose Sainio 079d1e9aaf [debug] Disable this for now 2022-06-28 15:26:25 +03:00
Joose Sainio 03246c031e [cabac] Fix trskip writing 2022-06-28 15:26:19 +03:00
Joose Sainio c11e30fdb4 [mts] get mts constraints for bit counting 2022-06-28 15:26:11 +03:00
Joose Sainio 81df3ef2e0 [mts] Reset mts constraints 2022-06-28 15:25:21 +03:00
Joose Sainio 675eb5b508 [debug] remove debug prints 2022-06-28 15:25:15 +03:00
Joose Sainio 2f5fd05f88 [intra] fix warnings 2022-06-28 15:25:09 +03:00
Joose Sainio 418c65cbf1 [intra] count mts and tr_skip bits 2022-06-28 15:25:01 +03:00
Joose Sainio 804bf3afcb [intra] Limit rough search 2022-06-28 15:24:39 +03:00
Joose Sainio 4c66561ebe [debug] Temporarily move split flag counting 2022-06-28 15:24:32 +03:00
Joose Sainio 8c939c1405 [intra] Fix chroma cbf counting for 4x4 2022-06-28 15:24:25 +03:00
Joose Sainio 2feb3daaaf [intra] Count chroma mode bits 2022-06-28 15:24:18 +03:00
Joose Sainio dfbe9dad87 [intra] intra dist = MIN(satd_dist, sad_dist*2) 2022-06-28 15:24:12 +03:00
Joose Sainio 09832c3c85 [intra] fix various things 2022-06-28 15:24:02 +03:00
Joose Sainio 6fcec1fdd3 [mrl] [mip] initial rd improvement 2022-06-28 15:23:56 +03:00
Joose Sainio 1b3885d5be [intra] Chroma working 2022-06-28 15:23:36 +03:00
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