Commit graph

4237 commits

Author SHA1 Message Date
Ari Koivula 880d09b27a Add sao_type_idx to SAO mode cost estimation. 2014-04-15 21:29:09 +03:00
Ari Koivula 280a946269 Apply bit cost fixes to edge band band sao search.
- Increases bdrate slightly. It's still a cleaner solution though and further
  improvements to bit cost estimation might improve things.
2014-04-15 21:28:16 +03:00
Ari Koivula c968253eb3 Estimate SAO merge coding costs better.
- This doesn't seem to have very much of an effect. I guess the difference
  between 1 and 2 bits isn't that important.
2014-04-15 21:27:16 +03:00
Ari Koivula ef7840c623 Add SAO coding costs for sao_eo_class, band position and offset sign.
- This reduces bdrate a little bit.

- It seems like increasing the bit cost of using SAO in general
  increases bdrate.
2014-04-15 21:24:44 +03:00
Ari Koivula 9ff32c566c Adjust SAO mode coding cost for zero offsets.
- Coding zero with TR only takes one bit.

- Even though offset 0 should be fairly common, this doesn't seem to help very
  much and actually increases bdrate on some sequences.
2014-04-15 21:21:31 +03:00
Ari Koivula 67a3d5542c Add better delta distortion calculation to sao. 2014-04-15 21:17:29 +03:00
Ari Koivula 8c4796e56e Calculate edge and band sao separately. 2014-04-15 21:16:55 +03:00
Ari Koivula 1017c6639c Move band and edge sao to their own functions. 2014-04-15 21:14:59 +03:00
Laurent Fasnacht 960f2cb4b0 g_sig_last_scan -> const uint32_t* 2014-04-15 16:09:52 +02:00
Laurent Fasnacht 288a4537ba const bit_table for exp_golomb 2014-04-15 16:09:52 +02:00
Laurent Fasnacht 763b775d3e encoder_control->cfg is const 2014-04-15 16:09:52 +02:00
Laurent Fasnacht ae2d79c954 Remove encoder_control.cqmfile 2014-04-15 16:09:51 +02:00
Laurent Fasnacht 86c1cf339f Add Makefile to dependencies 2014-04-15 15:47:40 +02:00
Laurent Fasnacht e135a88fb5 Remove encoder_control.cqmfile 2014-04-15 14:21:25 +02:00
Laurent Fasnacht 29c93d8f3f Automatic generation of build dependencies 2014-04-15 13:52:31 +02:00
Laurent Fasnacht 7897f7d5cd Remove counter from debug version of WRITE_*
It's not very useful, and create unneeded noise when trying to make diffs
2014-04-15 11:37:45 +02:00
Laurent Fasnacht f47e23cd24 Allow FREE_POINTER to free const xxx * ptr without warning 2014-04-15 11:37:44 +02:00
Laurent Fasnacht 52ae027b3a Avoid undefined behavior in memcpy calls
"The memcpy() function shall copy n bytes from the object pointed to by s2 into the object pointed to by s1. If copying takes place between objects that overlap, the behavior is undefined."
2014-04-15 06:30:21 +02:00
Laurent Fasnacht 317a3f87a4 Initialize scaling_list_dc (avoids branching on uninitialized value) 2014-04-15 06:19:12 +02:00
Laurent Fasnacht 9f3aeed6be Fix pixel access in sao 2014-04-14 15:40:06 +02:00
Laurent Fasnacht 486768fc79 scalinglist privatization 2014-04-14 13:39:28 +02:00
Marko Viitanen 4949ffea7d Merge pull request #27 from lfasnacht/add_const
encoder_control should be const in nearly all the code
2014-04-14 12:03:45 +03:00
Laurent Fasnacht 78c579053a encoder_control should be const in nearly all the code 2014-04-14 10:56:06 +02:00
Marko Viitanen 0e7a5057d1 Merge pull request #26 from lfasnacht/warnings_fix
Fix warnings and compile with -Werror
2014-04-14 11:30:37 +03:00
Marko Viitanen 04f09a2bc8 Merge pull request #25 from lfasnacht/memory_bitstream
Changed bitstream handling to allow in-memory bitstream.
2014-04-14 11:29:25 +03:00
Laurent Fasnacht 13398e011b Fix create_bitstream() 2014-04-14 10:23:09 +02:00
Laurent Fasnacht 64f3f57af3 Compile with -Werror 2014-04-14 09:38:37 +02:00
Laurent Fasnacht 89ef1161c4 Fix warnings 2014-04-14 09:37:39 +02:00
Laurent Fasnacht baba299bb8 Obviously a void function cannot return NULL 2014-04-14 09:11:15 +02:00
Marko Viitanen 184ce38755 Merge pull request #24 from lfasnacht/fix_free_exp_golomb_warning
Simple fix
2014-04-14 09:50:36 +03:00
Laurent Fasnacht 418e6eae51 Changed bitstream handling to allow in-memory bitstream. 2014-04-14 08:13:00 +02:00
Laurent Fasnacht 520dbdd86d Change return type of free_exp_golomb to be void, and add it to bitstream.h 2014-04-14 06:41:27 +02:00
Ari Koivula 29787efbbc Fix whitespace.
Fix some whitespace issues from a merge.
2014-04-11 17:06:21 +03:00
Ari Koivula 83d5a4753d Move input resolution to the same line as internal resolution.
The \n must have been left there by accident.
2014-04-11 16:55:08 +03:00
Ari Koivula 0b5c357795 Move all output to stderr.
It has to be in stderr to allow piping bitstream from stdout.
2014-04-11 16:50:59 +03:00
Ari Koivula 115872b300 Add total running time to output. 2014-04-11 12:42:37 +03:00
Marko Viitanen de1c0b7e8d Fixed intra RDO to include mode bitcost 2014-04-10 16:28:41 +03:00
Marko Viitanen a657cf84d9 Insert most probable (predicted) intra modes to RDO search 2014-04-10 15:59:36 +03:00
Marko Viitanen 05169d9476 Added more modes to RDO mode selection in intra search
Now 8 best modes for sizes 4x4 and 8x8 are added to RDO checking and 3 for other block sizes as before, only applies when --rd 2
2014-04-10 15:20:49 +03:00
Ari Koivula 5fa5e01e05 Merge branch 'intra-cleanup'
Conflicts:
	src/intra.c
	src/intra.h
	src/search.c
