Ari Lemmetti
c82adae0c4
Use four tap functions in octpel chroma interpolation
2015-02-04 18:23:57 +02:00
Ari Lemmetti
2f11caeb73
Added generic four tap functions. Use them in halfpel chroma interpolation.
2015-02-04 17:50:12 +02:00
Ari Lemmetti
ff456c120a
Enabled link time optimizations. Disabled default rules.
2015-02-04 15:19:47 +02:00
SanteriS
50dd59eb21
Added different search patterns for TZ search.
2015-02-02 19:14:45 +02:00
Ari Lemmetti
041d970ece
Apply fast clipping also to chroma filtering.
2015-01-29 16:19:04 +02:00
Ari Koivula
ff721bab81
Fix possible non-determinism with owf.
...
- Triggers when owf is on, sao is off and deblocking is on.
2015-01-26 16:02:31 +02:00
Ari Koivula
f01cbbb5ca
Add --no-signhide parameter.
2015-01-24 21:29:37 +02:00
Ari Koivula
5f24c6b73d
Make normal dequant use runtime sign-hiding configuration.
2015-01-24 21:29:25 +02:00
Ari Koivula
1ccb3bd324
Move sign hiding stuff in rdoq to its own function.
...
- There is some stuff from sign hiding left intermingled with rdoq code,
but I don't want to change the code too before testing that I didn't
break anything.
2015-01-24 21:27:20 +02:00
Ari Koivula
804a3b648b
Clean up quantization sign hiding.
...
- To allow for later configuration at runtime.
2015-01-23 16:03:59 +02:00
Ari Koivula
c940ccb549
Fix gcc error.
...
encmain.c:433:13: error: format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘uint64_t’
2015-01-23 15:50:14 +02:00
Ari Koivula
5d16fa6c4f
Add VPS every intra frame.
...
- Just rdo=0 for now. Later this can be extended to be configured separately.
2015-01-22 13:13:23 +02:00
Ari Koivula
d685ee86d6
Record total bitstream length correctly when using stdout.
...
- If the output is not a file, we can't check the size of the file.
2015-01-22 12:29:06 +02:00
Ari Koivula
1b19afc706
Flush output buffer after every frame.
2015-01-22 12:29:06 +02:00
Ari Lemmetti
b4aab06073
Added new files in Makefile.
2015-01-21 18:38:09 +02:00
Ari Lemmetti
c21351cc12
Added fast clipping function for clamping values to bit depth.
2015-01-21 17:53:06 +02:00
SanteriS
4b3d77aaf2
Enable tz search.
2015-01-21 12:55:00 +02:00
Ari Koivula
f86def8ed8
Remove unused variables.
2015-01-20 17:50:19 +02:00
Ari Koivula
8ac66934c0
Clean up NAL header code.
...
- Use long start code for RADL NAL units if they are the first NAL in the
access unit.
- Ffmpeg mpegts was complaining about start codes not being present.
There wasn't anything wrong that I could find though, besides the
missing intra long start code.
2015-01-20 17:34:59 +02:00
Ari Koivula
81ad583e08
Use the same coeff cost calculation for all rd modes.
...
- It's not worth it to have these faster approximations for coefficient cost.
2015-01-20 17:34:59 +02:00
Ari Koivula
870171e6ad
Fix --rd=0 actually work.
2015-01-20 17:34:59 +02:00
Ari Lemmetti
f037ed580c
Improved data layout
2015-01-15 16:31:18 +02:00
Ari Lemmetti
4382c2f088
Added missing -1 to PIXEL_MAX macro
2015-01-15 16:14:07 +02:00
Ari Lemmetti
465f718eeb
Move value clipping away from separate loop
2015-01-15 16:14:00 +02:00
Ari Lemmetti
9d12ce21d5
Cleaned luma interpolation, added functions for 8-tap filtering.
2015-01-15 16:13:12 +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 Koivula
ab3364afb4
Add skipping of intra search in inter frames for rd=0.
2015-01-15 11:54:35 +02:00
Ari Lemmetti
c9f310a6c2
Use pixel type instead of uint8_t
2015-01-15 11:47:00 +02:00
Ari Lemmetti
cad5f14372
Fixed compile errors (-Werror)
2015-01-14 18:27:35 +02:00
SanteriS
126569c737
Added first version of TZ search algorithm.
2015-01-14 14:54:09 +02:00
Ari Koivula
660547098a
Merge branch 'intra-fast-lcu'
2015-01-14 12:03:12 +02:00
Ari Koivula
01195aecbb
Move cu split model to a function.
2015-01-14 11:16:34 +02:00
Ari Koivula
8c89dcfc50
Move mode bit calculation to a function.
2015-01-14 10:44:52 +02:00
Daniel Eneyev
27d79ffae3
workaround for GET_TIME in Mac OS
2015-01-13 17:06:55 +03:00
Ari Koivula
fc79c2103e
Generalize the fast intra-mode tryout code to work for any depth.
2015-01-12 11:47:21 +02:00
Ari Koivula
f1364d297b
Fix bug resulting in incorrect bitstream.
...
- If 64x64 intra PUs were enabled and --rd was less than 2, no intra mode
search was performed for depth 0 resulting in incorrect bitstream.
2015-01-12 11:16:33 +02:00
Ari Koivula
bbae2e8a27
Update usage and readme.
2015-01-12 10:59:28 +02:00
Ari Koivula
f4bd322804
Add command line options for prediction unit depth.
2015-01-12 10:40:34 +02:00
Ari Koivula
edf2681ea4
Comment functions in search.c.
2015-01-07 14:56:14 +02:00
Ari Koivula
8c1e0b8a7f
Tweak owf=auto.
...
- Twice the required number is too little.
2014-12-10 11:23:51 +02:00
Ari Koivula
129c8e38e0
Set owf default to auto.
2014-12-09 19:00:11 +02:00
Ari Koivula
51b5692121
Rewrite owf=auto code to be more general.
...
- Change the definition to be a bit more general. The mapping from resolution
to owf frames stays mostly the same however, but should handle weird
resolutions better.
- Move everything to config module.
- Fix handling of tiles. It had a bug where owf for tiles was always
threads * 4/3 - 1. Works as intended now.
2014-12-09 19:00:11 +02:00
Ari Koivula
374012ab26
Merge branch 'intraskip'
2014-12-01 17:30:03 +02:00
Ari Lemmetti
24492adb02
Merge branch 'fme_merge'
2014-11-21 15:08:45 +02:00
Ari Koivula
21d221c075
Add fast 64x64 intra test.
...
- If intra search is not enabled for a depth, try the result from the
top left CU of the next depth. This seems to give most of the benefit
of at least 64x64 intra prediction units without costing very much
in performance.
2014-11-20 17:20:24 +02:00
Ari Lemmetti
4874f2662f
Added --subme commandline parameter for fractional pixel motion estimation: 1 == enable (default), 0 == disable.
2014-11-20 14:59:04 +02:00
Ari Lemmetti
d5d2e04995
Merge branch 'fme'
2014-11-19 16:40:22 +02:00
Ari Koivula
3ef88dfda5
Add --owf=auto option.
...
- The optimal value for Overlapping Wave Front (OWF) depends on a bunch of
variables. Attempt to set the optimal owf value, at least for all intra.
2014-11-18 02:19:40 +02:00
Ari Lemmetti
5a946f24ea
Fixed time output formatting.
2014-11-14 16:46:41 +02:00
Ari Lemmetti
56c537e145
Build fixes for MinGW.
...
threads.h: use windows.h headers for clock stuff on MinGW
strategyselector.c: assert with strlen for MinGW support
2014-11-14 16:46:41 +02:00
Daniel Eneyev
992a98c5c4
If output name is dash - write to stdout
2014-11-13 12:45:53 +03:00
Ari Lemmetti
c46b75a0ca
Fixed mingw build error. Modified function declaration in getopt.h.
...
A macro definition adds * in front of __argc and __argv, causing
build error with mingw. Renamed them to argc and argv to prevent this.
2014-10-31 17:40:18 +02:00
Ari Lemmetti
6a12bc406d
Load greatest submodule. Fixed loop that occurred during build process.
2014-10-30 15:17:50 +02:00
Ari Lemmetti
a64aae7c53
Makefile now compiles tests. Fixed test files. Removed unused stuff.
2014-10-29 15:32:47 +02:00
Ari Koivula
50643eeaf8
Merge pull request #88 from darealshinji/patch-2
...
version.h is no longer used
2014-10-27 20:23:15 +02:00
darealshinji
81ecef17d7
version.h is no longer used
2014-10-27 18:17:26 +01:00
darealshinji
e230fb2eab
make it possible to add custom CFLAGS
2014-10-27 17:19:05 +01:00
Ari Lemmetti
e93fa54838
Added -lrt to fix undefined references to clock_gettime on some systems
2014-10-23 14:51:28 +03:00
Ari Lemmetti
eb7cecc3dd
Added .travis.yml for continuous integration. Added env variable to disable AVX2 for Travis (GCC version doesn't support it yet).
2014-10-23 14:20:07 +03:00
Ari Lemmetti
20967cfafe
Allow CC to be defined other than gcc. If not defined, use gcc as default.
2014-10-23 13:25:00 +03:00
Ari Koivula
fcb6fa6d4b
Fix compilation error on PowerPC.
...
- Need abs from stdlib.
2014-10-21 18:14:32 +03:00
Ari Koivula
f6fead6221
Fix crash on inter frames.
...
- If the bitcost was 0 it would underflow for skip mode. The bitcost is now
checked before decrementing.
2014-10-21 18:11:39 +03:00
Ari Koivula
dfc67b766a
Disable rd1 chroma search.
...
- The bdrate improvement isn't really worth the time it takes, so enable it
only for rd3 untill it can be made faster or better.
2014-10-16 13:59:20 +03:00
Ari Koivula
e9b8d9b889
Fix gcc warnings.
...
- Remove unused variables.
- Change intra prediction functions to take their inputs as const pointers.
- Change intra_get_pred to take two pointers instead of an array of pointers,
because the warnings got just too exotic.
2014-10-16 13:17:46 +03:00
Ari Koivula
4bac52d9b6
Merge branch 'intra'
2014-10-16 13:11:23 +03:00
Ari Koivula
afb9e8c3f4
Remove extra parameter sets.
2014-10-16 12:21:36 +03:00
Ari Koivula
02ec26fcea
Try different number of chroma intra modes for different depths.
...
- And avoid doing extra work if no extra modes are tested for certain depths.
2014-10-16 12:21:36 +03:00
Ari Koivula
3cf5e422e8
Make fast chroma mode search select modes for slower chroma search.
2014-10-16 12:21:36 +03:00
Ari Koivula
d12dbd4aa0
Add fast intra chroma mode search.
2014-10-16 12:21:08 +03:00
Ari Koivula
75a137c1e9
Add --cpuid parameter to disable runtime optimizations.
2014-10-16 12:01:36 +03:00
Ari Koivula
3e6023dfb5
Rename search constants and set sane defaults.
2014-10-16 03:08:11 +03:00
Ari Koivula
8a407b0313
Estimate luma and chroma intra mode bits separately.
...
- Remove cu_info.intra[].cost and bitcost as unnecessary.
- Add luma_mode_bits to complement chroma_mode_bits and remove
intra_pred_ratecost as unneccessary. Difference is that intra_pred_ratecost
was more coarse and included chroma mode with the assumption that it would
be the same as chroma.
2014-10-16 03:08:11 +03:00
Ari Koivula
c9e212ba92
Add intra chroma mode search.
...
- Based on full chroma reconstruction so enabled only for --rd=2.
2014-10-16 03:07:50 +03:00
Ari Koivula
b32867be2a
Remove -lrt from LDFLAGS.
...
- This might be required on some embedded system, but from what I can see
all the functions we use from real time extensions are included in libc
and the program seems to work fine without it.
- It doesn't exist on MingwW or Mac, so I think it's better to remove it
completely and add it later on any system that actually requires it.
- Related to #85 .
2014-10-14 11:48:57 +03:00
Ari Koivula
6f8a976b12
Give ARCH_X86_64 to yasm on Mac.
...
- Issue raised in #85 .
2014-10-14 09:47:56 +03:00
Ari Koivula
55ab08c213
Fix incorrect const qualifiers.
...
- Change input pointers to const in dct-generic, like they should have been.
- Fixes compilation error on GCC.
2014-10-13 16:57:15 +03:00
Ari Koivula
8a5b24bcbe
Remove usages of GCC __attribute__.
...
- To allow clang to compile, as it doesn't according to #58 .
- The target attributes are not needed anymore due to makefile handling
targetting now.
- The __attribute__((unused)) used for debugging. I don't know if clang
supports this attribute or not but it doesn't seem very important so
I'm removing it just in case.
2014-10-13 16:46:26 +03:00
Ari Koivula
04613bd5b3
Disable GET_TIME on Mac.
...
- This should fix the Mac version not compiling in issue #85 .
2014-10-13 16:22:11 +03:00
Ari Koivula
a469c059a5
Take chroma tr-skip bits into account.
2014-10-13 10:48:39 +03:00
Ari Koivula
7a5cf5d865
Add trskip mode cost to fast trskip mode decision.
2014-10-13 10:45:41 +03:00
Ari Koivula
f164a5ba79
Add fast transform skip estimation to rough intra search.
2014-10-13 10:42:24 +03:00
Ari Koivula
d893a489d6
Fix mingw compilation issue.
...
strategies/avx2/dct-avx2.c:334:25: error: pasting "g_dct_16" and "[" does
not give a valid preprocessing token
- The [ is not part of the token so compilation failed on mingw GCC 4.9.1.
- Fixes #86 .
2014-10-10 16:32:39 +03:00
Ari Koivula
28d1532578
Make rd=1 use cabac for coeff cost estimation.
2014-10-08 12:50:03 +03:00
Ari Koivula
cbb2aa75b7
Add macros for adjusting weight of distortion between luma and chroma.
...
- Everything needs to have a short name because windows has a maximum path
length limitation that is breaking my testing framework.
2014-10-08 10:31:54 +03:00
Ari Koivula
49ad845c33
Add cabac bits for part_mode.
2014-10-08 10:31:54 +03:00
Ari Koivula
b6710e7893
Add cabac bits for cu split flag.
2014-10-08 10:31:54 +03:00
Ari Koivula
38b224cf69
Change rest of cu split search costs to double.
2014-10-08 10:31:54 +03:00
Ari Koivula
17473624d3
Add transform tree bit costs for cbf_luma.
2014-10-08 10:31:54 +03:00
Ari Koivula
3b04d39db4
Take cabac bits into account on transform tree.
2014-10-08 10:31:54 +03:00
Ari Koivula
296f142d9e
Retain coded block flag data during transform split search.
2014-10-08 10:31:54 +03:00
Ari Koivula
85dea10f3f
Clean up transform split search.
...
- Remove unnecessary checks and comment.
2014-10-08 10:31:54 +03:00
Ari Koivula
e1b801eb6f
Add transform tree chroma cbf bits.
2014-10-08 10:31:23 +03:00
Ari Koivula
3868cc7ff1
Fix crash on inter search when --tr-depth-intra is used.
...
- Transform splits meant for intra modes were used for inter when inter mode
was chosen, which caused an assert to be triggered if the split transform
block didn't have any coefficients.
2014-10-03 19:29:06 +03:00
Ari Lemmetti
bcf12567d0
Added some comments.
2014-10-03 17:51:58 +03:00
Ari Lemmetti
fea517c2ae
Misc code cleanup
2014-10-03 17:06:09 +03:00
Ari Lemmetti
85682c3b6a
Removed unused transpose functions.
2014-10-03 11:39:31 +03:00
Ari Koivula
8a80845b91
Add chroma to transform split search.
2014-10-03 11:36:57 +03:00
Ari Koivula
51662e1081
Fix differences between cu_rd_cost_luma and rdo_cost_intra.
2014-10-03 11:36:57 +03:00
Ari Koivula
bc7d7d5cb6
Add cu_info* as parameter to reconstruction functions.
...
- This is required so these functions can be used for searching. When NULL
is given they take the CU from LCU struct as they did previously.
Conflicts:
src/search.c
2014-10-03 11:36:56 +03:00
Ari Koivula
ccc575e2c6
Disable transform tree bits.
2014-10-03 11:36:56 +03:00
Ari Koivula
a0ab469c89
Disable rdo_cost_intra.
2014-10-03 11:36:56 +03:00
Ari Koivula
c164978e21
Add FULL_CU_SPLIT_SEARCH macro for disabling cu split optimization.
2014-10-03 11:36:56 +03:00
Ari Koivula
549ac96438
Change costs to doubles to avoid rounding intermediate results.
...
- Helps with debugging.
2014-10-03 11:36:56 +03:00
Ari Koivula
e591e89ade
Add prediction mode to chroma reconstruction parameters.
...
- Just like in luma.
2014-10-03 11:36:56 +03:00
Ari Koivula
f6272f06fc
Unify signature for transform functions.
...
- Some used block, coeff and some src, dst. Now all signatures are const input
and non-const output.
2014-10-03 11:21:43 +03:00
Ari Koivula
b932cf4b21
Clean up avx2 dct macros.
2014-10-03 11:16:25 +03:00
Ari Koivula
47244a15c3
Merge branch 'dct-optimizations'
...
Conflicts:
src/strategies/avx2/dct-avx2.c
src/strategies/generic/dct-generic.c
2014-10-02 13:45:21 +03:00
Ari Lemmetti
61e1510480
Transform functions in dct-avx2.c are now generated with macros.
2014-10-02 13:24:30 +03:00
Ari Lemmetti
9407610555
Moved DCT / DST matrices to dct-generic.c
2014-10-02 13:24:30 +03:00
Ari Lemmetti
7255112bd8
Added transposed DCT/DST tables. Use them while calculating transforms instead of doing runtime transpose. Added separate functions for DST and IDST.
2014-10-02 13:24:30 +03:00
Ari Lemmetti
e7bcb58846
Added 32x32 IDCT
2014-10-02 13:24:30 +03:00
Ari Lemmetti
eacf173b7e
Added 32x32 DCT for AVX2
2014-10-02 13:24:30 +03:00
Ari Lemmetti
d2856a5d40
Added 32x32 transpose
2014-10-02 13:24:30 +03:00
Ari Lemmetti
7a33f08312
Added 16x16 DCT and IDCT for AVX2
2014-10-02 13:24:30 +03:00
Ari Lemmetti
d2fe2a5391
Added 16x16 transpose
2014-10-02 13:24:30 +03:00
Ari Lemmetti
d6af146a2e
Added part of the functions 16x16 DCT needs
2014-10-02 13:24:30 +03:00
Ari Lemmetti
aba3acdfff
Added AVX2 optimized transforms for 4x4 and 8x8 blocks
2014-10-02 13:24:30 +03:00
Ari Lemmetti
5856f32d81
Fixed incorrect shift values for inverse transforms in generic strategy
2014-10-02 13:24:29 +03:00
Ari Lemmetti
41b032664d
First version of 4x4 forward DCT
2014-10-02 13:24:29 +03:00
Ari Koivula
36232619ab
Fix broken cabac contexts in wpp.
...
- Fixes #84 .
- The issue was caused by 241b9d6
naively copying the whole struct, which
contains data other than just the contexts. Rather than reverting the
change, the struct was refactored to have another struct that contained
just the contexts.
2014-09-24 01:02:52 +03:00
Ari Koivula
4e052d3f0f
Wrap contexts of cabac_data inside cabac_data.ctx struct.
2014-09-24 01:02:37 +03:00
Ari Koivula
b339004c4c
Rename cabac_state.ctx to cur_ctx.
2014-09-24 01:02:28 +03:00
Ari Koivula
8b8b53fba5
Merge branch 'sao_cabac'
2014-09-22 10:28:30 +03:00
Ari Koivula
bfa399c8fc
Fix compiler warnings.
...
- Non-parenthesized parameter in a macro.
- Unused variables.
- Wrong const qualifiers.
- Signed/unsigned comparison.
2014-09-22 10:04:57 +03:00
Marko Viitanen
6f65a9cbbd
Improved SAO merge decisions
2014-09-16 10:08:17 +03:00
Marko Viitanen
21df11ba4e
Implemented SAO search for both chroma components
2014-09-15 16:07:31 +03:00
Marko Viitanen
e8d1140a1a
Check SAO band offset for both chroma components and better SAO chroma cabac costs
2014-09-15 16:07:31 +03:00
Marko Viitanen
0c92031e8a
SAO merge checking cleanup
2014-09-15 16:07:31 +03:00
Marko Viitanen
b274e7adcd
Added cabac bit cost calculations to SAO search
2014-09-15 16:07:31 +03:00
Ari Koivula
5f732126c3
Add cabac bit costs float table.
2014-09-15 15:45:43 +03:00
Ari Koivula
0db7d8d20f
test cu split cost
2014-09-15 15:42:03 +03:00
Ari Koivula
35b2e6f755
Add missing cabac context for chroma cbf.
...
- The context was also missing from HM, but has been fixed in HM13.
2014-09-15 15:41:44 +03:00
Ari Koivula
241b9d6adb
Simplify cabac context copying.
...
Conflicts:
src/context.c
2014-09-15 15:41:44 +03:00
darealshinji
61a414bced
reposition colons in usage message to match with the rest
2014-09-15 03:40:18 +02:00
Ari Koivula
3c73892609
Fix transform split search.
...
- Redo the search with the best mode to make sure the tr_depth parameters are
correct.
2014-09-11 10:56:53 +03:00
Ari Koivula
46b6b1243b
Add --rd=3 mode and enable searching of intra depth 0.
...
- intra_build_reference_border was overflowing at depth 0 because it uses
arrays just large enough to accommodate 32x32 transforms, which is the
biggest transform.
- For similar reasons search_intra_rough doesn't work at depth 0.
- The --rd=3 mode tries all modes with transform search. It also works without
rough search so it was used to test depth 0 search. If --rd=3 is not on intra
split at depth 0 is not searched for.
Conflicts:
src/search.c
2014-09-11 10:54:41 +03:00
Ari Koivula
c5fa824347
Rebase transform split search.
2014-09-08 14:13:59 +03:00
Ari Koivula
79b86ce6e1
Add --tr-depth-intra command line option.
...
Conflicts:
src/encoder.c
2014-09-04 13:42:24 +03:00
Marko Viitanen
fe236de807
Fixed sps_max_dec_pic_buffering value to include current picture
2014-09-01 10:31:11 +03:00
Marko Viitanen
dbcc8d65aa
Removed duplicate function from RDOQ
2014-08-28 08:50:01 +03:00
Ari Koivula
931ec7301c
Put slice delta QP to bitstream.
...
- Before slice delta QP was always 0. Now if global->QP is changed before
contexts are set, the delta qp is put to the bitstream, allowing for rough
frame level rate control.
2014-08-25 16:43:23 +03:00
Ari Koivula
4c3bbd4a35
Rewrite the SContruct.
...
- Works with new /strategy/ structure.
- Change architecture selection to use arch= instead of construction target.
2014-08-25 16:43:23 +03:00
Ari Lemmetti
f88c3b6f37
Removed unnecessary if (both branches did the same thing)
2014-08-20 11:54:35 +03:00
Laurent Fasnacht
f3c311fe1a
Fix commit 8502f3d
2014-08-11 15:17:15 +02:00
Laurent Fasnacht
f9bffe35a5
Log tile id in sad perf log
2014-08-11 11:57:08 +02:00
Laurent Fasnacht
6a937de9b2
Fix search_cu log
2014-08-11 11:57:08 +02:00
Laurent Fasnacht
8502f3d850
Improve logging
2014-08-11 11:57:07 +02:00
Laurent Fasnacht
f1b303a2d2
Fix compilation errors
2014-08-11 09:53:06 +02:00
Ari Lemmetti
47e3bcfb50
Fixed incorrect shift values for inverse transforms in generic strategy
2014-08-07 16:01:30 +03:00
Ari Lemmetti
709520a233
Removed all AVX2 instructions from SATD functions.
...
-Zero extend macro now returns results in 2 xmm registers instead of one ymm
2014-07-31 13:25:28 +03:00
Ari Lemmetti
0beb278f5b
Partial butterfly strategy is now called DCT strategy. Made changes to transform functions in preparation for optimizations.
...
-Moved fast_forward_dst and fast_inverse_dst to DCT strategies
2014-07-31 13:25:28 +03:00
Ari Lemmetti
6bf63bd171
Added AVX2 strategy for partial butterfly (no optimizations yet)
2014-07-31 13:25:28 +03:00
Ari Lemmetti
faccc4f09b
Partial butterfly functions now utilize the strategy selector
2014-07-31 13:25:28 +03:00
Ari Koivula
c2fac805d7
Give HAVE_ALIGNED_STACK to yasm on windows.
...
- Linux gets it through some other means but on windows it needs to be
given explicitly.
- Fixes issue #78 .
2014-07-30 16:26:23 +03:00
Ari Koivula
669e99dd7f
Improve intra SAD AVX2 intrinsics.
...
- Moved implementations for different sizes to inline functions that are
defined using each other, reducing the amount of redundant code.
- Performance of sad_8bit_32x32_avx2 improved by about 10% due to unrolling of
the loop.
2014-07-25 15:59:55 +03:00
Ari Koivula
e00102f0ca
Compile asm optimizations only if yasm is present.
2014-07-23 14:57:40 +03:00
Ari Lemmetti
85fb0784e4
Fixed intendentation and added some empty lines for readability
2014-07-23 12:32:27 +03:00
Ari Lemmetti
bd6e89c1f0
Updated include directories and file names to Makefile
2014-07-22 15:36:54 +03:00
Ari Lemmetti
4f88ebce5a
Added comments and made visual studio not to compile x86inc.asm
2014-07-22 15:07:57 +03:00
Ari Koivula
cfd3636e08
Move some repetitive SATD asm into a macro.
...
Conflicts:
src/strategies/x86_avx/picture_x86.asm
2014-07-22 12:46:39 +03:00
Ari Lemmetti
c81639dd09
Removed old unused macro
2014-07-22 11:11:20 +03:00
Ari Lemmetti
cf0797cafd
Reordered and intended assembly code
2014-07-22 11:07:42 +03:00
Ari Lemmetti
fea44c8234
Renaming AVX/asm files
...
-Splitted SAD and SATD functions in separate files
2014-07-21 18:02:01 +03:00
Ari Lemmetti
a64df6f0d0
Merge branch 'asm'
...
Conflicts:
build/kvazaar_lib/kvazaar_lib.vcxproj.filters
src/Makefile
src/strategies/strategies-picture.c
2014-07-21 16:41:09 +03:00
Ari Lemmetti
1be2c3aae5
Preparing push to master and misc
...
-Removed unnecessary <math.h> headers
-Updated AVX/asm optimizations to match the new file hierarchy
-Makefile only compiles .asm files if KVAZAAR_DISABLE_YASM is not set to 1 and TARGET_CPU_ARCH is x86
2014-07-21 12:39:56 +03:00
Ari Koivula
a8f7103797
Add AVX2 implementations for sad_8bit_ 8x8, 16x16 and 32x32.
2014-07-18 18:27:30 +03:00
Ari Koivula
3daa5dd1f1
Add sse2 implementaton for sad_8bit_4x4.
2014-07-18 18:20:34 +03:00
Ari Koivula
f49332c9b8
Add missing includes.
2014-07-18 17:56:15 +03:00
Ari Koivula
291817667f
Tidy up the Makefile.
2014-07-18 17:31:18 +03:00
Ari Koivula
e241866f43
Compile intrinsic functions with appropriate flags in gcc.
...
- Remove -march=native as it's no longer necessary for intrinsics to work.
Closes #77 .
- I couldn't test altivec or sse4.1, but sse4.1 compiles so I expect it
to work.
2014-07-18 17:28:14 +03:00
Ari Koivula
5662621b3c
Free threadqueue jobs when they are not needed.
...
- Also add destroying the mutex when the job is freed.
- This makes Kvazaar no longer acquire thousands of OS handles on Windows.
2014-07-16 16:51:20 +03:00
Ari Lemmetti
1e94262f85
Made AVX asm compatible with the changed system
...
- x86inc.asm is now located in extras
- Removed unused cpu.asm/h
2014-07-14 18:51:17 +03:00
Ari Lemmetti
683eda1183
Merge branch 'master' into asm
...
Conflicts:
build/kvazaar_lib/kvazaar_lib.vcxproj
build/kvazaar_lib/kvazaar_lib.vcxproj.filters
src/Makefile
src/strategies/strategies-picture.c
2014-07-14 16:42:33 +03:00
Ari Lemmetti
7f873e037c
Updated Makefile to compile picture_x86.asm
2014-07-14 15:30:08 +03:00
Ari Lemmetti
2169f9ab8c
Added AVX asm comments and fixes
...
-Added vzeroupper to satd macro to prevent AVX-SSE transition penalties int picture_x86.asm
-Fixed the order of registers in zero extend macro in picture_x86.asm
-Fixed SATD checkers test pattern in satd_tests.c
2014-07-14 14:43:36 +03:00
Ari Koivula
5d0df56c94
Move optimizations to their own compilation units according to target.
...
- This is necessary in order to compile AVX intrinsics correctly in
Visual Studio. Having everything in their own units should also make
compiling normal C code with optimizations on easier.
- For now the makefile still relies on GCC __target__ attribute for compiling
intrinsics.
2014-07-11 17:26:19 +03:00
Ari Koivula
f605d6c35b
Align intra buffers to 32 bytes for 256 bit SIMD instructions.
2014-07-11 17:26:19 +03:00
Ari Koivula
fbd03b706e
Reconfigure VS project.
...
- Moved compilation flag stuff from project file to the abstraction layer.
- Disabled randomized base address as unnecessary.
- Disable stack buffer security check from release.
2014-07-11 17:26:19 +03:00
Laurent Fasnacht
72abc69b3d
Measure time for SAD in _DEBUG mode
2014-07-08 11:42:58 +02:00
Laurent Fasnacht
1a318c714d
log poc with new_frame
2014-07-08 11:42:19 +02:00
Laurent Fasnacht
e64a692780
Add CU type in threadqueue.log
2014-07-08 09:06:31 +02:00
Laurent Fasnacht
abfbb7cad3
Fix duplicate type key in threadqueue.log
2014-07-07 11:36:50 +02:00
Laurent Fasnacht
946e3b9651
Log search_cu to threadqueue.log
2014-07-07 10:50:05 +02:00
Laurent Fasnacht
f62e571c15
Add missing info to threadqueue.log
2014-07-07 10:49:40 +02:00
Ari Lemmetti
048127c7e3
AVX assembly optimizations improved
2014-07-02 16:57:06 +03:00
Ari Koivula
7ecf78bb70
Use sqrt lambda cost for searches not using SSD.
...
- Add encoder_state->global->cur_lambda_cost_sqrt.
- Use sqrt lambda for inter search and rough intra search.
- The effect on inter is around 10-20% bdrate. The effect on intra is smaller
and non-existent when --rd=2 is enabled, as the intra search refinement was
already done with SSD and correct lambda.
2014-06-26 13:56:38 +03:00
Laurent Fasnacht
1112dca933
Fix compilation issue with assertion disabled
2014-06-26 07:31:37 +02:00
Laurent Fasnacht
9ab9defe67
Bitstream length per frame works again
2014-06-19 10:24:03 +02:00
Laurent Fasnacht
45faadb2c9
Fix bug where the wrong number of frames could be encoded (if one frame takes longer than the others)
2014-06-19 10:24:02 +02:00
Ari Koivula
d5a77be4b8
Fix avx detection for gcc.
...
- GCC doesn't support _xgetbv intrinsic so we have to use inline assembler.
2014-06-18 11:50:17 +03:00
Ari Lemmetti
bdef5384ef
Added AVX strategy
2014-06-17 16:52:24 +03:00
Ari Koivula
d7abe6a7c2
Address compilation warning.
...
strategyselector.c:170:10: error: ‘__get_cpuid’ is static but used in inline function ‘get_cpuid’ which is not static [-Werror]
return __get_cpuid(level, eax, ebx, ecx, edx);
2014-06-17 16:26:55 +03:00
Ari Koivula
60ecc6baae
Remove unused stuff.
2014-06-17 16:20:01 +03:00
Ari Koivula
7532b789f8
Add -std=gnu99 for gcc.
...
- std=c99 doesn't work because then struct timespec won't be defined.
2014-06-17 16:15:39 +03:00
Ari Koivula
94bc457b6c
Add option to disable fast intra search.
2014-06-17 15:32:05 +03:00
Ari Koivula
e27fc875c0
Clean up intra search.
2014-06-17 15:09:12 +03:00
Ari Koivula
e4d70ac1ab
Use more starting points for smaller blocks in intra search.
2014-06-17 13:28:27 +03:00
Ari Koivula
9911c7553b
Avoid unnecessary intra dir searching.
2014-06-17 13:11:35 +03:00
Ari Koivula
bd16a55b9b
Always check DC and planar intra modes.
...
- At least one of them is always in predicted modes, but to make sure they
are both included add them explicitly.
2014-06-17 12:51:15 +03:00
Ari Koivula
70740da123
Add smarter rough intra search.
...
- Directional intra mode search is done using halving search from the best
known mode. Starting modes are vertical, horizontal and the 3 diagonal
modes.
Conflicts:
src/search.c
2014-06-17 12:33:10 +03:00
Marko Viitanen
0e2fe9e7ff
Changed intra search to skip some modes speeding it up
2014-06-17 12:32:29 +03:00
Marko Viitanen
a1c3cfe944
Moved intra mode cost calculation to a function
...
Conflicts:
src/search.c
2014-06-17 12:32:29 +03:00
Marko Viitanen
eb7d46f9ef
Modify CU split cost.
2014-06-17 12:30:32 +03:00
Marko Viitanen
bfa37b876b
Conformance fix: set sps_max_dec_pic_buffering to correct value
2014-06-17 12:30:32 +03:00
Ari Koivula
b3c15b8f94
Merge branch 'owf'
2014-06-16 16:07:41 +03:00
Laurent Fasnacht
91de92134f
Constrain the search not to go under the LCU below if OWF is enabled
2014-06-16 14:27:56 +02:00
Laurent Fasnacht
ef9c2258e9
Fix frame counter and stats
2014-06-16 13:21:52 +02:00
Ari Koivula
153b1ee41f
Merge branch 'intra-sad-strategies'
2014-06-16 12:34:37 +03:00
Laurent Fasnacht
84d34c2655
Fix compilation on non-intel
2014-06-16 11:24:02 +02:00
Ari Koivula
3f00592b96
Separate strategyselector debug prints from _DEBUG.
...
- I only want to see the strategy stuff.
2014-06-16 12:15:19 +03:00
Ari Koivula
1c97a10a6d
Move intra SAD and SATD functions under strategies.
2014-06-16 12:13:41 +03:00
Laurent Fasnacht
4b4702819b
Also print encoding FPS
2014-06-16 11:10:11 +02:00
Laurent Fasnacht
2347574a8e
Fix problems revealed by valgrind
2014-06-16 11:10:09 +02:00
Laurent Fasnacht
28c3f22ba1
Fix possible freeze
2014-06-16 11:03:48 +02:00
Laurent Fasnacht
a96c742ad4
Fix depends for wpp+owf
2014-06-16 11:03:47 +02:00
Laurent Fasnacht
f99e41d41f
Improved CPU time statistics
2014-06-16 11:03:46 +02:00
Laurent Fasnacht
8a33c0a688
Fix recon job for wfrow
2014-06-16 10:55:01 +02:00
Laurent Fasnacht
bf6024734a
Fix statistics with OWF
2014-06-16 10:55:00 +02:00
Laurent Fasnacht
0522a3d8e5
--owf option
2014-06-16 10:55:00 +02:00
Laurent Fasnacht
47d1ded7b0
Dependencies between frames
2014-06-16 10:54:59 +02:00
Laurent Fasnacht
003d3c504c
image_list_copy_contents
2014-06-16 10:54:58 +02:00
Laurent Fasnacht
f4187dd10c
cu_array data structure
2014-06-16 10:54:57 +02:00
Laurent Fasnacht
3be3fa8d6e
Use different processing order depending if we have OWF or not
2014-06-16 10:54:56 +02:00
Laurent Fasnacht
c32943f78b
OWF
2014-06-16 10:54:56 +02:00
Laurent Fasnacht
490dd15f3d
Remove flush between frame
2014-06-16 10:51:33 +02:00
Laurent Fasnacht
fddcbabe28
bitstream writing is now a "normal" job in a thread
2014-06-16 10:51:32 +02:00
Laurent Fasnacht
ff7143cc24
Assign thread_queue_jobs and move image_free to a more suitable place
2014-06-16 10:51:32 +02:00
Ari Koivula
87ca828a63
Correct intra sad function labels.
...
- These haven't been 16 bit for a long time.
2014-06-16 10:45:10 +03:00
Ari Koivula
fcce6ae823
Fix printing of AVX2 capability.
2014-06-14 01:24:19 +03:00
Ari Koivula
a49ba2633a
Add OS and CPU detection for AVX2 and AVX.
2014-06-13 16:57:53 +03:00
Ari Koivula
1de102be61
Move strategies to their own compilation units.
...
- Enforces a little bit more hierarchy. Compilation units are in strategies
and whatever inline includes they have are in a folder with the same name
as the strategy.
2014-06-13 15:30:23 +03:00
Ari Koivula
aa3549a717
Change SLEEP(0) to SLEEP(10) on Windows.
...
- This is a workaround for a performance problem on Windows where main thread
is busy looping.
2014-06-13 12:01:03 +03:00
Laurent Fasnacht
4acadccf89
Only signal the required number of threads
2014-06-13 08:34:59 +02:00
Laurent Fasnacht
70ce7cec20
Remove unneccessary locks by adding threadqueue->queue_running counter
2014-06-13 08:34:58 +02:00
Laurent Fasnacht
7ef34ff5a1
Ability to dump mutex_lock, mutex_unlock and cond_wait timing, if compiled with -D_PTHREAD_DUMP
2014-06-13 08:32:14 +02:00
Laurent Fasnacht
68ad323e84
Tentative fix for race condition
2014-06-12 14:01:33 +02:00
Laurent Fasnacht
b194e19708
Tentative fix for deadlock
2014-06-12 12:57:14 +02:00
Laurent Fasnacht
b765eca153
Remove unneeded encoder_state_blit_pixels
2014-06-12 11:47:46 +02:00
Laurent Fasnacht
da07b8b35d
No-copy works (SAO and deblocking enabled)
2014-06-12 11:47:38 +02:00
Laurent Fasnacht
2cc700fab8
No-copy works with --no-sao (deblocking enabled)
2014-06-12 11:47:31 +02:00
Laurent Fasnacht
6b408b5904
No-copy works with --no-sao --no-deblock
2014-06-12 11:47:30 +02:00
Laurent Fasnacht
0dbfa62698
Replace copy of images made for tiles by sub-images (no copy)
...
- replace width by stride where required in the source code
2014-06-12 11:47:30 +02:00
Laurent Fasnacht
b1347efef5
Add checkpoint in sao_reconstruct
2014-06-12 11:47:29 +02:00
Laurent Fasnacht
ae4dc4eb44
Fix uninitialized sao_info structure members, which was creating false positive when checkpointing SAO
2014-06-12 11:47:29 +02:00
Laurent Fasnacht
f371bdafc3
sao_info checkpoints
2014-06-12 11:47:28 +02:00
Laurent Fasnacht
b7fe81c55c
Checkpoint in pixels_blit, and avoid doing undefined behaviour when source and destination is the same.
...
Seems a reasonnable point to observe when refactoring, since it's called on most image data.
2014-06-12 11:47:28 +02:00
Laurent Fasnacht
da8559fa34
Fix bug in CHECKPOINTS_FINALIZE() when checkpoints are disabled
2014-06-12 11:47:27 +02:00
Laurent Fasnacht
14df6de0d0
Checkpoint on frame checksum
2014-06-12 11:47:00 +02:00