Ari Koivula
1c6c4963e7
Fix coverity warning.
...
- Mutex was left locked when malloc failed. Fixed.
2015-05-04 17:38:16 +03:00
Ari Koivula
1c3873f5b2
Fix coverity warning.
...
- Overflow from buggy implementation of modulo behavior for
pattern_type. As there is no need for such behavior I removed it.
2015-05-04 17:38:16 +03:00
Ari Koivula
6234b09461
Fix coverity warning.
...
- A false alarm about buffer overflow. No new modes are added if all modes
are already in the list.
- Skip checking predicted modes if all modes are in the list.
2015-05-04 17:38:16 +03:00
Ari Koivula
9015aab996
Clean up IDR handling code.
...
- IDR was called RADL, probably because the NAL type is IDR_W_RADL.
- Move things around to make it clearer what is happening.
2015-04-30 20:46:07 +03:00
Ari Koivula
b43f1cb9eb
Fix keeping of reference frames over IDR boundary.
...
-
2015-04-30 15:42:16 +03:00
Ari Koivula
c0c9bc619a
Fix valgrind warning.
...
- Attribute state->global->slicetype was used before being initialized.
- The reference frame lists should be updated based on current frame,
not on previous frame (or uninitialized data).
2015-04-30 13:18:28 +03:00
Ari Lemmetti
afcccb5c81
Merge branch 'memory_leak_test'
2015-04-29 16:26:59 +03:00
Ari Lemmetti
0081384727
Clean Makefile a bit. Add debug build option.
2015-04-24 20:45:19 +03:00
Marko Viitanen
8ed5d06ebe
Fixed compiler warnings caused by the bipred branch merge
2015-04-23 15:12:48 +03:00
Marko Viitanen
fd060cf2c6
Merge branch 'bipred'
...
Conflicts:
README.md
src/config.c
src/config.h
src/encmain.c
2015-04-23 14:45:44 +03:00
Marko Viitanen
79dc7e7270
Bi-pred search cleanup
2015-04-23 14:39:41 +03:00
Marko Viitanen
0e958ebe84
Fixed merge candidate selection
2015-04-23 12:18:33 +03:00
Marko Viitanen
3c694a8f6e
Fixed bipred mv candidate selection
2015-04-23 12:18:05 +03:00
Marko Viitanen
9951810910
Fixed deblocking with bi-dir blocks
2015-04-23 09:43:39 +03:00
Marko Viitanen
7f504b7808
Added a commandline parameter --bipred to enable bi-pred search
2015-04-21 14:35:16 +03:00
Marko Viitanen
fb74f86a5b
Bi-pred search now actually does cost calculations
2015-04-21 14:16:06 +03:00
Marko Viitanen
e12ba7c80f
Created function inter_recon_lcu_bipred() and moved bipred recon there
2015-04-21 12:05:21 +03:00
Marko Viitanen
50fce975d9
Clamp bi-pred motion vectors because ipol filtering requires modifications
2015-04-21 11:24:07 +03:00
Ari Koivula
13924a2057
Add --no-info parameter.
...
- Stops encoder information from being added to bitstream.
- The version information overhead is too big when doing comparisons with
very short sequences.
2015-04-16 17:30:36 +03:00
Ari Koivula
7028846423
Fix bug in intra mode search.
...
- The cost of the first mode in the mode list was returned instead of cost of
the selected mode, as this used to be the best mode when the list was
sorted. Should only matter when doing inter coding.
- This pretty much affects only --rd=1 in inter frames.
2015-04-09 16:05:53 +03:00
Marko Viitanen
da3fe9f199
Fixed rounding in bi-pred reconstruction
2015-04-02 15:55:13 +03:00
Marko Viitanen
c7a17cf1c4
Changed motion vector candidate derivation to work with bi-pred case
2015-04-02 14:05:24 +03:00
Marko Viitanen
73db9fec83
Fixed asserts for intra PU-depth configurations
2015-04-02 10:31:56 +03:00
Marko Viitanen
5d71fb3136
Fixed leaf aligning
2015-04-01 08:49:22 +03:00
Marko Viitanen
d26b89174b
Fixed intra chroma search ref_v pointer
2015-03-31 15:43:22 +03:00
Marko Viitanen
4b7db2e014
Added a dummy bi-pred search, always selects bi-pred block when possible
2015-03-31 15:02:43 +03:00
Marko Viitanen
2c676927f0
Fixed a bug in bipred reconstruction causing an overflow
2015-03-31 15:02:10 +03:00
Marko Viitanen
06bc4f3d5e
Fixed duplicate checking for merge cand and some cleanup
2015-03-31 12:23:46 +03:00
Marko Viitanen
004e8082ab
Fixed deblocking after L0/L1 mv changes
2015-03-31 12:22:48 +03:00
Marko Viitanen
c02e3b8e26
Fixed inter_get_mv_cand() reference picture checking
2015-03-30 15:22:56 +03:00
Marko Viitanen
f881d6bf8a
Modified structures and mv handling to use L0/L1 vectors
2015-03-30 14:40:29 +03:00
Marko Viitanen
d6f68d0950
Force clearing of references when GOP not used and I-slice
2015-03-30 10:21:41 +03:00
Marko Viitanen
f28ebbcd41
Moved GOP defining to config.c and added parameter --gop
...
* Checking that intra period and gop_len match
2015-03-30 10:09:54 +03:00
Marko Viitanen
c82915761f
Enabled insertion of I-slices when GOP is used
2015-03-30 10:09:49 +03:00
Marko Viitanen
815e0b8897
Moved reference list printing to encoder_compute_stats()
2015-03-30 10:09:32 +03:00
Marko Viitanen
2243d139bf
Fixed GOP reference usage when using owf
2015-03-26 14:11:13 +02:00
Marko Viitanen
1dc53be8fc
Fixed leaf aligning
2015-03-26 13:54:17 +02:00
Marko Viitanen
bbeb85f9ee
Fixed case when cfg->frames is zero
2015-03-26 11:24:41 +02:00
Marko Viitanen
5c04603421
Remove unused ref frames on GOP case even when number of ref frames is within limits
2015-03-26 11:14:13 +02:00
Marko Viitanen
5071b5c990
Moved reference list sorting and parsing to encoder_state_new_frame()
...
* fixed a bug in reference verification and added an error state
2015-03-26 10:58:56 +02:00
Marko Viitanen
c40ca49b6c
When GOP is used, verify the references are available
2015-03-26 10:38:21 +02:00
Marko Viitanen
fe581b881e
Changed GOP structure to enable coding sequences not divisible by gop_len
2015-03-25 16:00:20 +02:00
Marko Viitanen
42e02dbfd9
Fixed tr-skip cost calculation
2015-03-24 13:35:28 +02:00
Marko Viitanen
a7328ab008
Fixed tr-skip cost calculation
2015-03-24 12:40:01 +02:00
Marko Viitanen
c649c90f3a
Changes to enable adaptation to any GOP len
2015-03-24 12:01:57 +02:00
Marko Viitanen
9a828ae5da
Fixed merge candidate scaling in hexbs and excluded weighted pred candidates in cost calc
2015-03-24 09:38:24 +02:00
Marko Viitanen
2d8552d0d6
Fixed merge candidate usage by skipping weighted prediction candidate
2015-03-23 15:17:41 +02:00
Marko Viitanen
7952f892fc
Fixed GOP reference usage
2015-03-23 14:17:44 +02:00
Marko Viitanen
34e8f70c8c
Fixed temporal MV predictor offset
2015-03-23 09:22:47 +02:00
Marko Viitanen
eccf1c1a16
Fixed temporal MV predictor offset
2015-03-23 09:21:52 +02:00
Marko Viitanen
164b7a7743
Merge remote-tracking branch 'remotes/origin/master' into GOP
2015-03-20 11:40:15 +02:00
Marko Viitanen
5ae9a70e38
Disable usage of P-slices when GOP
2015-03-20 10:43:59 +02:00
Marko Viitanen
26082d5328
Zero merge candidate fix for B-frames
2015-03-20 10:33:05 +02:00
Marko Viitanen
0c1aa6f73c
Better reference picture removal function encoder_state_remove_refs()
2015-03-20 10:28:17 +02:00
Marko Viitanen
7dab3ea0f6
Replaced temporary reference lists with the ones in gop configurations
2015-03-20 10:25:40 +02:00
Marko Viitanen
f166d25dd0
Added positive and negative reference frames to the gop config
2015-03-20 10:22:53 +02:00
Arttu Ylä-Outinen
3f31e7bf47
Merge branch 'tz-search'
2015-03-19 19:04:44 +02:00
Arttu Ylä-Outinen
176dbb6a5b
Add --me parameter.
...
Selects the integer motion estimation algorithm (hexbs or tz).
2015-03-19 18:48:10 +02:00
Marko Viitanen
d72c560880
Generate sorted reference list for L0 and L1
2015-03-19 12:26:59 +02:00
Marko Viitanen
c761a6beb3
Added encoder state as an input parameter to inter_get_merge_cand()
2015-03-18 12:35:47 +02:00
Marko Viitanen
c56b4d5747
Added combined merge candidates on B-slices and struct inter_merge_cand_t
2015-03-18 10:03:06 +02:00
Ari Koivula
6ec177f75c
Improve handling of input vector to inter search.
2015-03-17 17:16:15 +02:00
Ari Koivula
55ae02f367
Copy cu_info from tiles to main state.
...
- Main states cu_array can be accessed through state->global->ref, which
allows the use of cu_info data from reference frames.
- This was already used by giving previous frames movement vector to next
frame as a starting point candidate, but that functionality was broken at
some point because the data wasn't being moved from child tiles cu_array
to the main cu_array.
- Alternative would be to access the child tiles array directly, but
currently there isn't a mechanism to preserve those arrays for reference
frames.
2015-03-17 13:24:20 +02:00
Ari Koivula
4bec6cec93
Simplify wavefront handling.
...
- Move the reconstruction status assignment out of the main for job loop.
2015-03-17 13:23:27 +02:00
Ari Koivula
4a27f79f20
Update comments.
2015-03-17 13:23:16 +02:00
Marko Viitanen
1da1dc9578
Clean up reference index and mvd writing
2015-03-16 09:41:02 +02:00
Ari Koivula
ca09e8bfe3
Fix WPP not working with threads=0.
...
- Apparently threadqueue_submit runs the job if there are no threads.
2015-03-13 17:15:05 +02:00
SanteriS
913ade461b
tz_search step 1, first if: && -> ||
2015-03-12 17:57:17 +02:00
SanteriS
949ec57849
Merge branch 'master' of https://github.com/ultravideo/kvazaar
2015-03-12 17:55:03 +02:00
SanteriS
bdb0639ac9
fixed function interfaces for tz_search and its subfunctions.
2015-03-12 17:54:21 +02:00
Ari Koivula
d2bb71739f
Clean up and comment WPP threading code.
...
- Remove WPP row reconstruction dependency to the row above current one in
the previous frame. It's obviously unnecessary.
- Remove WPP row reconstruction dependency to the current row in the
previous frame, unless the current row is the last row.
2015-03-11 18:30:37 +02:00
Ari Lemmetti
b9ec4b0a54
AVX2 acceleration for new luma filtering.
2015-03-11 15:33:38 +02:00
Marko Viitanen
bc8ea9547e
Use P-frames when last GOP picture
2015-03-11 15:23:16 +02:00
Marko Viitanen
a4b5f46b46
Fixed reference list delta and num_ref_idx_lX_active values
2015-03-11 15:19:32 +02:00
Marko Viitanen
ac4973c544
Fixed deblocking strength in this configuration when B-slice
2015-03-10 15:20:02 +02:00
Marko Viitanen
1527822753
Fixed GOP POC order when not using threads
2015-03-10 14:12:51 +02:00
Marko Viitanen
866c3bfdf1
Setting gop_len to 0 now works
2015-03-10 12:16:57 +02:00
Marko Viitanen
1c38fbbd3b
Fixed GOP when no threads are used
2015-03-10 10:45:05 +02:00
Marko Viitanen
66660516b7
Merge remote-tracking branch 'remotes/github/master' into GOP
...
Conflicts:
src/cabac.h
src/config.h
src/cu.h
src/encoder_state-bitstream.c
src/encoderstate.c
2015-03-10 10:32:00 +02:00
Marko Viitanen
ff41ef557d
Fixed reference usage of top GOP layer pictures
2015-03-10 09:18:19 +02:00
Marko Viitanen
eba298e635
Added cu->inter.mv_ref_coded variable
2015-03-10 09:17:25 +02:00
Marko Viitanen
ec02642cc8
Added more bits to POC counter and fixed num_reorder_pic and max_dec_pic_buffering values
2015-03-10 09:06:32 +02:00
SanteriS
9e9f5e3150
Merge branch 'master' of https://github.com/ultravideo/kvazaar
2015-03-08 19:20:08 +02:00
SanteriS
e2f9fe130a
changed step 1 for tz_search
2015-03-08 19:19:23 +02:00
Ari Lemmetti
39eceec38d
Rewrite of luma fractional pixel filtering. Utilizes intermediate values instead of calculating everything again.
2015-03-06 17:58:22 +02:00
Marko Viitanen
42d3f2a8b0
Added B-frame encoding and reference list exceptions for top-layer GOP pictures
2015-03-06 16:32:50 +02:00
Marko Viitanen
1afba671e2
Added missing cabac bits to mv coding
2015-03-06 16:31:27 +02:00
Marko Viitanen
6095503918
Modified search to use correct reference id and mv directions
2015-03-06 16:29:24 +02:00
Marko Viitanen
13c925b701
Testset of data for reference picture lists
2015-03-06 16:28:23 +02:00
Marko Viitanen
43b086caed
Added missing slice header flag "mvd_l1_zero_flag"
2015-03-06 16:27:42 +02:00
Marko Viitanen
18d9789fab
Cabac context array for inter direction
2015-03-06 16:26:16 +02:00
Ari Koivula
2f79bfebf7
Rename parameter encoder_state to state in all functions.
...
- It's so widely used that there isn't really need to emphasize that
it's the encoders state. Also, it isn't really the encoders state,
but encoding jobs state.
2015-03-04 17:31:07 +02:00
Ari Koivula
14fe1b6648
Rename enum color_index to color_t.
2015-03-04 16:37:35 +02:00
Ari Koivula
ded6fd9ee8
Renamed typedef pixel to pixel_t.
2015-03-04 16:35:53 +02:00
Ari Koivula
1f42adb1ea
Renamed typedef coefficient to coeff_t.
2015-03-04 16:33:47 +02:00
Ari Koivula
fedd05465d
Rename struct sao_info to sao_info_t.
2015-03-04 16:32:38 +02:00
Ari Koivula
3d135324da
Rename struct threadqueue_queue to threadqueue_queue_t.
2015-03-04 16:30:20 +02:00
Ari Koivula
b7fcb800b2
Rename struct threadqueue_job to threadqueue_job_t.
2015-03-04 16:28:56 +02:00
Ari Koivula
cf5f240604
Rename struct hardware_flags to hardware_flags_t.
2015-03-04 16:24:59 +02:00
Ari Koivula
e7754bb518
Rename struct strategy_to_select to strategy_to_select_t.
2015-03-04 16:24:06 +02:00
Ari Koivula
e95b138e62
Rename struct strategy_list to strategy_list_t.
2015-03-04 16:23:04 +02:00
Ari Koivula
95afc5af51
Rename struct strategy to strategy_t.
2015-03-04 16:17:45 +02:00
Ari Koivula
db42176a64
Rename struct image_list to image_list_t.
2015-03-04 16:13:57 +02:00
Ari Koivula
7bafd34cfa
Remove struct rd_stats.
2015-03-04 14:01:17 +02:00
Ari Koivula
fe55961f84
Rename struct image to image_t.
2015-03-04 14:01:17 +02:00
Ari Koivula
5431d0ce19
Rename struct lcu_order_element to lcu_order_element_t.
2015-03-04 14:01:17 +02:00
Ari Koivula
9e64ee3cee
Suffix encoder_state_config structs with _t.
2015-03-04 14:01:17 +02:00
Ari Koivula
cdb1a25f05
Inline struct me into encoder_control_t.
2015-03-04 14:01:16 +02:00
Ari Koivula
e5b18cd536
Inline cu_info_intra and cu_info_inter into cu_info_t.
2015-03-04 14:01:16 +02:00
Ari Koivula
a0767a76d2
Rename struct vector2d to vector2d_t.
2015-03-04 14:01:16 +02:00
Ari Koivula
5b12830756
Rename struct config to config_t.
2015-03-04 14:01:16 +02:00
Ari Koivula
1a62fee300
Rename struct cabac_data to cabac_data_t.
2015-03-04 14:01:16 +02:00
Ari Koivula
727fefacc4
Rename struct cabac_ctx to cabac_ctx_t.
2015-03-04 14:01:16 +02:00
Ari Koivula
4bc0308b7e
Rename struct bitstream_file to bitstream_file_t.
2015-03-04 14:01:15 +02:00
Ari Koivula
d6ec6a618d
Rename struct bitstream_mem to bitstream_mem_t.
2015-03-04 14:01:15 +02:00
Ari Koivula
106c9128ad
Rename struct bitstream_base to bitstream_base_t.
2015-03-04 14:01:15 +02:00
Ari Koivula
5d8498dc88
Rename struct bit_table to bit_table_t.
2015-03-04 14:01:15 +02:00
Ari Koivula
8cd8240f7a
Rename struct bitstream to bitstream_t.
2015-03-04 14:01:15 +02:00
Ari Koivula
7ca688b376
Rename struct videoframe to videoframe_t.
2015-03-04 14:01:15 +02:00
Ari Koivula
63e224574e
Rename struct cu_info to cu_info_t.
2015-03-04 14:01:15 +02:00
Ari Koivula
f3fab62d33
Rename struct cu_array to cu_array_t.
2015-03-04 14:01:15 +02:00
Ari Koivula
78f0c3a83b
Rename struct scaling_list to scaling_list_t.
2015-03-04 14:01:14 +02:00
Ari Koivula
f6147b410a
Rename struct encoder_control to encoder_control_t.
...
Conflicts:
src/encoder_state-geometry.h
src/encoderstate.h
2015-03-04 14:01:14 +02:00
Ari Koivula
b14f89c88f
Rename struct encoder_state to encoder_state_t.
2015-03-04 14:00:46 +02:00
Marko Viitanen
890b4c1e20
Modified image handling and QP calculations to support GOP
2015-03-03 12:22:50 +02:00
Marko Viitanen
c3d9e0b707
Added testset of data for GOP
2015-03-03 12:22:09 +02:00
Marko Viitanen
34b231378b
Modified config and encoder_state structs for GOP
2015-03-03 12:21:45 +02:00
SanteriS
b55bfe1729
Merge branch 'master' of https://github.com/ultravideo/kvazaar
2015-02-25 18:15:35 +02:00
SanteriS
bef7cae4f8
Merge branch 'master' of https://github.com/ultravideo/kvazaar
2015-02-25 15:29:11 +02:00
SanteriS
f478732b4c
tz search bugfix
2015-02-25 15:28:45 +02:00
Ari Koivula
d7383ccb25
Change license to LGPL.
...
- Everyone who has contributed code to the project has been asked to license
their contributions under LPGL and they have agreed.
- COPYING file changed to say LGPLv2.1 instead of GPLv2.
- GPL changed to LGPL in the header of every single file that a header and
header added to the few that were missing one.
- Also.. Happy new year!
2015-02-25 15:19:05 +02:00
Ari Koivula
3e58e03b56
Select motion compensation search starting point from among merge candidates.
...
- Greatly reduces bdrate for most sequences.
2015-02-25 12:58:15 +02:00
SanteriS
2f68cf3847
(TZ search) Fixed missing check for owf mode. Added 6 point hexagon search pattern.
2015-02-23 16:59:48 +02:00
Ari Koivula
9865e73b90
Remove NetBSD getopt dependency to unistd.h.
...
- Remove the $NetBSD header as it wouldn't get updated and is wrong.
2015-02-19 16:26:14 +02:00
Ari Koivula
dd54b5ae10
Replace GNU getopt with NetBSD getopt.
...
- This doesn't compile, but I'm including it to have a version history for
changes required to make it work.
- We need this for to have a getopt implementation on Windows.
- It's necessary to change the implementation to switch from GPL to LGPL.
2015-02-19 16:26:14 +02:00
Ari Koivula
c979db7e95
Avoid sorting intra modes unnecessarily.
2015-02-19 16:25:45 +02:00
Ari Koivula
1c2129fdcb
Improve sort_modes.
...
- When encoding with fast enough settings this function can use up to 5%
of the cpu time, so I tried to optimize it a little bit.
2015-02-19 16:25:38 +02:00
Ari Koivula
5fa6438b25
Clean up calls to memset.
...
- Replaces all calls to memset with new FILL and FILL_ARRAY macros. The use
of memset was inconsistent and we never use it for anything complicated.
2015-02-19 16:25:28 +02:00
Arttu Ylä-Outinen
b6776a8cee
Add --vps-period parameter.
2015-02-18 13:55:27 +02:00
SanteriS
1a4d30d15a
fixed step 1 of TZ algorithm
2015-02-11 18:51:21 +02:00
SanteriS
ce4c251cd1
Merge branch 'master' of https://github.com/ultravideo/kvazaar
2015-02-09 17:29:49 +02:00
Ari Lemmetti
8aea1a0fa9
Updated version string. Fixed dct strategy registration error message.
2015-02-05 14:07:26 +02:00
Ari Lemmetti
7846cf3093
Merge branch 'faster_interpolation'
2015-02-05 13:29:43 +02:00
Ari Lemmetti
7430622038
Copy ipol-generic strategy as a base for avx2 strategy
2015-02-05 13:28:07 +02:00
Ari Lemmetti
8495870df8
Using BIT_DEPTH macro because it is constant
2015-02-05 13:19:54 +02:00
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