Commit graph

401 commits

Author SHA1 Message Date
Marko Viitanen e12ba7c80f Created function inter_recon_lcu_bipred() and moved bipred recon there 2015-04-21 12:05:21 +03:00
Marko Viitanen 50fce975d9 Clamp bi-pred motion vectors because ipol filtering requires modifications 2015-04-21 11:24:07 +03:00
Ari Koivula 7028846423 Fix bug in intra mode search.
- The cost of the first mode in the mode list was returned instead of cost of
  the selected mode, as this used to be the best mode when the list was
  sorted. Should only matter when doing inter coding.
- This pretty much affects only --rd=1 in inter frames.
2015-04-09 16:05:53 +03:00
Marko Viitanen da3fe9f199 Fixed rounding in bi-pred reconstruction 2015-04-02 15:55:13 +03:00
Marko Viitanen c7a17cf1c4 Changed motion vector candidate derivation to work with bi-pred case 2015-04-02 14:05:24 +03:00
Marko Viitanen d26b89174b Fixed intra chroma search ref_v pointer 2015-03-31 15:43:22 +03:00
Marko Viitanen 4b7db2e014 Added a dummy bi-pred search, always selects bi-pred block when possible 2015-03-31 15:02:43 +03:00
Marko Viitanen 2c676927f0 Fixed a bug in bipred reconstruction causing an overflow 2015-03-31 15:02:10 +03:00
Marko Viitanen 06bc4f3d5e Fixed duplicate checking for merge cand and some cleanup 2015-03-31 12:23:46 +03:00
Marko Viitanen f881d6bf8a Modified structures and mv handling to use L0/L1 vectors 2015-03-30 14:40:29 +03:00
Marko Viitanen 9a828ae5da Fixed merge candidate scaling in hexbs and excluded weighted pred candidates in cost calc 2015-03-24 09:38:24 +02:00
Marko Viitanen 2d8552d0d6 Fixed merge candidate usage by skipping weighted prediction candidate 2015-03-23 15:17:41 +02:00
Marko Viitanen 34e8f70c8c Fixed temporal MV predictor offset 2015-03-23 09:22:47 +02:00
Marko Viitanen eccf1c1a16 Fixed temporal MV predictor offset 2015-03-23 09:21:52 +02:00
Marko Viitanen 164b7a7743 Merge remote-tracking branch 'remotes/origin/master' into GOP 2015-03-20 11:40:15 +02:00
Marko Viitanen 26082d5328 Zero merge candidate fix for B-frames 2015-03-20 10:33:05 +02:00
Arttu Ylä-Outinen 3f31e7bf47 Merge branch 'tz-search' 2015-03-19 19:04:44 +02:00
Arttu Ylä-Outinen 176dbb6a5b Add --me parameter.
Selects the integer motion estimation algorithm (hexbs or tz).
2015-03-19 18:48:10 +02:00
Marko Viitanen d72c560880 Generate sorted reference list for L0 and L1 2015-03-19 12:26:59 +02:00
Marko Viitanen c761a6beb3 Added encoder state as an input parameter to inter_get_merge_cand() 2015-03-18 12:35:47 +02:00
Marko Viitanen c56b4d5747 Added combined merge candidates on B-slices and struct inter_merge_cand_t 2015-03-18 10:03:06 +02:00
Ari Koivula 6ec177f75c Improve handling of input vector to inter search. 2015-03-17 17:16:15 +02:00
SanteriS 913ade461b tz_search step 1, first if: && -> || 2015-03-12 17:57:17 +02:00
SanteriS bdb0639ac9 fixed function interfaces for tz_search and its subfunctions. 2015-03-12 17:54:21 +02:00
Marko Viitanen 66660516b7 Merge remote-tracking branch 'remotes/github/master' into GOP
Conflicts:
	src/cabac.h
	src/config.h
	src/cu.h
	src/encoder_state-bitstream.c
	src/encoderstate.c
