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
Ari Koivula
73fdc35c4f
Try to implement 4x4 luma transform coding.
...
- Doesn't work yet so it's disabled.
- Change encode_transform_coeff to accept PU (Prediction Unit) coordinates
instead of CU coordinates because CUs are 8x8.
2014-01-09 19:30:54 +02:00
Ari Koivula
61232b466c
Move types to more appropriate places.
2013-11-12 12:44:58 +02:00
Ari Koivula
181a044b86
Merge branch 'sao'
2013-11-12 11:59:04 +02:00
Marko Viitanen
93f2b75df7
Fixed a bug in flat scaling list and disabled scaling list by default
2013-11-05 09:41:14 +02:00
Ari Koivula
a57b938270
Add new module sao.
...
- Move sao-stuff not directly related to encoding to sao-module.
- Calculate sao for all LCUs before encoding any of them. This is in
preparation to doing the reconstruction line at a time instead of
LCU at a time.
2013-11-04 19:41:01 +02:00
Ari Koivula
b6c5c87fb7
Merge branch 'master' into sao
...
SAO needs to be coded before LCU data has been searched. Searching
has already been moved to happen before encoding in the master branch.
Conflicts:
src/encoder.c
src/picture.c
src/picture.h
2013-11-04 12:44:01 +02:00
Ari Koivula
7bd0902727
Implement fast distortion estimation for sao.
...
Add function for blitting pixels from one buffer to another.
Several commits have been squashed to this one.
2013-11-04 12:37:37 +02:00
Marko Viitanen
2f53b0aa3a
Enabled sign-bit-hiding by default
2013-10-29 13:14:43 +02:00
Ari Koivula
291be9507b
Start adding Sample Adaptive Offset capability.
2013-10-25 10:39:42 +03:00
Marko Viitanen
4cec2963ac
Fixed transform splitting to allow 64x64 inter blocks
2013-10-22 12:33:11 +03:00
Marko Viitanen
c44f0ff540
Refactoring: all int16_t pixel info in intra to pixel typedef
2013-10-18 16:19:17 +03:00
Marko Viitanen
dda53f48a7
Refactoring encoder transform/quant related functions, cu_info and picture
2013-10-18 11:41:52 +03:00
Ari Koivula
202aec69f2
Change more 8-bit pixels to pixel typedef.
2013-10-15 16:02:06 +03:00
Ari Koivula
b8dd664026
Move all 8-bit pixels into new pixel typedef.
2013-10-15 14:36:30 +03:00
Marko Viitanen
1b2b3c19bb
Added option to enable residual coding skip when residual under threshold
2013-10-10 16:31:00 +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
b1ada6bcd4
Take initial motion vector from last frame.
2013-09-25 19:09:08 +03:00
Ari Koivula
a3f2e84587
Redo x64 detection to not rely on predefined macro.
2013-09-23 17:27:17 +03:00
Ari Koivula
627762dcd8
Refactor: Fix include guards.
...
- Remove _ from the beginning of include guards because that prefix is
for the implementation.
- Move include guards to the beginning of file.
- Unify the syntax.
2013-09-19 10:36:24 +03:00
Ari Koivula
adf619f9dd
Refactor: Update file comments.
2013-09-18 18:01:20 +03:00
Ari Koivula
19e9b95a71
Refactor: global.h renaming.
2013-09-18 14:51:24 +03:00
Ari Koivula
4f360fcb80
Split MAX_SEARCH_DEPTH to inter and intra versions.
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
Ari Koivula
fa0bab47f9
Fix MV search bugs.
...
- Calculate motion vector from the source instead of origo.
- Don't return without searching deeper.
2013-09-16 22:44:44 +03:00
Ari Koivula
82e2299b38
Add motion vector search.
...
- Add SAD calculation for arbitrary shape and size blocks.
2013-09-16 17:39:12 +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
Ari Koivula
2b9e2485db
Add handling of resolutions that are not multiples of the smallest block size.
...
- When resolution is not a multiple of 8, increase the size of the picture.
- Add conformance window information to the SPS NAL. Thested to work in all
dimensions with YUVplayer.
2013-09-09 20:43:14 +03:00
Marko Viitanen
e4a8aaa8eb
Added and fixed some functionality to support inter frames
2013-09-02 09:53:36 +03:00
Marko Viitanen
b3a724afb0
Added codes for inter coding
2013-08-02 16:35:30 +03:00
Marko Viitanen
06fd1d6fa9
Fix for sign bit hiding, not working yet
2013-06-12 15:41:57 +03:00
Marko Viitanen
d33304e5ec
Fixed 4x4 chroma deblocking and cleaned deblocking functions
2013-05-30 10:37:47 +03:00
Marko Viitanen
4c1e015c5f
Work on Deblocking filter
2013-05-22 17:27:15 +03:00
Marko Viitanen
fd2e25727c
Fixed transform split bug by moving intra prediction to the transform-quant loop
2013-05-21 15:57:22 +03:00
Marko Viitanen
2a70231c06
Fixed Chroma 4x4
2013-05-20 17:26:57 +03:00
Marko Viitanen
1b007efe43
Fixed bug with 8x8 split_flag coding. 4x4 chroma still produces wrong data.
2013-05-16 15:27:54 +03:00
Marko Viitanen
3942bbda51
Added short-term ref list parameters to allow HM10.0 to decode it properly
2013-05-07 10:36:04 +03:00
Marko Viitanen
8054b8ccb4
Bugfix for coeff scan order == 2 (with 8x8 CU's)
2013-04-25 16:29:44 +03:00
Marko Viitanen
ae506ceaf5
Moved all the intra-search functionalities to search-tree, does not work completely.
2013-04-17 17:08:52 +03:00
Marko Viitanen
a737e8660c
New search.c/.h files and changed department name on all files
2013-04-16 11:23:03 +03:00
Marko Viitanen
560917a532
Fixed 8x8 luma encoding and some of 4x4 chroma by disabling modes using different scanning order and changing 4x4 DST to DCT in chroma
2013-04-09 15:59:12 +03:00
Marko Viitanen
05bbd4daee
Added support for 16x16 luma coeff coding and disabled PCM
2013-03-20 17:27:47 +02:00
Marko Viitanen
57f892f1d8
encode_CoeffNxN() taken into use and moved the functionality there
2013-03-11 12:06:08 +02:00
Marko Viitanen
f8b1be2388
Fixed scaling list, coding of zero-coeff blocks and intra-DC-prediction
2013-03-09 01:49:42 +02:00
Marko Viitanen
a34ba7389b
Fixed intra luma/chroma predictors to work as they should in all cases
2013-03-08 11:42:22 +02:00
Marko Viitanen
10fe0f8018
Added new function to free/clear pointers and added new types of SLICE_TRAIL_N NAL units to get multiple I-pictures in the stream.
2013-02-21 16:45:22 +02:00
Marko Viitanen
3b5e40e7af
Added encode_CoeffNxN code and transform functions
...
Modified contexts
2013-02-05 15:48:06 +02:00
Marko Viitanen
6b9f5a7282
Added border detection to allow input width and height to be divisible by minimum CU size instead of max.
2012-08-15 15:23:44 +03:00
Marko Viitanen
bf11aad827
Cleaned up and fixed split_flag reading and writing to the CU_info array
2012-06-11 15:39:18 +03:00
Marko Viitanen
ee3a2744ef
Encoding of IPCM sequences working (only for input sequence with width and height divisible with 64)
2012-06-11 15:26:32 +03:00