2014-04-10 13:51:14 +03:00
Ari Koivula 40c2fa4d46 Change intra reconstruction to use the same prediction function as search.
- This fixes a bug with intra search. It sometimes used filtered reference
  pixels for 4x4 blocks leading to inaccurate cost estimate.
2014-04-10 12:09:19 +03:00
Ari Koivula d5c3ad7a2b Move intra prediction generation to its own function. 2014-04-10 11:27:15 +03:00
Ari Koivula 088dd9ab96 Clean up intra mode search.
- This changes the bitstream a little bit, because it changes the order in
  which the modes are tried and when two modes have the same cost the first
  one is chosen.

- Dst buffer was removes as it was no longer used.
2014-04-10 10:25:57 +03:00
Marko Viitanen 43ae0a3b9a Implemented RDO cost calculation to Intra modes 2014-04-10 10:25:20 +03:00
Marko Viitanen c38ec1aa10 Added commandline option for RDO (--rd) 2014-04-09 12:29:15 +03:00
Marko Viitanen 6558c92020 Clean up get_coeff_cost()
Since contexts were moved to cabac struct, there's no need to store contexts one by one
2014-04-09 11:50:17 +03:00
Ari Koivula 92ac5025f9 Take intra mode based coeff scan mode into account for coeff bit cost.
- Previously only diagonal scan mode, the most common one, would be used.

- This improved bdrate by 0.1-0.5 % for p0 and 0-0.2 % for p60.
2014-04-09 10:44:44 +03:00
Ari Koivula c5dfcdf3aa Simplify scan mode selection.
- The scan mode selection for chroma was a bit complicated so I checked it
  and it was all unnecessary. The mode selection is the same as for luma.
2014-04-09 10:36:39 +03:00
Ari Koivula 3764688f84 Fix lambda initialization.
- Lambda was initialized before slice type was set in encoder_control.
2014-04-08 16:58:36 +03:00
Ari Koivula 0251bf5a1a Improve calculation of chroma coding cost for 4x4 blocks.
- Adds calculation of chroma coefficient cost for 4x4 blocks.

- Previously there was no cost. Now the cost is added to the first prediction
  block for NxN.

- This fix should improve bdrate by about 1%.
2014-04-08 12:43:26 +03:00