Pascal Massimino
31035f3b49
reduce memory usage by allocating only one histo
...
instead of lz77+rle
* introduce VP8LBackwardRefs structure and simplify the code by not passing
around {PixOrCopy/int} pairs.
More functions should be turned into using this struct (TODO(later)).
Change-Id: I69c5c9fa61dddd61a2abc2824d70b8606a1c55b6
2012-05-07 14:25:12 -07:00
Vikas Arora
fbb501b8ee
Restrict histo_bits to ensure histo_image size is under 32MB
...
Change-Id: I75ccb65d56ee060b649de714287e71611a92c8e9
2012-05-07 14:25:10 -07:00
Pascal Massimino
8415ddf3be
further simplification for the meta-Huffman coding
...
* don't transmit the number of Huffman tree group explicitly
* move color-cache information before the meta-Huffman block
* also add a check that color_cache_bits is in [1..11] range, as per spec.
Change-Id: I81d7711068653b509cdbc1151d93e229c4254580
2012-05-07 14:25:07 -07:00
Urvang Joshi
e491729905
A quick pass of cleanup in backward reference code
...
const correctness, renaming, cosmetics etc.
Change-Id: I432befbb22f0eafd9a613f5f632398b6ef03c0f6
2012-05-07 14:25:05 -07:00
Vikas Arora
83332b3c16
Make transform bits a function of encode method (-m).
...
Change-Id: Idc392f7cba6e160ea068eacd7f82be4ebc971eaa
2012-05-07 14:25:03 -07:00
Vikas Arora
c6ac4dfbb4
Run TraceBackwards for higher qualities.
...
Also reduce the iteration count in function VP8LHashChain_FindCopy.
Change-Id: I73e3811e142e81314515587fd655ab3bfa74d099
2012-05-07 14:25:00 -07:00
Vikas Arora
412222c88c
Make histo_bits and transform_bits function of quality.
...
Change-Id: Ic34e40853604811abc63a38e09d6a01961649efc
2012-05-07 14:24:58 -07:00
Urvang Joshi
149b5098a9
Update lossless encoder strategy:
...
Don't use any other transform when using palette.
Change-Id: I488ac546869677f1b6e4eed80e973569c757e997
2012-05-07 14:24:56 -07:00
Urvang Joshi
0e6fa06595
cache_bits passed to EncodeImageInternal()
...
should be 0 when not using color cache.
Change-Id: Id15c9b6bfbeb7c69a0189fa4c411df2763f9dead
2012-05-07 14:24:54 -07:00
Vikas Arora
6f4a16ea00
Removing the indirection of meta-huffman tables.
...
Now, the indexing refers directly to 5 huffman codes that must be encoded
separately.
Change-Id: I92e10ccf8ca464aa7259867d5fae2869343e3b3c
2012-05-07 14:24:51 -07:00
Urvang Joshi
3d33ecd12b
Some renaming/comments related to palette in lossless encoder.
...
Change-Id: Iaab32912f4c31e809d7a49fd748099d8c0c3e7d9
2012-05-07 14:24:49 -07:00
Urvang Joshi
4d02d5863f
Lossless encoder: correction in Palette storage
...
(Essentially, there was no need of a separate 'argb_palette' array. And
argb_palette[0] was never being set).
Change-Id: Id0a8c7e063d3af41e39fc9b8661611b51ccc55cd
2012-05-07 14:24:47 -07:00
Urvang Joshi
4a6362357a
fix a memleak in EncodeImageInternal()
...
Change-Id: I55cd013211f192188b54c694ef0837af0c01b53c
2012-05-07 14:24:45 -07:00
Urvang Joshi
0993a611cd
Full and final fix for prediction transform
...
use (tile_size + 1) rows of scratch area.
Change-Id: I06d612fff1794fc045ba76275e94e7210802c332
2012-05-07 14:24:43 -07:00
Urvang Joshi
b96d8740c9
Need to write a '0' bit at the end of transforms.
...
Also convert an 'if' to 'assert'.
Change-Id: Ia1129ad9ddb027c27b4f4fc1da4bbaf53a0a8f76
2012-05-07 14:24:39 -07:00
Urvang Joshi
54dad7e553
Color cache size should be counted as 0 when cache bits = 0
...
Change-Id: I1d05e0561a92aebaf62162fe11ffc4b12496d698
2012-05-07 14:24:37 -07:00
Urvang Joshi
4f0c5caf67
Fix prediction transform in lossless encoder.
...
(Keep one tile as a scratch buffer).
Change-Id: If112ada29bfd0bdc81b82e849a566b30dd331d2f
2012-05-07 14:24:35 -07:00
Vikas Arora
36dabdadf8
Fix memory leak in method EncodeImageInternal for histogram_image.
...
Change-Id: Ia1cfb96d9e6c120630732e2b5f39688376d1d208
2012-05-07 14:24:33 -07:00
Urvang Joshi
352a4f49ab
Get rid of PackLiteralBitLengths()
...
[and in turn a malloc]. Also, a few related const fixes.
Change-Id: I229519b1c34d41c78d9ad2403f1e25feab3c9d93
2012-05-07 14:24:31 -07:00
Urvang Joshi
b2f99465a7
Fix CopyTileWithPrediction()
...
so that it uses original values of left, top etc for prediction rather than the
predicted values of the same. Also, do some renaming in the same to make it
more readable.
Change-Id: I2fe94e35a6700bd437f5c601e2af12323bf32445
2012-05-07 14:24:27 -07:00
Vikas Arora
84547f540c
Add EncodeImageInternal() method.
...
Most of changes in enc/vp8l.c is cherry-picked from src/lossless/encode.c
Change-Id: I27938cb2590eccbfe1db0a454343e856bd483e75
2012-05-07 14:24:25 -07:00
Urvang Joshi
6b38378acb
Guard the lossless encoder (in flux) under a flag
...
Change-Id: I6dd8fd17089c199001c06b1afde14233dc3e3234
2012-05-07 14:24:23 -07:00
Vikas Arora
09f7532cce
Fix few nits (const qualifiers)
...
Change-Id: I527e82af49956b695ab18625d34e143854067421
2012-05-07 14:24:21 -07:00
Vikas Arora
648be3939f
Added implementation for various lossless functions
...
- VP8LEncAnalyze, EvalAndApplySubtractGreen, ApplyPredictFilter,
ApplyCrossColorFilter
- Added palette handling and transform buffer management in VP8LEncodeImage()
- Add Transforms (subtract Green, Predict, cross_color) to dsp/lossless.c.
These are more-or-less copied from src/lossless code.
After this Change, will implement the EncodeImageInternal() method.
Change-Id: Idf71f803c24b3b5ae3b5079b15e019721784611d
2012-05-07 14:24:19 -07:00
Vikas Arora
32714ce3be
Add VP8L prefix to backward ref & histogram methods.
...
Change-Id: I8c14fb219a1d7830d3244aa780c91c9964867330
2012-05-07 14:24:17 -07:00
Vikas Arora
bc7037465d
Add backward_ref, histogram & huffman encode modules from lossless.
...
Change-Id: Iac056d27972956782defa182caa3ea400cdb77f8
2012-05-07 14:24:14 -07:00
Vikas Arora
fdccaaddcf
Fixing nits
...
- Const Handling of picture object, removed bitwriter from encoder.
Change-Id: Id943854de09324de81cca615ada960390c4b8152
2012-05-07 14:24:12 -07:00
Vikas Arora
227110c4c3
libwebp interface changes for lossless encoding.
...
Change-Id: I703a1a18347acf78378cb23fddc6e5ca6dc6a0bb
2012-05-07 14:24:09 -07:00
Pascal Massimino
50679acf25
minor style fixes
...
Change-Id: I78a6fa19a799c41d6536631f547279692b658c4d
2012-05-04 19:01:11 -07:00
James Zern
39a57dae22
Makefile.am: header file maintenance
...
src/dec/Makefile.am: add missing reference to vp8li.h
src/{dec,dsp,enc}/Makefile.am: move some headers to noinst_
Change-Id: I0e2bc69980bd8175d99ad0ab63f537ef9e425b77
2012-04-23 18:53:48 -07:00
James Zern
2154835f73
Makefile.am: cosmetics
...
- use common file organization across subdir makefiles
- append lib/source/header list variables and sort
Change-Id: I0653e1c73a4552b0c43d21f321b22b4972d6e87b
2012-04-12 15:53:06 -07:00
Pascal Massimino
61c2d51fd7
move the rescaling code into its own file and make enc/ and dec/ use it.
...
(cherry picked from commit 8e92d9e380a89b7443a2e2c3d16ce5a222e8c1e8)
Conflicts:
Android.mk
makefile.unix
src/dec/vp8l.c
src/utils/Makefile.am
2012-03-30 12:16:25 -07:00
Pascal Massimino
5e96a5dbef
add more param checks to WebPPictureDistortion()
...
and use the proper alpha flag too.
Change-Id: I664c6c9dbcc747495bf20b3da95d00e1120b5baf
2012-02-10 02:52:48 -08:00
pascal massimino
8abaf82083
Merge "silence some type size related warnings"
2012-02-09 19:21:39 -08:00
James Zern
1601a39b09
silence some type size related warnings
...
size_t/ptrdiff_t -> uint32_t
Change-Id: Ic4d889b9239752311b9ed906c83076829d850874
2012-02-09 13:00:09 -08:00
James Zern
5081db78be
configure/automake: no -version-info for convenience libs
...
Silences:
libtool: link: warning: `-version-info/-version-number' is ignored for
convenience libraries
Change-Id: I5705383b58f529fb06c2bf0932976b5a202446b6
2012-02-07 18:06:20 -08:00
James Zern
a0b2736d79
cosmetics & warnings
...
- remove some unused functions
- move global arrays from data to read only section
- explicitly cast malloc returns; not specifically necessary, but helps
show intent
- miscellaneous formatting
Change-Id: Ib15fe5b37fe6c29c369ad928bdc3a7290cd13c84
2012-01-30 17:19:53 -08:00
Pascal Massimino
b9600308e8
Merge "store prediction mode array as uint8_t[16], not int[16]."
2012-01-27 07:16:50 -08:00
Pascal Massimino
7b67881a23
store prediction mode array as uint8_t[16], not int[16].
...
This allow faster copy and gives a little bit of speed-up
Change-Id: I5f478229766098630b53b8a4982442fe29290ee6
2012-01-27 03:17:41 -08:00
Pascal Massimino
f76d3587e5
gcc warning fix: remove the 'const' qualifier.
...
Change-Id: I47b8f147f54072cb9b62669efd78c7b958aa5c08
2012-01-25 15:50:24 -08:00
Pascal Massimino
1f7b8595ae
re-organize the error-handling in the main loop a bit
...
Change-Id: Id74298131df9c33a86b989e15c11ffb6d04960d8
2012-01-25 08:34:58 -08:00
Pascal Massimino
1336fa719d
Only recompute level_cost_[] when needed
...
Add a dirty_ flag to keep track of updated probabilities and the need to
recompute the level costs.
This only makes a difference for "-m 2" method which was sub-optimal.
But it's overall cleaner to have this flag.
Change-Id: I21c71201e1d07a923d97a3adf2fbbd7d67d35433
2012-01-25 07:52:34 -08:00
Pascal Massimino
6c14aaddc4
Merge "better token buffer code"
2012-01-23 18:55:11 -08:00
Pascal Massimino
f40542508c
better token buffer code
...
(still not finished, but compiles and works ok)
Change-Id: I7002bf8017e31e7af34a53126072b625d23e2589
2012-01-23 18:54:24 -08:00
Pascal Massimino
0de3096b3a
use 16bit counters for recording proba counts
...
This proved being ok, even for large pictures, provided one
takes care of overflow. When an overflow is bound to occur, the
counters are renormalized.
Overall, shaves ~12k of memory.
Change-Id: I2ba21a407964fe1a34c352371cba15166e0c4548
2012-01-23 17:50:58 -08:00
Pascal Massimino
7f23678da0
fix for LevelCost + little speed-up
...
the p0 proba was incorrectly accumulated. Merging its contribution into
the LevelCost[] was creating more problems than anything (esp. with trellis)
so let's just not.
Change-Id: I4c07bfee471085df901228d97b20a4d9606ba44e
2012-01-23 09:21:17 -08:00
Pascal Massimino
7107d54483
further speed-up/cleanup of RecordCoeffs() and GetResidualCost()
...
(note: Incorporated the cost of bin #1 into the LevelCost[])
Change-Id: I6408b2a822efdb97ad6a3a21d380bc7b0da9c715
2012-01-23 07:01:37 -08:00
Pascal Massimino
fd22104022
Introduce Token buffer (unused for now)
...
Later, will be useful to collect stats and code bitstream in one single pass
Change-Id: Icf866473958b5eff879e219dbb1d7e350f2268ba
2012-01-23 05:57:12 -08:00
Pascal Massimino
5fa148f47c
Merge "speed-up GetResidualCost()"
2012-01-23 02:50:58 -08:00
Pascal Massimino
28a9d9b41a
speed-up GetResidualCost()
...
+ misc cosmetics and code polishing
Change-Id: I5830cd2f268d64c072b1cbccc0a4674833875055
2012-01-23 02:36:38 -08:00