Commit graph

180 commits

Author SHA1 Message Date
Marko Viitanen c02e3b8e26 Fixed inter_get_mv_cand() reference picture checking 2015-03-30 15:22:56 +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 26082d5328 Zero merge candidate fix for B-frames 2015-03-20 10:33:05 +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
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
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 fe55961f84 Rename struct image to image_t. 2015-03-04 14:01:17 +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 b14f89c88f Rename struct encoder_state to encoder_state_t. 2015-03-04 14:00:46 +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 Lemmetti 7846cf3093 Merge branch 'faster_interpolation' 2015-02-05 13:29:43 +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 Lemmetti 73762062b6 Clarified comments a bit 2015-01-15 11:57:19 +02:00
Ari Lemmetti c9f310a6c2 Use pixel type instead of uint8_t 2015-01-15 11:47:00 +02:00
Ari Lemmetti d5d2e04995 Merge branch 'fme' 2014-11-19 16:40:22 +02:00
Laurent Fasnacht 87ed365053 typo fix 2014-06-11 10:29:05 +02:00
Laurent Fasnacht 27a49d287d Big refactor to use videoframe, image_list, and image instead of picture* 2014-06-10 09:19:06 +02:00
Laurent Fasnacht 2456c65822 Replace accesses to picture->cu_array with picture_get_cu and picture_get_cu_const 2014-06-05 10:41:58 +02:00
Tapio Katajisto cc92cfee18 Added few warnings to Makefile
Cleaned fme code a bit
2014-05-14 01:49:34 +00:00
Tapio Katajisto efc43c8b3a Added fractional pixel motion estimation
Added farctional mv support for inter recon

Added 1/8-pel chroma and 1/4-pel luma interpolation
2014-05-14 01:42:02 +00:00
Laurent Fasnacht 6c6adf18c7 Refactor encoder_state 2014-05-07 11:47:31 +02:00
Ari Koivula 4490e8afd6 Remove depth dimension from picture->cu_array.
- It isn't used for anything anymore.

- It was used in the past to hold information during search, but now that
  information is held in lcu_t structs.
2014-04-28 10:18:22 +03:00
Laurent Fasnacht 5e7945888a Inter-frame prediction with tiles works.
Many thanks to Jean-Hugues Recolin for the insightful comments about shifts!
2014-04-25 09:28:00 +02:00
Laurent Fasnacht 5fea5875a5 Huge refactoring
Split some parts of encoder_control into encoder_state
(idea: encoder_control is immutable)

Goal is to allow multiple substreams in the future.
2014-04-22 10:39:12 +02:00
Laurent Fasnacht 4a9c239027 Remove g_bitdepth 2014-04-17 11:13:13 +02:00
Laurent Fasnacht 78c579053a encoder_control should be const in nearly all the code 2014-04-14 10:56:06 +02:00
Ari Koivula 0074cd1a98 Add extra parenthesis to suppress compiler warnings. 2014-04-03 15:38:18 +03:00
Marko Viitanen eaf4434ae9 Removed unused parameter cur_cu from inter_get_merge_cand() 2014-03-11 09:04:17 +02:00
Ari Koivula 47af5207c5 Remove dead code and fix white space. 2014-03-06 18:35:17 +02:00
Marko Viitanen c5842e1769 More fixes to B0 mv candidate selection
After this fix, inter coding works in depth != 0
2014-03-05 12:53:35 +02:00
Marko Viitanen 91e83db3c6 Bugfix for inter_get_spatial_merge_candidates() b2 block checking
Wrong variable was used to check for x-border
2014-03-04 15:34:32 +02:00
Marko Viitanen 09d4b47395 Fixed CU array calculations in inter_get_spatial_merge_candidates() 2014-03-03 16:25:33 +02:00
Marko Viitanen 17b256b5e3 Converted inter mv candidate functions to use lcu structure
Implemented merge and mvd candidate search
Added initialization of the whole work_tree
2014-03-03 16:08:35 +02:00
Marko Viitanen 1f82239367 Implemented inter search and reconstruction with lcu structure 2014-03-03 14:51:36 +02:00
Luca Barbato 47677af690 Drop remaining unused variables 2014-02-21 15:07:16 +01:00
Luca Barbato 934a4e3b88 whitespace: Drop trailing spaces 2014-02-21 15:03:35 +01:00
Marko Viitanen 7fb03049b8 Fixed mvd candidate selection 2014-02-18 17:27:45 +02:00
Marko Viitanen 54e68378dc Fixed merge candidate selection on multiref 2014-02-18 16:59:45 +02:00
Marko Viitanen f85e0e4ad6 Fix for MV candidate derivation 2014-02-17 17:39:40 +02:00
Marko Viitanen cda60897e1 Fixed inter mv_ref propagation and merge candidate mv_ref matching 2014-02-17 11:13:12 +02:00
Marko Viitanen e6212110a1 Simplified MV scaling calculations 2014-02-17 09:58:10 +02:00
Marko Viitanen 7dee412cb0 Fixed some of the motion vector scaling problems
motion vector candidates are not yet scaled or selected correctly
2014-02-17 09:58:10 +02:00
Ari Koivula 478740cf21 Add missing new lines to ends of files. 2014-02-03 16:54:03 +02:00
Ari Koivula 5d12706510 Merge branch 'intra_NxN'
Conflicts:
	src/encoder.c

- Chroma RDOQ changes conflicted because I had moved the chroma
  quantization/dequantization to it's own function.
