Ari Koivula
6952f0fcc6
Refactor interlaced reading
...
Doesn't change the way it works. Just rearranges things so it's easier
to see what is going on.
2016-01-26 13:42:41 +02:00
Ari Koivula
a46351efe1
Fix out of bounds error in interlacing
...
When field height was padded to a multiple of 8, yuv_io_extract_field
would read outside the buffer.
2016-01-26 13:41:52 +02:00
Arttu Ylä-Outinen
49677810b5
Rename config module to cfg.
...
Prevents a conflict with config.h and src/config.h so that the config.h
generated by configure is included in global.h. Fixes problems with
large input files on 32-bit systems.
2016-01-25 12:26:46 +02:00
Marko Viitanen
8e6c12b859
Merge branch 'input_reading_thread'
2016-01-25 12:00:03 +02:00
Marko Viitanen
b4a4ce848c
Use field parity for extracting correct fields from the interlaced picture
2016-01-25 10:58:12 +02:00
Marko Viitanen
441ce7728f
Fix for input_read_thread() in the case when interlaced source-scan-type is used
2016-01-25 10:57:51 +02:00
Marko Viitanen
198204a20a
Fix when using --source-scan-type=bff, offset was used for output lines
2016-01-25 10:13:51 +02:00
Ari Koivula
22b8ed43dc
Remove global.h include from kvazaar.h
...
It shouldn't have been put there as it's the lib interface.
2016-01-22 15:23:34 +02:00
Ari Koivula
249c88011e
Fix problem with >2GB input files on 32bit
2016-01-22 15:15:02 +02:00
Ari Koivula
fa1af14637
Fix includes to include global.h first everywhere
2016-01-22 15:07:49 +02:00
Ari Koivula
3bf278529c
Fix interlacing when using lib interface
...
Some flags used for interlacing were set in CLI interface, which
meant that interlacing didn't work correctly when used through
libkvazaar.
2016-01-22 14:35:20 +02:00
Marko Viitanen
0128ee26e7
Clear img_in pointer after reading it
2016-01-22 14:29:35 +02:00
Marko Viitanen
b5459c1f23
Fixed performance monitoring by adding KVZ_ prefix to GET_TIME
2016-01-22 11:27:25 +02:00
Marko Viitanen
e36237335e
Fixed memory leaks caused by the input handler thread and cleaned up the code
2016-01-22 11:27:25 +02:00
Marko Viitanen
ad9a1f6539
Input thread implementation
...
- Handle input processing in a separate thread to allow main thread more time with thread handling etc
- Significant speedup can be seen when run on ultrafast settings and on a system with great number of cores
2016-01-22 11:27:25 +02:00
Ari Koivula
5e734593c0
Add psnr argument to CLI
...
To disable calculation of PSNR for frames, printing 0.0dB instead.
2016-01-21 15:08:34 +02:00
Ari Koivula
9eba3a83cc
Add compiler flag checking to configure
2016-01-20 16:32:34 +00:00
Arttu Ylä-Outinen
d452709795
Fix compiling AVX2 strategies.
...
Option -mavx2 was omitted when compiling AVX2 strategies. This commit
moves strategies to convenience libraries so that their compilation
flags can be easily set and adds -mavx2 to CFLAGS of the AVX2 library.
2016-01-20 11:04:12 +02:00
Ari Koivula
8060e2f6ec
Delete kvazaar_version.h
...
It's not used anymore.
2016-01-19 20:40:35 +02:00
Ari Lemmetti
44656aeb19
Remove useless calculation
2016-01-19 16:35:16 +02:00
Marko Viitanen
e822c16659
Removed unneeded cpu flags causing compiling to fail on powerpc, closes #121
2016-01-18 08:55:32 +02:00
Ari Koivula
c8c0b4e8e8
Change version number for v0.8.2
2016-01-15 19:42:07 +02:00
Ari Koivula
e2402c0000
Remove kva_api_get versioning.
...
We have soname versioning now, so we should focus on getting that right
instead. This also serves as an example of correctly incrementing the
lib-version.
2016-01-15 19:39:24 +02:00
Ari Koivula
caf809f26d
Remove scons build scripts
...
Because we are not going to maintain them.
2016-01-15 17:35:35 +02:00
Ari Koivula
15e1110997
Remove reference to Makefile-old
...
Makefile-old was deleted and this reference breaks make dist.
2016-01-15 17:32:54 +02:00
Ari Lemmetti
a9decd2f40
Bump for yet another release
2016-01-14 23:23:11 +02:00
Ari Koivula
7718ac378f
Add fractional FPS support.
...
Now that we put the timing info into the bitstream, the time base must
be precisely known. Represent framerate as a fraction and add timing
info only if the old floating point framerate was not used.
Deprecate cfg->framerate so it can be removed once we get patches to
FFmpeg and libav.
Add support for (num)/(denom) format to --input-fps.
2016-01-14 22:16:53 +02:00
Ari Lemmetti
a9bd7b9e63
Bump version numbers for release v0.8.0
2016-01-14 20:38:28 +02:00
Ari Lemmetti
b605e3866e
Bye bye Makefile
2016-01-14 20:38:01 +02:00
Marko Viitanen
242edf98ad
Added calculation and writing of VUI num_units_in_tick and time_scale
2016-01-14 15:32:33 +02:00
Ari Lemmetti
daf39e348f
Add dedicated handling for blitting NxN coeffs when N is 4, 8 or 16
2016-01-13 19:27:45 +02:00
Ari Lemmetti
a2fc9920e6
Merge branch 'alternative-satd'
2016-01-13 15:00:43 +02:00
Ari Lemmetti
1ed34f2df8
Add some planar pred optimization for blocks larger than 8x8
2016-01-13 14:50:17 +02:00
Ari Lemmetti
0df88697ff
Copy generic function to AVX2 strategy
2016-01-12 23:51:18 +02:00
Ari Lemmetti
62799a9fc3
Create generic strategy of planar prediction
2016-01-12 23:50:47 +02:00
Ari Lemmetti
3cb1cebfe5
Add missing inlines
2016-01-12 23:03:31 +02:00
Ari Lemmetti
6a0b13b8b6
Remove unused functions
2016-01-12 22:55:37 +02:00
Ari Lemmetti
61155f0edd
Add 128-bit version of the functions as well
2016-01-12 22:52:00 +02:00
Ari Lemmetti
a6afb8a8f4
Small refactoring
2016-01-12 22:29:33 +02:00
Ari Lemmetti
a756f6133a
Manually unroll vertical Hadamard transform
2016-01-12 21:45:02 +02:00
Ari Lemmetti
66350aa20e
Experiment with alternative implementation of FWHT
2016-01-11 16:25:56 +02:00
Arttu Ylä-Outinen
e14858f41a
Fix build and tests.
...
- Remove non-existent file interface_main.c from library sources.
- Add file mv_cand_tests.c to test sources.
2015-12-21 16:03:55 +02:00
Arttu Ylä-Outinen
9abdee7cc3
Merge branch 'autotools'
2015-12-21 15:54:30 +02:00
Arttu Ylä-Outinen
eb6fa3d980
Fix exporting functions in library.
...
Rewrites definition of macro KVZ_PUBLIC in kvazaar.h so that
KVZ_STATIC_LIB need not be defined when building a static library.
2015-12-21 14:38:59 +02:00
darealshinji
8427a85d36
Add tests
2015-12-19 08:24:35 +01:00
Ari Koivula
1270da3626
Move files under their modules in Visual Studio
...
Also moves CLI stuff under CLI project, so they are compiled as their
own lib just like when the Makefile is used.
The file interface_main.c was an artifact from a bygone era and should have
been deleted long ago.
2015-12-17 15:39:45 +02:00
Ari Koivula
947bae24f9
Update Doxygen documentation
...
Add module information to all header files.
Update all header file documentations to briefly say what they are, and
to use the javadoc format so the brief actually gets included into the
doxygen documentation.
Remove \file from implementation files, in order to not repeat the info
from the header files.
Add files under strategies and tools to Doxygen and update the Doxygen
settings to be just plain better.
Make README be the main page of Doxygen documentation.
2015-12-17 14:05:50 +02:00
Ari Koivula
a6ea705e19
Add missing lambda to some bit costs
...
Bits were being added to rate distortion without being multiplied by
lambda in a few places. Fixing this bug also finally allows us to remove
the magic bits from the Coding Unit split decision.
I tried to find new optimum value for CU_COST and it turned out to be 2
for veryslow and 0 for superfast. The difference between 0 and 2 on
veryslow was only 0.1% however, so I don't think this parameter is
needed any longer. Before this fix the effect of removing CU_COST would
have been 0.8%.
2015-12-15 16:32:38 +02:00
Arttu Ylä-Outinen
0e33049d9e
Enable full mv search once again.
...
- Updates function search_mv_full so that it compiles and handles
non-square blocks.
- Enables compilation of search_mv_full.
- Sets full search radius to 32.
- Enables selecting full mv search with "--me full".
2015-12-15 12:26:26 +02:00
Arttu Ylä-Outinen
dbb9b0df85
Enable search for AMP blocks.
2015-12-15 11:21:46 +02:00
Arttu Ylä-Outinen
7e4f4538a4
Implement encoding AMP part modes.
...
Also adds parameter --amp for enabling AMP blocks.
2015-12-15 11:21:45 +02:00
Arttu Ylä-Outinen
c3716f7803
Add --smp option for enabling SMP blocks.
2015-12-15 11:21:45 +02:00
Arttu Ylä-Outinen
38b881c36f
Implement search_frac for rectangular blocks.
...
Replaces parameter depth of function search_frac with parameters width
and height.
2015-12-15 11:21:45 +02:00
Arttu Ylä-Outinen
864c77f6eb
Use kvz_satd_any_size in inter search.
...
Changes search_frac and kvz_search_cu_iter to use kvz_satd_any_size for
computing the SATDs instead of getting the SATD function with
kvz_pixels_get_satd_func.
2015-12-15 11:21:45 +02:00
Arttu Ylä-Outinen
056fa09ba5
Add arbitrary-sized SATD functions.
...
Adds strategy satd_any_size for generic and AVX2. The satd_any_size
functions are implemented with macro SATD_ANY_SIZE defined in
strategies-picture.h.
2015-12-15 11:21:45 +02:00
Arttu Ylä-Outinen
6bdc08b6eb
Drop unused function declaration.
...
Removes declaration of non-existent function satd_8bit_8x8_generic in
strategyselector.h.
2015-12-15 11:21:44 +02:00
Arttu Ylä-Outinen
728a6abecc
Extract macro SATD_NxN.
...
Combines definitions of macros SATD_NXN and SATD_NXN_AVX2 to macro
SATD_NxN and moves it to strategies-picture.h.
2015-12-15 11:21:44 +02:00
Arttu Ylä-Outinen
1eebfde0c5
Make tz search work with non-square blocks.
...
Replaces parameter depth with parameters width and height.
2015-12-15 11:21:44 +02:00
Arttu Ylä-Outinen
e203883f3d
Refactor kvz_filter_deblock_lcu.
...
Moves code for filtering the rightmost 4 pixels of an LCU to a separate
function filter_deblock_lcu_rightmost.
2015-12-15 11:21:44 +02:00
Arttu Ylä-Outinen
21ca74fe86
Replace deblock filter with a simple loop.
...
- Adds function is_pu_boundary.
- Moves code for filtering an edge of a single PU or TU to a new
function filter_deblock_unit.
- Replaces recursive CU tree traversal in filter_deblock_cu with
a simple loop and renames it to filter_deblock_lcu_inside.
2015-12-15 11:21:43 +02:00
Arttu Ylä-Outinen
7516fda970
Make fractional recon work with non-square blocks.
...
Adds parameter block_height to functions inter_recon_frac_luma,
inter_recon_14bit_frac_luma and inter_recon_14bit_frac_chroma so that
they can handle SMP blocks.
2015-12-15 11:21:43 +02:00
Arttu Ylä-Outinen
591a1ce6db
Turn some inter recon functions static.
...
Makes the following functions static since they are not used outside
inter.c:
- kvz_inter_recon_frac_luma
- kvz_inter_recon_14bit_frac_luma
- kvz_inter_recon_frac_chroma
- kvz_inter_recon_14bit_frac_chroma
2015-12-15 11:21:43 +02:00
Arttu Ylä-Outinen
0f531362bf
Enable Nx2N partitions.
2015-12-15 11:21:43 +02:00
Arttu Ylä-Outinen
4402e251ae
Fix kvz_get_extended_block functions.
...
The buffers allocated in functions kvz_get_extended_block_avx2 and
kvz_get_extended_block_generic were too small when the width of the
block was less than its height. Fixed to allocate correctly sized
buffers.
2015-12-15 11:21:43 +02:00
Arttu Ylä-Outinen
bdd8b1c0aa
Implement 2NxN partitions in inter search.
...
- Try using 2NxN partitions after the usual 2Nx2N.
- Adds function kvz_search_cu_smp to search_inter module.
2015-12-15 11:21:42 +02:00
Arttu Ylä-Outinen
410064e880
Split lcu_set_inter into two functions.
...
Moves code for setting the inter modes for a single PU to a new function
lcu_set_inter_pu.
2015-12-15 11:21:42 +02:00
Arttu Ylä-Outinen
3236428e4d
Make hexbs search work with non-square blocks.
...
Replaces parameter depth with parameters width and height.
2015-12-15 11:21:42 +02:00
Arttu Ylä-Outinen
31ba8d61c3
Implement fractional chroma recon for SMP blocks.
...
Adds parameter block_height to function kvz_inter_recon_frac_chroma.
2015-12-15 11:21:42 +02:00
Arttu Ylä-Outinen
0b6cef7be5
Remove unused function kvz_inter_set_block.
2015-12-15 11:21:42 +02:00
Arttu Ylä-Outinen
e63486b23f
Make lcu_set_inter work with SMP blocks.
2015-12-15 11:21:41 +02:00
Arttu Ylä-Outinen
7b99eb2970
Call recon functions correctly for SMP blocks.
...
Makes calls to kvz_inter_recon_lcu and kvz_inter_recon_lcu_bipred in
function search_cu work correctly when using SMP blocks.
2015-12-15 11:21:41 +02:00
Arttu Ylä-Outinen
dc4525c0e3
Implement inter recon for non-square blocks.
...
Adds parameter height to functions kvz_inter_recon_lcu and
kvz_inter_recon_lcu_bipred and makes them work on non-square sizes.
Fractional reconstruction functions do not handle non-square blocks yet.
2015-12-15 11:21:41 +02:00
Arttu Ylä-Outinen
f874c8614e
Add part_mode binarization table comment.
2015-12-15 11:21:41 +02:00
Arttu Ylä-Outinen
c77074a7ff
Implement encoding SMP blocks.
2015-12-15 11:21:41 +02:00
Arttu Ylä-Outinen
98707a1288
Move encoding intra CU to a separate function.
...
Moves code for encoding a single intra coding unit from function
kvz_encode_coding_tree to a new function encode_intra_coding_unit.
2015-12-15 11:21:40 +02:00
Arttu Ylä-Outinen
c336674da3
Move encoding part mode to a separate function.
...
Moves code for encoding the part mode from function
kvz_encode_coding_tree to a new function encode_part_mode.
2015-12-15 11:21:40 +02:00
Arttu Ylä-Outinen
ac952cbb44
Move encoding inter PUs to a separate function.
...
Moves code for encoding a single inter prediction unit from function
kvz_encode_coding_tree to function encode_inter_prediction_unit.
2015-12-15 11:21:40 +02:00
Arttu Ylä-Outinen
5ee9f164e8
Add macros for getting PU location and size.
...
- Moves SIZE_* definitions to cu.h.
- Adds constant arrays kvz_part_mode_num_parts, kvz_part_mode_offsets
and kvz_part_mode_sizes for storing the number of PUs, PU offsets and
PU sizes.
- Adds macros PU_GET_X, PU_GET_Y, PU_GET_W and PU_GET_H for getting the
location and size of a PU.
2015-12-15 11:21:40 +02:00
Arttu Ylä-Outinen
a3df13fb99
Make kvz_inter_get_merge_cand work with SMP blocks.
...
- Replaces parameter depth with parameters width and height.
- Adds parameters use_a1 and use_b1 for disabling the use of merge
candidates A1 and B1.
2015-12-15 11:21:40 +02:00
Arttu Ylä-Outinen
1cd149fb97
Check merge/mv candidate types earlier.
...
Moves checks for motion vector prediction and merge candidate block
types (inter/intra) from functions kvz_inter_get_mv_cand and
kvz_inter_get_merge_cand to kvz_inter_get_spatial_merge_candidates.
2015-12-15 11:21:39 +02:00
Arttu Ylä-Outinen
969c91d7c4
Add a test for kvz_inter_get_spatial_merge_candidates.
2015-12-15 11:21:39 +02:00
Arttu Ylä-Outinen
02375bf7e5
Make kvz_inter_get_mv_cand work with SMP blocks.
...
Replaces the depth parameter of kvz_inter_get_mv_cand with parameters
width and height.
2015-12-15 11:21:39 +02:00
Ari Koivula
3a80c7de74
Further optimize coefficient coding
...
Remove the need to count the coefficients by populating the significant
coefficient group map first and finding the last coefficient from the
last group afterward. The speedup is about 2% on ultrafast.
The previous version of this patch was reverted due to a bug, which
has now been fixed.
2015-12-11 16:47:55 +02:00
Ari Lemmetti
b78460b02c
Optimize another loop
2015-12-11 11:21:43 +02:00
Ari Koivula
b32965925e
Revert "Further optimize coefficient coding"
...
This reverts commit 25462124f8
.
That commit broke the bitstream. If it's not good enough to push on Friday
night, it's probably not good enough on Monday morning either.
2015-12-07 15:12:04 +02:00
Ari Koivula
865c86fef2
Remove unused variable
2015-12-07 10:32:18 +02:00
Ari Koivula
91631a1c36
Merge branch 'coeff-optimization'
2015-12-07 10:25:46 +02:00
Ari Koivula
25462124f8
Further optimize coefficient coding
...
Remove the need to count the coefficients by populating the significant
coefficient group map first and finding the last coefficient from the
last group afterward.
2015-12-07 10:23:01 +02:00
Ari Koivula
c94707e6e8
Fix bug with OWF+FME+deblocking
...
Increases the MV safety margin of OWF from 2 to 3 when deblocking
is used and 4 when both deblocking and FME are used.
Fractional pixel motion estimation can move the vector one more pixel
down causing checksum error. This fixes that error by increasing the
OWF safety margin and changes the interface, so that different margin
can be used when FME or deblocking are not in use.
2015-12-04 15:26:56 +02:00
darealshinji
fe2ff12244
fix building with autotools
2015-12-03 22:41:24 +01:00
darealshinji
b6d3510c2e
pkg-config: move -lm to Libs.private
2015-12-03 22:39:27 +01:00
Ari Lemmetti
6fe223c4dc
Nonzero calculation magic
2015-12-03 18:29:44 +02:00
Ari Lemmetti
f2d8cd4d64
Merge branch 'intra-search-multi'
2015-12-03 17:25:52 +02:00
Ari Lemmetti
c4e1552ef6
Replace original rough intra search
2015-12-03 17:13:11 +02:00
Ari Lemmetti
ee8c2d0218
Add 4x4 dual SATD for AVX2
2015-12-03 17:13:11 +02:00
Ari Lemmetti
00736fa708
Generate larger than 8x8 dual satd functions with macro
2015-12-03 17:13:11 +02:00
Ari Lemmetti
bd3e1922cd
Add AVX2 8x8 dual hadamard transform
2015-12-03 17:13:11 +02:00
Ari Lemmetti
d575b94357
Implement generic functions for dual sad / satd
2015-12-03 17:13:11 +02:00
Ari Lemmetti
183ee53f47
Add alternative version of rough intra search.
...
Calculate two costs simultaneously to exploit larger SIMD registers.
Implementation for dual functions missing currently.
2015-12-03 17:12:38 +02:00
darealshinji
8ff28ec974
Make dynamic linking easier
2015-12-01 14:34:08 +01:00
Arttu Ylä-Outinen
21e19067fe
Extract inter search in a single ref frame.
...
Moves code for doing inter search in a single reference frame from
function kvz_search_cu_inter to a new function search_cu_inter_ref.
2015-11-18 11:16:27 +02:00
Arttu Ylä-Outinen
f9f3d5929e
Use macros for indexing cu_array in lcu_t.
...
Replaces accesses cu_array with macro calls and adds macros
LCU_GET_TOP_RIGHT_CU and CU_GET_CU.
2015-11-18 11:16:27 +02:00
Arttu Ylä-Outinen
8db8f3d523
Use macro SUB_SCU where possible.
...
Replaces expressions like (x & 0x3f) with SUB_SCU(x).
2015-11-18 11:16:26 +02:00
Arttu Ylä-Outinen
9532d79adb
Add macros for indexing cu array in lcu_t.
...
- Adds macros LCU_GET_CU and LCU_GET_CU_AT_PX to cu.h.
- Replaces accesses to the cu array of lcu_t by calls to these macros.
2015-11-18 11:16:26 +02:00
Arttu Ylä-Outinen
39302b0328
Refactor inter_clear_cu_unused.
...
Replaces duplicated code with a for loop.
2015-11-18 11:16:26 +02:00
Arttu Ylä-Outinen
33208ac9fb
Add a comment explaining the cu array in lcu_t.
2015-11-18 11:16:25 +02:00
Arttu Ylä-Outinen
e0b02599a5
Refactor filter_deblock_edge_ functions.
...
Replaces repetitive calls to kvz_filter_deblock_luma and
kvz_filter_deblock_chroma with loops in functions
filter_deblock_edge_luma and filter_deblock_edge_chroma.
2015-11-18 11:12:32 +02:00
Arttu Ylä-Outinen
43fc6ac419
Mark deblock functions static.
...
Marks the following functions static and removes them from filter.h
since they are not used outside the filter module.
- kvz_filter_deblock_luma
- kvz_filter_deblock_chroma
- kvz_filter_deblock_edge_luma
- kvz_filter_deblock_edge_chroma
- kvz_filter_deblock_cu
2015-11-18 11:12:31 +02:00
Arttu Ylä-Outinen
c93a190940
Refactor deblocking filter functions.
...
- Replace parameter depth in kvz_filter_deblock_edge_{luma,chroma} with
length.
- Move checking whether an edge needs to be filtered from functions
kvz_filter_deblock_edge_{luma,chroma} to functions
kvz_filter_deblock_{cu,lcu}.
- Use pixel coordinates instead of 8-pixel block coordinates in
kvz_filter_deblock_cu.
- Add comments.
These changes should make it easier to modify the deblocking filter to
handle SMP and AMP blocks.
2015-11-18 11:12:31 +02:00
Arttu Ylä-Outinen
863bd1c55d
Replace EDGE_ macros with an enum in filter.
...
Replaces macros EDGE_HOR and EDGE_VER with enum edge_dir.
2015-11-18 11:12:30 +02:00
Ari Koivula
b6e443f3ce
Fix bug in lp-gop parsing
...
Unnecessary mod operation resulted in 0 as the reference delta.
2015-11-16 11:58:57 +02:00
Ari Koivula
cfe834bb53
Merge branch 'lowdelay_GOP'
...
Conflicts:
README.md
2015-11-14 00:05:13 +02:00
Ari Koivula
5ae97b46c6
Remove redundant LP-GOP structures
...
These structures can now be defined with the LP-GOP syntax.
The syntax for lb is g4d3r4t1 and for ultralow it is g8d3r1t1.
2015-11-14 00:01:29 +02:00
Ari Koivula
d2de2aa6aa
Add "lp-g8d4r2t2" style GOP selection
...
This is my own syntax that I've been using when testing this feature.
It allows for defining some simple type of hierarchical GOP structures.
2015-11-14 00:01:28 +02:00
Ari Koivula
b10866cb1e
Fix SPS ref pic counts for lowdelay GOP
2015-11-13 23:11:11 +02:00
Ari Koivula
a6a713ac02
Use P-slices for lowdelay GOPs
2015-11-13 23:11:11 +02:00
Ari Koivula
0722f461c5
Fix compiling tests on mac
...
The mac version of KVZ_GET_TIME macro has many statements, which
prevented it being used inside a for loop statement. Added brackets
to all versions to prevent this issue arising in the future.
Fixes #115 .
2015-11-13 22:57:29 +02:00
Ari Koivula
93637f4683
Move macros in threads.h to KVZ_ namespace
2015-11-13 22:46:32 +02:00
Arttu Ylä-Outinen
95fb2ed9ed
Fix unexpected behavior of --deblock option.
...
Giving a single number as an argument to --deblock option would enable
deblocking and set both beta and tc to that value. This commit changes
a single number argument to be interpreted as a boolean specifying
whether to enable deblocking or not. As a result, "--deblock 0" can be
now used to disable deblocking.
This fixes deblocking being enabled in all presets.
2015-11-13 14:22:42 +02:00
Arttu Ylä-Outinen
60ad19d0c8
Fix --deblock option.
...
Fixes --deblock option so that it takes a "beta:tc" argument as
advertised in the README and command line help.
2015-11-13 14:22:42 +02:00
Arttu Ylä-Outinen
8960ce369e
Reject extra command line arguments.
...
Changes the command line program to print an error and exit instead of
silently ignoring non-option arguments.
2015-11-13 13:57:00 +02:00
Arttu Ylä-Outinen
e42f1351f9
Call config_parse through the api struct in cli.
...
Replaces a call to kvz_config_parse with api->config_parse.
2015-11-09 14:31:04 +02:00
Arttu Ylä-Outinen
87ca9e1856
Drop an unnecessary call to kvz_threadqueue_flush.
...
Removes threadqueue dependency from the command line program.
2015-11-09 14:31:04 +02:00
Arttu Ylä-Outinen
b1abe65e83
Move kvz_get_padding to encmain.
2015-11-09 14:31:03 +02:00
Arttu Ylä-Outinen
0eb1e710e6
Move PSNR computation from videoframe to encmain.
...
Moves function kvz_videoframe_compute_psnr to encmain and renames it to
compute_psnr. Removes videoframe dependency from the command line
program.
2015-11-09 13:50:43 +02:00
Arttu Ylä-Outinen
940ada4c0d
Mark AVX2 intra filter functions as static.
...
Marks functions filter_4x4_avx2, filter_16x16_avx2 and filter_NxN_avx2
static as they are not used outside strategies/avx2/intra-avx2.
2015-11-09 12:48:20 +02:00
darealshinji
f51e3847b6
Fix cross-building on Linux
2015-11-06 21:53:44 +01:00
Marko Viitanen
94bec1b444
Cleanup of mv-rdo, removed unused functions
2015-11-05 14:40:06 +02:00
Marko Viitanen
0cb57961b0
Use dynamically selected get_mvd_cost function for MV candidate selection
2015-11-05 14:31:37 +02:00
Marko Viitanen
bb4f50aded
Added mv-rdo commandline parameter and use it in presets
2015-11-05 13:59:30 +02:00
Marko Viitanen
4e7e9eefbf
Enable usage of MV RDO with a config parameter (in hexbs, tz, frac, bipred)
2015-11-05 12:24:03 +02:00
Marko Viitanen
9a535e1c56
Added missing kvz_ prefixes and fixed some warnings
2015-11-05 09:07:59 +02:00
Marko Viitanen
822c174377
Set cabac to only count bits
2015-11-05 09:07:59 +02:00
Marko Viitanen
1ed0d85020
Added a function for cabac mvd coding cost get_mvd_coding_cost_cabac()
...
Conflicts:
src/rdo.c
2015-11-05 09:07:59 +02:00
Marko Viitanen
6a2658cc74
Added calc_mvd_cost_cabac() to calculate real bits used for motion vectors
...
Conflicts:
src/rdo.h
src/search_inter.c
Conflicts:
src/rdo.c
2015-11-05 09:07:59 +02:00
Ari Lemmetti
fbd0596114
Merge branch 'avx2-pixels-blit'
2015-11-04 11:06:10 +02:00
Ari Lemmetti
57ea7d223b
Pass SIMD registers to functions as pointers to fix 32-bit compilation in visual studio
2015-11-04 10:51:26 +02:00
Ari Lemmetti
a3855652e9
Add AVX2 version with separate handling of basic blocks and strideless copy.
2015-11-04 10:07:25 +02:00
Ari Lemmetti
0816fbea2c
Create generic strategy of blit function
2015-11-04 10:07:25 +02:00
Ari Koivula
5c1ff57f9f
Add corresponding option for every "--no-X" option
...
Needed in order to turn back options turned off by presets.
2015-11-04 00:12:26 +02:00
Ari Koivula
8d9e8aad73
Fix lambda calculation to match HM
...
The lambda was not being increased for non-key frames and was different
in other ways too. The new implementation matches HM.
2015-11-03 16:49:42 +02:00
Ari Koivula
ba47b3cdb1
Make --preset accept numbers
...
Ultrafast corresponds to 0 and placebo to 9.
2015-11-03 15:46:23 +02:00
Ari Koivula
74ee2f3b27
Redefine presets and include them in README.
2015-11-03 15:26:34 +02:00
Marko Viitanen
27e743a507
Added a commandline option for using a preset
...
- Defined presets: ultrafast, superfast, veryfast, faster, fast, medium,
slow, slower, veryslow, placebo
2015-11-03 12:25:06 +02:00
Marko Viitanen
641c204277
Use lowdelay flag in GOP for not using input picture caching
...
- Reduced layers to 3 in LB
2015-11-02 12:36:41 +02:00
Marko Viitanen
9a99f7972f
New GOP structure for ultralow delay
2015-11-02 11:33:16 +02:00
Marko Viitanen
388986399f
Added a definition for low-delay B GOP structure
2015-11-02 10:53:06 +02:00
Marko Viitanen
821d5c478b
Added missing parameter to kvz_strategy_register_picture_generic()
2015-11-02 08:55:54 +02:00
Ari Lemmetti
6dce1f1e33
Update versions for a new release
2015-10-30 17:31:55 +02:00
Ari Lemmetti
d71f1b5bd0
Disable incompatible optimizations for 32-bit version
2015-10-24 15:32:27 +03:00
Ari Lemmetti
df995d85e8
Utilize AVX2 for dequantization.
2015-10-23 20:17:08 +03:00
Ari Lemmetti
cf347e33c4
Move dequant to strategies. Copy generic to AVX2 as well.
2015-10-23 19:53:50 +03:00
Ari Lemmetti
47082738aa
...and the same tricks for quantized reconstruction
2015-10-23 19:44:38 +03:00
Ari Lemmetti
7961ba80d8
Add functions for bigger block sizes to calculate more residual simultaneously and reduce memory accesses
2015-10-23 19:11:56 +03:00
Ari Lemmetti
15edd5060d
Load and store multiple elements simultaneously. Use 128-bit wide zero
...
test. *wip*
2015-10-23 17:03:16 +03:00
Ari Lemmetti
b37cca87c8
Copy generic to avx2
2015-10-23 17:03:15 +03:00
Ari Lemmetti
cad2ea9d6e
Move quantize_residual to quant strategies.
2015-10-23 17:03:15 +03:00
Ari Lemmetti
c013e58f0c
Merge branch 'avx2-faster-angular'
2015-10-23 16:54:35 +03:00
Ari Lemmetti
0c63041ba7
Add filtering functions for different block sizes. Simplify logic a bit to reduce branching. Sorry for the large commit!
2015-10-23 16:54:15 +03:00
Arttu Ylä-Outinen
f7b6365db8
Merge pull request #109 from lu-zero/master
...
version: Bump
2015-10-23 12:26:01 +03:00
Luca Barbato
7ecd9c7284
version: Bump
...
d5f3778f72
provided a new interface
2015-10-23 10:02:28 +02:00
Arttu Ylä-Outinen
1cf55f066f
Fix memory leak in encoder_headers.
...
The header data was not freed when data_out was NULL.
2015-10-23 09:55:08 +03:00
Arttu Ylä-Outinen
a1272e98f8
Prevent disabling VPS from command line.
...
Disabling VPS when using the command line encoder would result in an
invalid bitstream.
2015-10-19 11:25:29 +03:00
Arttu Ylä-Outinen
024fedff57
Disable writing VPS when vps_period is negative.
...
Turns vps_period in struct encoder_control_t into a signed value.
Negative values are interpreted as "never send parameter sets."
2015-10-19 11:25:18 +03:00
Arttu Ylä-Outinen
d5f3778f72
Add function encoder_headers to API.
...
This provides means for obtaining the VPS, SPS and PPS separately from
the rest of the bitstream.
2015-10-16 11:47:27 +03:00
Arttu Ylä-Outinen
037b72c72b
Add parameter stream to VPS, SPS and PPS encoding.
2015-10-14 14:40:45 +03:00
Arttu Ylä-Outinen
db17d33b0b
Simplify code in encoder_state-bitstream.
2015-10-14 12:37:26 +03:00
Luca Barbato
15fd8241a9
build: Replace a sed expression with a simpler awk
...
The former does not work for sure on macosx.
2015-10-10 12:42:24 +02:00
Luca Barbato
a44d24ce40
build: Drop a trailing space
2015-10-10 12:42:10 +02:00
Ari Lemmetti
5af7a42ebe
Enable AVX2 strategy. Add first version of optimizations.
2015-10-08 12:36:20 +03:00
Ari Lemmetti
f4fe3dca5e
Add AVX2 strategy. Copy generic implementation there.
2015-10-08 12:36:15 +03:00
Ari Lemmetti
54e8b346a3
Add intra strategy. Move angular prediction there.
2015-10-08 12:36:05 +03:00
Ari Lemmetti
c123b97fec
Remove option -fno-lto from strategies. LTO is no longer used anyway.
2015-10-05 19:34:56 +03:00
Ari Koivula
ff976e2afc
Arrange parameters in intra fancily
2015-10-05 06:23:14 +03:00
Ari Koivula
d83d57df1a
Fix function names in intra
...
Prefix non-static functions with kvz_intra_ and static with intra_.
2015-10-05 06:23:14 +03:00
Ari Koivula
30b4fa4247
Rename intra prediction to kvz_intra_predict
2015-10-05 06:23:14 +03:00
Ari Koivula
7280dbf429
Remove unnecessary function
...
This function used to be more complicated, but now it's so simple that
it's just obfuscating what's happening.
2015-10-05 06:23:05 +03:00
Ari Koivula
1221e4c7d2
Remove old intra prediction code.
2015-10-05 05:30:47 +03:00
Ari Koivula
23439557e6
Remove remaining usages of old intra prediction
2015-10-05 05:23:22 +03:00
Ari Koivula
ca3ba997aa
Switch to new intra pred in search_intra_chroma_rough.
2015-10-05 05:03:58 +03:00
Ari Koivula
eaff6e29d9
Switch to new intra pred in kvz_search_cu_intra
2015-10-05 04:00:42 +03:00
Ari Koivula
55d741e250
Switch to new intra pred in kvz_intra_recon_lcu_chroma
2015-10-05 04:00:42 +03:00
Ari Koivula
678a1dd1dd
Switch to new intra pred in kvz_intra_recon_lcu_luma
2015-10-05 02:29:02 +03:00
Ari Koivula
cd2f1797bf
Add reimplemented intra prediction code
...
Just along side for now to help with debugging.
The main difference with the new versions is that they take and output
width**2 blocks and two width*2+1 arrays of reference samples,
instead of the (2*width+8)**2 blocks the old ones do. This should make
the interface clearer and the memory footprint smaller.
Also commented the shit out of angular prediction, so hopefully Ari L.
will have an easier time with a SIMD implementation.
2015-10-05 02:29:02 +03:00
Ari Koivula
115756b9d7
Accept --rd=3 parameter
2015-10-05 02:28:56 +03:00
Ari Lemmetti
7a3dabf43e
Merge branch 'avx2-quant'
2015-10-02 16:31:33 +03:00
Ari Lemmetti
38106afa50
Add AVX2 version of quantization.
2015-10-02 16:18:52 +03:00
Ari Lemmetti
ef0ad292ef
Add quantization strategy.
2015-10-02 16:17:02 +03:00
Ari Koivula
41dd44f7cf
Fix warnings with -DNDEBUG
2015-10-02 15:13:07 +03:00
Ari Koivula
81f5ca76cb
Accept tile configurations with either dimension as one
2015-10-02 15:06:31 +03:00
Ari Lemmetti
989cee1b04
Add 4x4 function as well
2015-10-01 22:14:56 +03:00
Ari Lemmetti
8b57b2bb1a
Refactor SATD to inline most of the function. Replace full horizontal add with shuffle and regular packed add.
2015-10-01 21:29:25 +03:00
Ari Lemmetti
55da2a9958
Add intrinsic version of SATD for 8x8 and larger blocks
2015-10-01 19:42:22 +03:00
Ari Lemmetti
d68fc4c41e
Add header for common utilities to use with strategies.
2015-10-01 19:40:35 +03:00
Arttu Ylä-Outinen
512e5bb25f
Bump version to 0.7.0
2015-09-30 15:20:57 +03:00
Arttu Ylä-Outinen
8f404a3b6f
Add NAL unit type to frame_info.
2015-09-28 10:30:59 +03:00
Arttu Ylä-Outinen
1c898a2f4a
Prefix NAL unit type enum constants with KVZ_.
2015-09-28 10:30:58 +03:00
Arttu Ylä-Outinen
4e5c7fe6e8
Remove function kvz_encoder_compute_stats.
...
Changes main function to compute frame PSNR by calling
kvz_videoframe_compute_psnr directly with the source and reconstructed
pictures returned from encoder_encode.
2015-09-28 10:30:58 +03:00
Arttu Ylä-Outinen
efd361ee8e
Return the original picture from encoder_encode.
2015-09-28 10:30:58 +03:00
Arttu Ylä-Outinen
afd0d3eee0
Remove encoderstate dependency from cli module.
...
Changes function print_frame_info to use a kvz_frame_info struct to get
the data to be printed.
2015-09-28 10:30:58 +03:00