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
Ari Koivula
54270f271d
Fix c89 problem to allow compilation with VS2010.
2014-04-17 19:12:39 +03:00
Ari Koivula
32da12f653
Address a clang-analyzer warning about undefined behavior in filter.
...
- Analyzer didn't see that code is never called with MAX_DEPTH as it doesn't
know the properties of width, height, x and y. Following would also
silence the error:
assert(cur_pic->width > 0 && cur_pic->height > 0);
assert(cur_pic->width % 8 == 8 && cur_pic->height % 8 == 0);
assert(x > 0 && y > 0);
assert(x % 8 == 0 && y % 8 == 0);
- Related to issue #35 .
2014-04-17 18:43:08 +03:00
Laurent Fasnacht
4a9c239027
Remove g_bitdepth
2014-04-17 11:13:13 +02:00
Laurent Fasnacht
7a2b883059
Remove encoder_input width, height, height_in_lcu, and width_in_lcu
2014-04-17 11:13:12 +02:00
Laurent Fasnacht
9ac3b7bf2b
encoder->in.cur_pic --> cur_pic
2014-04-17 11:13:10 +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
b19e4f3f2d
Resolve possible uninitialized variable warnings.
...
- Working towards issue #11 .
- Neither variable was actually used as uninitialized.
2014-04-04 13:02:06 +03:00
Ari Koivula
746eaa3671
Move deblocking code to filter module.
2014-03-21 11:57:12 +02:00
Ari Koivula
4d34377c42
Clean up deblocking code a bit.
...
- Change guards to use the same method of checking for coordinate alignment.
- Move variables to reduce their scope.
2014-03-21 10:50:47 +02:00
Ari Koivula
0f492c7680
Fix deblocking of transform boundaries.
...
This fixes issues with inter. Deblocking works now.
2014-03-21 10:42:41 +02:00
Ari Koivula
c42b25054a
Modify deblocking to be done per-LCU in the encoding loop.
...
- Intra works. There is still something wrong in inter.
- Avoid horizontal deblocking of the rightmost 4 pixels in the LCU.
This is because vertical deblocking must be done for all pixels
before horizontal, but vertical deblocking can't be done for those
pixels before the next LCU is finished.
- Add separate deblocking of the rightmost pixels of the last LCU
after the LCU edge has been deblocked.
- This is a pretty ugly hack but will have to do for now.
2014-03-20 18:14:43 +02:00
Ari Koivula
47af5207c5
Remove dead code and fix white space.
2014-03-06 18:35:17 +02:00
Marko Viitanen
877e156cb8
Fixed the case where transform split is used (always on depth 0)
...
After this fix, inter coding should be working.
2014-03-06 14:52:58 +02:00
Marko Viitanen
c3e47c6a8d
Removed redundant coeff_y/u/v variables from CU
2014-03-05 17:18:03 +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
a2424d9476
Fixed deblocking filter when using multiple reference frames
2014-02-18 15:22:20 +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
Marko Viitanen
661ed343e6
Fixed deblocking filter when using intra blocks in inter slice
2013-11-13 08:46:31 +02:00
Marko Viitanen
d236d58981
Added more data to cu_info and renamed "residual" to "coeff_y/u/v" in the struct
2013-10-18 11:39:32 +03:00
Ari Koivula
202aec69f2
Change more 8-bit pixels to pixel typedef.
2013-10-15 16:02:06 +03:00
Marko Viitanen
7a53bddead
Fixed inter deblocking by setting correct CU residual info on transform split
2013-10-10 17:47:08 +03:00
Marko Viitanen
12fbc5fb4a
Fixed and simplified inter deblocking strength selection
2013-10-09 17:39:25 +03:00
Marko Viitanen
c9cf75775b
Deblocking fix: store block residual status and use it in deblocking
2013-10-09 17:39:23 +03:00
Marko Viitanen
40664c41d6
Fixed inter deblocking
2013-10-08 12:12:04 +03:00
Marko Viitanen
e3899b8174
Fixed inter chroma deblocking
2013-10-03 11:05:00 +03:00
Marko Viitanen
2d38612e9a
Inter deblocking changes, not working!
2013-10-02 18:09:22 +03:00
Ari Koivula
36fe88caef
Fix rounding errors in chrome half pel prediction.
...
The spec speaks nothing about rounding these values, but HM12 rounds the final
values. HM might be based on an old version of the spec that does all this rounding and clipping.
- Also fixes erroneous indexing when both horizontal and vertical are half pel.
2013-10-02 14:49:23 +03:00
Ari Koivula
665b369164
Fix chroma problem in inter prediction.
...
There is still a separate problem, but this fixes the visible chroma problem
with motion vectors that have reference a chroma half-pixel.
2013-10-02 10:59:34 +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
410d201e99
Fixed filter_inter_halfpel_chroma() sample rounding
2013-09-25 15:51:43 +03:00
Marko Viitanen
90239a8bbd
fixed filter_inter_halfpel_chroma() by adding offset value
2013-09-25 14:27:26 +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
Ari Koivula
4416d6ec36
Refactor: filter.c/.h full cleanup.
2013-09-19 15:29:54 +03:00
Ari Koivula
adf619f9dd
Refactor: Update file comments.
2013-09-18 18:01:20 +03:00
Marko Viitanen
df8c5a6acd
Refactor: transform.h renaming.
2013-09-18 15:14:31 +03:00
Marko Viitanen
a018567854
Refactor: picture.h renaming.
2013-09-18 14:58:46 +03:00
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
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
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
5acb280407
Change "ToDo" to "TODO".
...
Visual Studio recognized only TODO.
2013-09-09 14:22:53 +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