2015-03-10 10:32:00 +02:00
Marko Viitanen eba298e635 Added cu->inter.mv_ref_coded variable 2015-03-10 09:17:25 +02:00
SanteriS 9e9f5e3150 Merge branch 'master' of https://github.com/ultravideo/kvazaar 2015-03-08 19:20:08 +02:00
SanteriS e2f9fe130a changed step 1 for tz_search 2015-03-08 19:19:23 +02:00
Marko Viitanen 6095503918 Modified search to use correct reference id and mv directions 2015-03-06 16:29:24 +02:00
Ari Koivula 2f79bfebf7 Rename parameter encoder_state to state in all functions.
- It's so widely used that there isn't really need to emphasize that
  it's the encoders state. Also, it isn't really the encoders state,
  but encoding jobs state.
2015-03-04 17:31:07 +02:00
Ari Koivula ded6fd9ee8 Renamed typedef pixel to pixel_t. 2015-03-04 16:35:53 +02:00
Ari Koivula 1f42adb1ea Renamed typedef coefficient to coeff_t. 2015-03-04 16:33:47 +02:00
Ari Koivula fe55961f84 Rename struct image to image_t. 2015-03-04 14:01:17 +02:00
Ari Koivula e5b18cd536 Inline cu_info_intra and cu_info_inter into cu_info_t. 2015-03-04 14:01:16 +02:00
Ari Koivula a0767a76d2 Rename struct vector2d to vector2d_t. 2015-03-04 14:01:16 +02:00
Ari Koivula 727fefacc4 Rename struct cabac_ctx to cabac_ctx_t. 2015-03-04 14:01:16 +02:00
Ari Koivula 7ca688b376 Rename struct videoframe to videoframe_t. 2015-03-04 14:01:15 +02:00
Ari Koivula 63e224574e Rename struct cu_info to cu_info_t. 2015-03-04 14:01:15 +02:00
Ari Koivula f6147b410a Rename struct encoder_control to encoder_control_t.
Conflicts:
	src/encoder_state-geometry.h
	src/encoderstate.h
2015-03-04 14:01:14 +02:00
Ari Koivula b14f89c88f Rename struct encoder_state to encoder_state_t. 2015-03-04 14:00:46 +02:00
SanteriS b55bfe1729 Merge branch 'master' of https://github.com/ultravideo/kvazaar 2015-02-25 18:15:35 +02:00
SanteriS bef7cae4f8 Merge branch 'master' of https://github.com/ultravideo/kvazaar 2015-02-25 15:29:11 +02:00
SanteriS f478732b4c tz search bugfix 2015-02-25 15:28:45 +02:00
Ari Koivula d7383ccb25 Change license to LGPL.
- Everyone who has contributed code to the project has been asked to license
  their contributions under LPGL and they have agreed.

- COPYING file changed to say LGPLv2.1 instead of GPLv2.

- GPL changed to LGPL in the header of every single file that a header and
  header added to the few that were missing one.

- Also.. Happy new year!
2015-02-25 15:19:05 +02:00
Ari Koivula 3e58e03b56 Select motion compensation search starting point from among merge candidates.
- Greatly reduces bdrate for most sequences.
2015-02-25 12:58:15 +02:00
SanteriS 2f68cf3847 (TZ search) Fixed missing check for owf mode. Added 6 point hexagon search pattern. 2015-02-23 16:59:48 +02:00
Ari Koivula c979db7e95 Avoid sorting intra modes unnecessarily. 2015-02-19 16:25:45 +02:00
Ari Koivula 1c2129fdcb Improve sort_modes.
- When encoding with fast enough settings this function can use up to 5%
  of the cpu time, so I tried to optimize it a little bit.
2015-02-19 16:25:38 +02:00
Ari Koivula 5fa6438b25 Clean up calls to memset.
- Replaces all calls to memset with new FILL and FILL_ARRAY macros. The use
  of memset was inconsistent and we never use it for anything complicated.