- Merged to master because I want my code to show up in github. =)
  All the old stuff still works, even though NxN doesn't work, so there
  is no reason not to merge anyway.
2014-01-29 17:04:41 +02:00
Ari Koivula 71a996f50f Work on reconstruction and searching.
- Set part-size for Inter.
- Change to Intra Only mode for testing.
- Many small changes here and there. Should have been separate commits probably, but too late.
- Disable SAO and deblocking to be able to see problems with reconstruction better.
2014-01-29 14:18:01 +02:00
Ari Koivula 77339efa57 Add COPYING file and add boilerplate for copyright and GPLv2 to every file. 2014-01-24 12:48:48 +02:00
Ari Koivula a38a5fd647 Improve transform tree coding.
- Clean up code and comment.
- Change terminology to match H.265 specification where possible.
- Move transform splitting for depth==0 out of the coding part. It's not
  possible to do it here anyway because intra reconstruction is different
  if the transform is split.
- Add checking for transform hierarchy depth when coding split flag.
- Fixes bug with cu_data.tr_depth being set. The CU struct was being reused
  for inter coded CUs, which did not initialize the tr_depth.
2014-01-14 18:39:24 +02:00
Marko Viitanen 2c61286326 Added missing (0,0) merge/skip candidate to search 2013-11-05 12:49:39 +02:00
Marko Viitanen ded4c18bf6 Fixed merge candidate duplicate removal and implemented skip mode selection 2013-10-25 15:39:19 +03:00
Marko Viitanen e1f0274b51 Merge mode working on blocks > 8x8 2013-10-23 15:14:26 +03:00
Marko Viitanen db266e74ff Added merge mode selection (NOT WORKING!) and a function to get candidates 2013-10-18 11:39:32 +03:00
Marko Viitanen 52335adda0 Split merge candidate derivation to its own function 2013-10-18 11:39:32 +03:00
Marko Viitanen 102c39a396 Bugfix for inter reconstruction: half-pel chroma reused variables 2013-10-09 11:03:38 +03:00
Marko Viitanen 13bbd2fb37 Fixed inter_get_mv_cand() candidate selection of B0 CU 2013-10-02 15:10:40 +03:00
Ari Koivula 681975ad4b Fix inter reconstruction for 8x8 blocks and enable 8x8 inter blocks again.
Inter reconstruction was modifying the movement in place when it shouldn't
have. This was causing issues only for the 8x8 blocks, because for larger
blocks the modified movement vector was too far away to be seen by the blocks
below it.
2013-09-30 18:01:21 +03:00
Ari Koivula 04f1dde8a1 Fix overwriting of motion vectors during search.
- Makes everything besides search to only use the bottom most layer of the
  picture.cu_array structure.
2013-09-25 16:21:51 +03:00
Marko Viitanen 7cf8b1062b minor style changes to inter_recon() 2013-09-25 14:28:00 +03:00
Marko Viitanen 3d228278ef Fixes and comments for inter_recon and filter_inter_halfpel_chroma 2013-09-25 11:01:08 +03:00
Marko Viitanen 13e058abce Fixed (some) bugs in filter_inter_halfpel_chroma and inter_recon
Optimizations for filter to only filter horizontal or vertical pixels
2013-09-24 15:43:20 +03:00
Marko Viitanen 469644dd5b Added interpolation filter for half-pel chroma, NOT WORKING 2013-09-23 18:07:16 +03:00
Ari Koivula 6dd049a238 Refactor: picture.h remaining renames. 2013-09-20 12:49:44 +03:00
Ari Koivula 8d5dd67f76 Refactor: Change name of CU_info.CU to cu_array. 2013-09-20 12:47:53 +03:00
Marko Viitanen 5264569f43 Refactor: inter.c/.h full cleanup 2013-09-19 15:08:30 +03:00
Ari Koivula adf619f9dd Refactor: Update file comments. 2013-09-18 18:01:20 +03:00
Marko Viitanen a018567854 Refactor: picture.h renaming. 2013-09-18 14:58:46 +03:00
Marko Viitanen 0bf4f65a55 Refactor: encoder.h renaming 2013-09-18 14:49:01 +03:00
Ari Koivula 44a5498e30 Reorder includes to avoid hidden dependencies.
- Includes of global.h have been moved to headers because most headers
  require stdint.h.
- Includes required by the header have been moved from the .c to the header.
- Spaces have been added between includes to distinguish classes of includes.
2013-09-18 12:29:23 +03:00
Marko Viitanen c87d3870ce Fixed inter_get_mv_cand and added new define ENABLE_TEMPORAL_MVP 2013-09-18 10:15:05 +03:00
Marko Viitanen 3ff3318980 Fixed bug(s) in inter_recon() 2013-09-16 17:15:54 +03:00
Marko Viitanen 8e776366dc Added (basic) motion vector prediction 2013-09-16 16:37:24 +03:00
Marko Viitanen beef362624 Implemented inter reconstruction inter_recon() 2013-09-12 18:50:11 +03:00
Marko Viitanen 81f584742c Added picture_init() and changed cur_pic to pointer in encoder_input struct
Also contains few inter coding changes
2013-09-12 16:28:40 +03:00
Marko Viitanen 31a8574f1b Modified search to check for inter cost 2013-09-05 15:02:53 +03:00
Marko Viitanen 06fd1d6fa9 Fix for sign bit hiding, not working yet 2013-06-12 15:41:57 +03:00
Marko Viitanen 003093b1ef Added inter.c/.h 2013-04-24 10:35:27 +03:00