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