2015-02-19 16:25:28 +02:00
SanteriS 1a4d30d15a fixed step 1 of TZ algorithm 2015-02-11 18:51:21 +02:00
SanteriS ce4c251cd1 Merge branch 'master' of https://github.com/ultravideo/kvazaar 2015-02-09 17:29:49 +02:00
Ari Lemmetti 7846cf3093 Merge branch 'faster_interpolation' 2015-02-05 13:29:43 +02:00
SanteriS 50dd59eb21 Added different search patterns for TZ search. 2015-02-02 19:14:45 +02:00
SanteriS 4b3d77aaf2 Enable tz search. 2015-01-21 12:55:00 +02:00
Ari Koivula f86def8ed8 Remove unused variables. 2015-01-20 17:50:19 +02:00
Ari Koivula 81ad583e08 Use the same coeff cost calculation for all rd modes.
- It's not worth it to have these faster approximations for coefficient cost.
2015-01-20 17:34:59 +02:00
Ari Koivula 870171e6ad Fix --rd=0 actually work. 2015-01-20 17:34:59 +02:00
Ari Lemmetti 0e56d13b5d Use smaller bit depth for fractional pixel interpolation 2015-01-15 15:00:09 +02:00
Ari Lemmetti cc061b4c3d Added ipol strategy for interpolation filters.
Added initial files for AVX2 and generic strategies.
2015-01-15 14:59:37 +02:00
Ari Koivula ab3364afb4 Add skipping of intra search in inter frames for rd=0. 2015-01-15 11:54:35 +02:00
Ari Lemmetti cad5f14372 Fixed compile errors (-Werror) 2015-01-14 18:27:35 +02:00
SanteriS 126569c737 Added first version of TZ search algorithm. 2015-01-14 14:54:09 +02:00
Ari Koivula 01195aecbb Move cu split model to a function. 2015-01-14 11:16:34 +02:00
Ari Koivula 8c89dcfc50 Move mode bit calculation to a function. 2015-01-14 10:44:52 +02:00
Ari Koivula fc79c2103e Generalize the fast intra-mode tryout code to work for any depth. 2015-01-12 11:47:21 +02:00
Ari Koivula f1364d297b Fix bug resulting in incorrect bitstream.
- If 64x64 intra PUs were enabled and --rd was less than 2, no intra mode
  search was performed for depth 0 resulting in incorrect bitstream.
2015-01-12 11:16:33 +02:00
Ari Koivula f4bd322804 Add command line options for prediction unit depth. 2015-01-12 10:40:34 +02:00
Ari Koivula edf2681ea4 Comment functions in search.c. 2015-01-07 14:56:14 +02:00
Ari Koivula 374012ab26 Merge branch 'intraskip' 2014-12-01 17:30:03 +02:00
Ari Koivula 21d221c075 Add fast 64x64 intra test.
- If intra search is not enabled for a depth, try the result from the
  top left CU of the next depth. This seems to give most of the benefit
  of at least 64x64 intra prediction units without costing very much
  in performance.
2014-11-20 17:20:24 +02:00
Ari Lemmetti 4874f2662f Added --subme commandline parameter for fractional pixel motion estimation: 1 == enable (default), 0 == disable. 2014-11-20 14:59:04 +02:00
Ari Lemmetti d5d2e04995 Merge branch 'fme' 2014-11-19 16:40:22 +02:00
Ari Koivula f6fead6221 Fix crash on inter frames.
- If the bitcost was 0 it would underflow for skip mode. The bitcost is now
  checked before decrementing.
2014-10-21 18:11:39 +03:00
Ari Koivula dfc67b766a Disable rd1 chroma search.
- The bdrate improvement isn't really worth the time it takes, so enable it
  only for rd3 untill it can be made faster or better.
2014-10-16 13:59:20 +03:00
Ari Koivula e9b8d9b889 Fix gcc warnings.
- Remove unused variables.
- Change intra prediction functions to take their inputs as const pointers.
- Change intra_get_pred to take two pointers instead of an array of pointers,
  because the warnings got just too exotic.
