Marko Viitanen
945e6c9c0e
Merge branch 'refactoring' of Z:/Work/HEVC_encoder into refactoring
2013-09-18 14:49:36 +03:00
Marko Viitanen
0bf4f65a55
Refactor: encoder.h renaming
2013-09-18 14:49:01 +03:00
Ari Koivula
81e4e05b42
Refactor: filter.h renaming.
2013-09-18 14:46:55 +03:00
Ari Koivula
1ed509b74e
Refactor: debug.h renaming.
2013-09-18 14:42:05 +03:00
Marko Viitanen
0a6c38a8e9
Refactor: context.h renaming
2013-09-18 14:33:47 +03:00
Marko Viitanen
a1621bf900
Refactor: bitstream.h/.c renaming
2013-09-18 14:11:23 +03:00
Ari Koivula
81cb6264ab
Refactor: cabac.h renaming.
2013-09-18 14:06:45 +03:00
Ari Koivula
4f360fcb80
Split MAX_SEARCH_DEPTH to inter and intra versions.
2013-09-18 12:29:23 +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
Ari Koivula
03f6bddfb0
Add visualization of CU blocks for mode searching.
...
This is for debugging the inter movement vector search.
2013-09-18 12:29:23 +03:00
Ari Koivula
16edf834f6
Add debug module and add CU visualization to the debug module.
2013-09-18 12:29:22 +03:00
Ari Koivula
e657482a9e
Add a missing include to a header.
...
- Remove unnecessary unrelated forward declaration.
2013-09-18 12:29:22 +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
48581bdad8
Add temporary mechanism to force use of prediction units.
2013-09-16 23:00:38 +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
48c2dc4cd9
Merge remote-tracking branch 'remotes/origin/fador'
2013-09-16 17:49:00 +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
3ff3318980
Fixed bug(s) in inter_recon()
2013-09-16 17:15:54 +03:00
Marko Viitanen
6a4011a90a
Added motion vector candidate selector
2013-09-16 16:51:13 +03:00
Marko Viitanen
8e776366dc
Added (basic) motion vector prediction
2013-09-16 16:37:24 +03:00
Ari Koivula
2533b3bcb7
Add comments to CU_info_inter.
2013-09-16 14:42:05 +03:00
Marko Viitanen
182381a23c
Merge branch 'fador' of Z:/Work/HEVC_encoder
...
Conflicts:
src/encoder.c
2013-09-12 19:15:05 +03:00
Marko Viitanen
beef362624
Implemented inter reconstruction inter_recon()
2013-09-12 18:50:11 +03:00
Marko Viitanen
10485ab51a
One reference picture is now kept on encoder->ref list
2013-09-12 17:38:08 +03:00
Marko Viitanen
cb8c0ebd99
Fixed 2 warning on unsigned/signed compare
2013-09-12 17:28:28 +03:00
Marko Viitanen
4421827d59
Fixed picture_destruct to free all allocated memory
2013-09-12 17:26:27 +03:00
Marko Viitanen
7cd7afe8a2
Added picture_list_rem and picture_list_add functions
2013-09-12 17:15:14 +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
8d44f29d89
Fixed temporal_id to be always zero
2013-09-12 15:45:42 +03:00
Marko Viitanen
b7c074f8c3
Fixed temporal_id to be always zero
2013-09-12 15:26:03 +03:00
Ari Koivula
7da00bc51a
Merge branch 'funny-sizes'
2013-09-11 20:10:28 +03:00
Ari Koivula
116d5b14be
Fix handling of non factor of 8 resolution.
...
- Reimplement bit filling routines to copy bits form the edge, instead of
using a constant.
- Add real_width and real_height to encoder_input and store the actual input
resolution in them instead of in encoder_input.width and height. This fixed
a crash. It's also clearer.
- Correctly scale conf_win offsets to be in terms of chroma.
2013-09-11 20:02:38 +03:00
Marko Viitanen
6ede4c60df
Merge branch 'master' of Z:/Work/HEVC_encoder into fador
...
Conflicts:
src/context.c
src/search.c
2013-09-11 14:38:23 +03:00
Marko Viitanen
1763eb22cb
Fixed search_best_mode() to select inter blocks
2013-09-11 14:32:20 +03:00
Ari Koivula
7cd57087da
Fix string constant.
2013-09-11 00:31:13 +03:00
Ari Koivula
850e8b2586
Add filling out the blanks for reading non multiple of 8 resolutions.
2013-09-09 22:19:16 +03:00
Ari Koivula
2426a4bc1f
Move file reading to encoder module.
2013-09-09 21:19:49 +03:00
Ari Koivula
be98d8fef1
Clarify some comments.
2013-09-09 20:44:21 +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
d6e51374e3
Added new context for root cbf, fixed a bug in MVD coding
2013-09-09 17:37:49 +03:00
Ari Koivula
28ce121f32
Improve code style for search_best_mode before analyzing.
2013-09-09 14:39:01 +03:00
Ari Koivula
5acb280407
Change "ToDo" to "TODO".
...
Visual Studio recognized only TODO.
2013-09-09 14:22:53 +03:00
Ari Koivula
96cfc84dd8
Fix compiler warnings.
2013-09-09 14:09:08 +03:00
Marko Viitanen
dce892dce8
Merge branch 'master' of Z:/Work/HEVC_encoder into fador
...
Conflicts:
.gitignore
2013-09-09 12:11:09 +03:00
Ari Koivula
2b94b9db4c
Rename NAL type names to the ones used in the standard.
2013-09-09 11:04:09 +03:00
Ari Koivula
17fa5af4be
Add remaining NAL unit type codes.
...
- Fix incorrect type code for NAL_IDR_N_LP.
- Unused reserved type codes have been left out.
2013-09-09 10:58:21 +03:00
Ari Koivula
2b4f98e83d
Add checksum SEI packages to the bit-stream.
2013-09-06 16:36:28 +03:00
Marko Viitanen
0f4a720206
Changed parameter from cabac_ctx** to cabac_ctx* in cabac_writeUnaryMaxSymbol()
2013-09-05 15:04:16 +03:00
Marko Viitanen
31a8574f1b
Modified search to check for inter cost
2013-09-05 15:02:53 +03:00
Marko Viitanen
0af55b8676
P-Slice testing, outputs P-slice as the second output slice
2013-09-04 17:47:54 +03:00
Marko Viitanen
cb2eecf002
Defined more NAL typed and added better checking for NAL type in slice_header
2013-09-03 17:55:36 +03:00
Marko Viitanen
764cf60971
Changed output slices to TRAIL_R (0x01) from TRAIL_N (0x00)
2013-09-03 17:22:54 +03:00
Ari Koivula
fbd884cb9a
Remove unused variables.
2013-09-03 15:14:15 +03:00
Marko Viitanen
9125244338
Fix for cabac_flush, fixes decoding on HM11+
2013-09-03 11:42:17 +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
d32f06b4e6
Fixed chroma QP scaling on filtering, this version produces bit-perfect output
2013-06-03 14:22:50 +03:00
Marko Viitanen
b6daafecef
Fixed deblocking and more variable name cleaning
2013-05-31 09:57:10 +03:00
Marko Viitanen
d33304e5ec
Fixed 4x4 chroma deblocking and cleaned deblocking functions
2013-05-30 10:37:47 +03:00
Marko Viitanen
1d7d411709
Added chroma deblocking, bugs with 4x4 blocks
2013-05-29 14:50:03 +03:00
Marko Viitanen
5be68846c3
Deblocking filter fixes and structural changes
2013-05-29 12:13: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
8afb5086c9
Changed scaling list derivation to support inter coding
2013-05-21 10:14:12 +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
9011478dba
New contexts and other inter code
2013-04-24 16:49:47 +03:00
Marko Viitanen
003093b1ef
Added inter.c/.h
2013-04-24 10:35:27 +03:00
Marko Viitanen
3f009e6421
Added skipflag and predflag coding when not in I-slice
2013-04-19 10:56:40 +03:00
Marko Viitanen
e8f04b32f1
Bug fixes, this version produces bit-perfect output
2013-04-18 14:37:56 +03:00
Marko Viitanen
58ba4b306c
Fixes for search-tree, almost working, some visible errors
2013-04-18 14:04:15 +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
2aa465ab40
Added basic draft of the search functionality
2013-04-16 15:10:43 +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
01c7f267d7
Added CPUID fetch assembly functions (x86 and x64)
2013-04-10 16:55:31 +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
f85db78fe2
Fixed PSNR calculation
2013-04-05 16:27:18 +03:00
Marko Viitanen
9888eaf9a4
Added and fixed x64 build
2013-04-05 14:55:58 +03:00
Marko Viitanen
d5ab9f0437
Fixed partsize context model initialization
2013-04-04 15:08:28 +03:00
Marko Viitanen
a059965855
Fixed DC-prediction (filtering)
2013-04-03 13:56:07 +03:00
Marko Viitanen
d0be802ced
Added filter.c/.h and deblocking functions
2013-04-03 11:05:07 +03:00
Marko Viitanen
d61f3a9d1b
Added transform_info-struct to help with transform data passing to functions
2013-04-02 14:50:09 +03:00
Marko Viitanen
4c47639fe5
Transform split fixes, not working yet.
2013-03-26 16:53:07 +02:00
Marko Viitanen
55cc82925d
Code refactoring to allow transform split (and 64x64 prediction with 32x32 transform)
2013-03-25 17:17:24 +02:00
Marko Viitanen
43122a1f0a
Splitted transform tree to a function
2013-03-25 12:48:19 +02:00
Marko Viitanen
902ffb6a67
Cleanup and added 4x4 transform codes
2013-03-22 16:36:35 +02:00
Marko Viitanen
78894b05d1
Fixed dequantization and made preparations for smaller blocks. This version produces bit-perfect output.
2013-03-21 17:12:55 +02:00
Marko Viitanen
fa4c4acbe5
Fixed transform subdiv context derivation and changed block-allocations to use LCU_WIDTH
2013-03-21 11:56:19 +02:00
Marko Viitanen
05bbd4daee
Added support for 16x16 luma coeff coding and disabled PCM
2013-03-20 17:27:47 +02:00
Marko Viitanen
ff5652609e
Fixed intra filtering process for future use-cases
2013-03-19 17:12:43 +02:00
Marko Viitanen
73d6ed2ff3
Fixed all warnings and removed debugging codes
2013-03-19 16:23:33 +02:00
Marko Viitanen
08cc0e97ab
Intra angular fixed, intra filtering. This version produces bit-perfect output.
2013-03-19 15:45:50 +02:00
Marko Viitanen
83b904e34d
Clearing prediction data after picture is coded and fixed planar prediction
2013-03-15 10:30:42 +02:00
Marko Viitanen
4da3b51025
Added reference block builder and verified DC-prediction bit-perfect output, fixed SAD calculations
2013-03-14 17:55:06 +02:00
Marko Viitanen
b2ec80008e
Added intra predictions and changed the overall codeflow a bit. This version produces bit-perfect output.
2013-03-13 15:56:43 +02:00
Marko Viitanen
725101b447
Added intra planar prediction and more work in intra predictions
...
Added PSNR calculation for each picture
2013-03-12 17:06:21 +02:00
Marko Viitanen
77945183dc
Fixed scaling list usage, now using default scaling list
2013-03-11 17:15:11 +02:00
Marko Viitanen
892a31eeaf
Added chroma compression
2013-03-11 16:26:09 +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
3a53654cf4
Added intra prediction, image reconstruction and iTr and iQ. Fixed a bug with negative SE values
2013-03-07 17:42:00 +02:00
Marko Viitanen
85742f9b75
Fixed context initialization and intra residual coding
2013-03-05 17:09:01 +02:00
Marko Viitanen
01730fdcaa
Started debugging codeCoeffNxN, inserter dummy coeff block to match HM
2013-03-01 17:47:22 +02:00
Marko Viitanen
cecbd1585b
Added predInfo coding comments and a template for future use
2013-02-28 17:31:14 +02:00
Marko Viitanen
eba43088b2
Intra testing
2013-02-24 16:03:40 +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
26a2c71e3a
HM10.0 compatible PCM-I coding
2013-02-13 14:46:26 +02:00
Marko Viitanen
a7855f8103
Updated bitstream headers to HM10.0
2013-02-06 16:31:01 +02:00
Marko Viitanen
3b5e40e7af
Added encode_CoeffNxN code and transform functions
...
Modified contexts
2013-02-05 15:48:06 +02:00
Marko Viitanen
43354b412b
Added new function init_tables() and new global tables
2012-08-15 17:18:58 +03: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
14fed8bac7
Separated context related functions and arrays to context.h/.c
2012-08-15 13:22:31 +03:00
Marko Viitanen
d5d0846e92
HM 8.0 PCM-I compatibility
2012-08-14 11:02:08 +03:00
Marko Viitanen
4302c928a4
HM 7.0 to HM 8.0 changes
2012-08-10 11:59:05 +03:00
Marko Viitanen
b0916abfbc
coeff_abs_level_greater1_flag coding fixes
2012-06-15 14:54:57 +03:00
Marko Viitanen
b260108f99
Moved coding of lastSignificantXY to a function
2012-06-14 13:09:34 +03:00
Marko Viitanen
2e3c313932
More work on coeff coding
2012-06-13 18:08:15 +03:00
Marko Viitanen
982170382b
Added LastSignificantXY encoding
2012-06-13 15:15:07 +03:00
Marko Viitanen
53f8d9f83a
Context model bugfix
2012-06-12 17:41:03 +03:00
Marko Viitanen
620541a7fc
More context models and work on the intra coding
2012-06-12 17:35:45 +03:00
Marko Viitanen
9bfd542b73
Started digging into the intra prediction stuff
2012-06-11 18:43:29 +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
Marko Viitanen
e7cc5f8990
Coding of first LCU line in IPCM almost working.
2012-06-08 16:55:24 +03:00
Marko Viitanen
c40170ee90
1st LCU working in IPCM mode
2012-06-08 15:36:56 +03:00
Marko Viitanen
84af7eddac
BugFix: CABAC requires aligned byte, added align after slice_header.
2012-06-08 15:26:07 +03:00
Marko Viitanen
925f4020cd
Fixed some CABAC bugs and more work on coding tree
2012-06-07 17:38:28 +03:00
Marko Viitanen
953c04d896
More work on the slice encoding, trying to send some dummy data
2012-06-06 16:20:29 +03:00
Marko Viitanen
e3e54ea06c
Added slice_header encoding function with dummy data
2012-06-06 14:09:28 +03:00
Marko Viitanen
38cd4bd429
Bitstream fixes to enable HM7.0 combatibility
2012-06-06 13:42:02 +03:00
Marko Viitanen
aaa6f59cef
Endianness fix (not depending on the host endianness)
2012-06-06 11:59:02 +03:00
Marko Viitanen
e202eb2f91
byte-order fix
2012-06-05 17:45:17 +03:00
Marko Viitanen
a56a1c9aa6
NAL writing and dummy SPS/PPS generation
2012-06-05 15:38:54 +03:00
Marko Viitanen
ef5d210b18
More bitstream functions and better initialization
...
+ picture.c/.h
2012-06-05 14:01:47 +03:00
Marko Viitanen
92ebb2cd6d
CABAC tables and functions
2012-06-04 13:47:12 +03:00
Marko Viitanen
5dcbe3e8df
Data structure initialization functions
2012-06-04 11:53:48 +03:00
Marko Viitanen
8507aa0c9a
Added some encoder control structures
2012-06-01 15:31:06 +03:00
Marko Viitanen
bbe03211e1
Added bitstream functions
2012-05-30 15:37:42 +03:00
Marko Viitanen
ef9784c107
Added VS2010 project files and fixed compilation
2012-05-30 15:26:39 +03:00
Marko Viitanen
adce16c03f
Initial commit with working config functions
2012-05-30 15:10:23 +03:00