2014-10-16 13:17:46 +03:00
Ari Koivula 4bac52d9b6 Merge branch 'intra' 2014-10-16 13:11:23 +03:00
Ari Koivula 02ec26fcea Try different number of chroma intra modes for different depths.
- And avoid doing extra work if no extra modes are tested for certain depths.
2014-10-16 12:21:36 +03:00
Ari Koivula 3cf5e422e8 Make fast chroma mode search select modes for slower chroma search. 2014-10-16 12:21:36 +03:00
Ari Koivula d12dbd4aa0 Add fast intra chroma mode search. 2014-10-16 12:21:08 +03:00
Ari Koivula 3e6023dfb5 Rename search constants and set sane defaults. 2014-10-16 03:08:11 +03:00
Ari Koivula 8a407b0313 Estimate luma and chroma intra mode bits separately.
- Remove cu_info.intra[].cost and bitcost as unnecessary.
- Add luma_mode_bits to complement chroma_mode_bits and remove
  intra_pred_ratecost as unneccessary. Difference is that intra_pred_ratecost
  was more coarse and included chroma mode with the assumption that it would
  be the same as chroma.
2014-10-16 03:08:11 +03:00
Ari Koivula c9e212ba92 Add intra chroma mode search.
- Based on full chroma reconstruction so enabled only for --rd=2.
2014-10-16 03:07:50 +03:00
Ari Koivula a469c059a5 Take chroma tr-skip bits into account. 2014-10-13 10:48:39 +03:00
Ari Koivula 7a5cf5d865 Add trskip mode cost to fast trskip mode decision. 2014-10-13 10:45:41 +03:00
Ari Koivula f164a5ba79 Add fast transform skip estimation to rough intra search. 2014-10-13 10:42:24 +03:00
Ari Koivula 28d1532578 Make rd=1 use cabac for coeff cost estimation. 2014-10-08 12:50:03 +03:00
Ari Koivula cbb2aa75b7 Add macros for adjusting weight of distortion between luma and chroma.
- Everything needs to have a short name because windows has a maximum path
  length limitation that is breaking my testing framework.
2014-10-08 10:31:54 +03:00
Ari Koivula 49ad845c33 Add cabac bits for part_mode. 2014-10-08 10:31:54 +03:00
Ari Koivula b6710e7893 Add cabac bits for cu split flag. 2014-10-08 10:31:54 +03:00
Ari Koivula 38b224cf69 Change rest of cu split search costs to double. 2014-10-08 10:31:54 +03:00
Ari Koivula 17473624d3 Add transform tree bit costs for cbf_luma. 2014-10-08 10:31:54 +03:00
Ari Koivula 3b04d39db4 Take cabac bits into account on transform tree. 2014-10-08 10:31:54 +03:00
Ari Koivula 296f142d9e Retain coded block flag data during transform split search. 2014-10-08 10:31:54 +03:00
Ari Koivula 85dea10f3f Clean up transform split search.
- Remove unnecessary checks and comment.
2014-10-08 10:31:54 +03:00
Ari Koivula e1b801eb6f Add transform tree chroma cbf bits. 2014-10-08 10:31:23 +03:00
Ari Koivula 3868cc7ff1 Fix crash on inter search when --tr-depth-intra is used.
- Transform splits meant for intra modes were used for inter when inter mode
  was chosen, which caused an assert to be triggered if the split transform
  block didn't have any coefficients.
2014-10-03 19:29:06 +03:00
Ari Koivula 8a80845b91 Add chroma to transform split search. 2014-10-03 11:36:57 +03:00
Ari Koivula 51662e1081 Fix differences between cu_rd_cost_luma and rdo_cost_intra. 2014-10-03 11:36:57 +03:00
Ari Koivula bc7d7d5cb6 Add cu_info* as parameter to reconstruction functions.
- This is required so these functions can be used for searching. When NULL
  is given they take the CU from LCU struct as they did previously.

Conflicts:
	src/search.c
2014-10-03 11:36:56 +03:00
Ari Koivula ccc575e2c6 Disable transform tree bits. 2014-10-03 11:36:56 +03:00