Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Side by Side Diff: third_party/libwebp/enc/vp8enci.h

Issue 2149863002: libwebp: update to v0.5.1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/libwebp/enc/quant.c ('k') | third_party/libwebp/enc/vp8l.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 Google Inc. All Rights Reserved. 1 // Copyright 2011 Google Inc. All Rights Reserved.
2 // 2 //
3 // Use of this source code is governed by a BSD-style license 3 // Use of this source code is governed by a BSD-style license
4 // that can be found in the COPYING file in the root of the source 4 // that can be found in the COPYING file in the root of the source
5 // tree. An additional intellectual property rights grant can be found 5 // tree. An additional intellectual property rights grant can be found
6 // in the file PATENTS. All contributing project authors may 6 // in the file PATENTS. All contributing project authors may
7 // be found in the AUTHORS file in the root of the source tree. 7 // be found in the AUTHORS file in the root of the source tree.
8 // ----------------------------------------------------------------------------- 8 // -----------------------------------------------------------------------------
9 // 9 //
10 // WebP encoder: internal header. 10 // WebP encoder: internal header.
11 // 11 //
12 // Author: Skal (pascal.massimino@gmail.com) 12 // Author: Skal (pascal.massimino@gmail.com)
13 13
14 #ifndef WEBP_ENC_VP8ENCI_H_ 14 #ifndef WEBP_ENC_VP8ENCI_H_
15 #define WEBP_ENC_VP8ENCI_H_ 15 #define WEBP_ENC_VP8ENCI_H_
16 16
17 #include <string.h> // for memcpy() 17 #include <string.h> // for memcpy()
18 #include "../dec/common.h" 18 #include "../dec/common.h"
19 #include "../dsp/dsp.h" 19 #include "../dsp/dsp.h"
20 #include "../utils/bit_writer.h" 20 #include "../utils/bit_writer.h"
21 #include "../utils/thread.h" 21 #include "../utils/thread.h"
22 #include "../utils/utils.h" 22 #include "../utils/utils.h"
23 #include "../webp/encode.h" 23 #include "../webp/encode.h"
24 24
25 #ifdef WEBP_EXPERIMENTAL_FEATURES
26 #include "./vp8li.h"
27 #endif // WEBP_EXPERIMENTAL_FEATURES
28
29 #ifdef __cplusplus 25 #ifdef __cplusplus
30 extern "C" { 26 extern "C" {
31 #endif 27 #endif
32 28
33 //------------------------------------------------------------------------------ 29 //------------------------------------------------------------------------------
34 // Various defines and enums 30 // Various defines and enums
35 31
36 // version numbers 32 // version numbers
37 #define ENC_MAJ_VERSION 0 33 #define ENC_MAJ_VERSION 0
38 #define ENC_MIN_VERSION 5 34 #define ENC_MIN_VERSION 5
39 #define ENC_REV_VERSION 0 35 #define ENC_REV_VERSION 1
40 36
41 enum { MAX_LF_LEVELS = 64, // Maximum loop filter level 37 enum { MAX_LF_LEVELS = 64, // Maximum loop filter level
42 MAX_VARIABLE_LEVEL = 67, // last (inclusive) level with variable cost 38 MAX_VARIABLE_LEVEL = 67, // last (inclusive) level with variable cost
43 MAX_LEVEL = 2047 // max level (note: max codable is 2047 + 67) 39 MAX_LEVEL = 2047 // max level (note: max codable is 2047 + 67)
44 }; 40 };
45 41
46 typedef enum { // Rate-distortion optimization levels 42 typedef enum { // Rate-distortion optimization levels
47 RD_OPT_NONE = 0, // no rd-opt 43 RD_OPT_NONE = 0, // no rd-opt
48 RD_OPT_BASIC = 1, // basic scoring (no trellis) 44 RD_OPT_BASIC = 1, // basic scoring (no trellis)
49 RD_OPT_TRELLIS = 2, // perform trellis-quant on the final decision only 45 RD_OPT_TRELLIS = 2, // perform trellis-quant on the final decision only
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 // Lower values indicate a lower risk of blurriness. 189 // Lower values indicate a lower risk of blurriness.
194 int beta_; // filter-susceptibility, range [0,255]. 190 int beta_; // filter-susceptibility, range [0,255].
195 int quant_; // final segment quantizer. 191 int quant_; // final segment quantizer.
196 int fstrength_; // final in-loop filtering strength 192 int fstrength_; // final in-loop filtering strength
197 int max_edge_; // max edge delta (for filtering strength) 193 int max_edge_; // max edge delta (for filtering strength)
198 int min_disto_; // minimum distortion required to trigger filtering record 194 int min_disto_; // minimum distortion required to trigger filtering record
199 // reactivities 195 // reactivities
200 int lambda_i16_, lambda_i4_, lambda_uv_; 196 int lambda_i16_, lambda_i4_, lambda_uv_;
201 int lambda_mode_, lambda_trellis_, tlambda_; 197 int lambda_mode_, lambda_trellis_, tlambda_;
202 int lambda_trellis_i16_, lambda_trellis_i4_, lambda_trellis_uv_; 198 int lambda_trellis_i16_, lambda_trellis_i4_, lambda_trellis_uv_;
199
200 // lambda values for distortion-based evaluation
201 score_t i4_penalty_; // penalty for using Intra4
203 } VP8SegmentInfo; 202 } VP8SegmentInfo;
204 203
205 // Handy transient struct to accumulate score and info during RD-optimization 204 // Handy transient struct to accumulate score and info during RD-optimization
206 // and mode evaluation. 205 // and mode evaluation.
207 typedef struct { 206 typedef struct {
208 score_t D, SD; // Distortion, spectral distortion 207 score_t D, SD; // Distortion, spectral distortion
209 score_t H, R, score; // header bits, rate, score. 208 score_t H, R, score; // header bits, rate, score.
210 int16_t y_dc_levels[16]; // Quantized levels for luma-DC, luma-AC, chroma. 209 int16_t y_dc_levels[16]; // Quantized levels for luma-DC, luma-AC, chroma.
211 int16_t y_ac_levels[16][16]; 210 int16_t y_ac_levels[16][16];
212 int16_t uv_levels[4 + 4][16]; 211 int16_t uv_levels[4 + 4][16];
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 uint64_t sse_[4]; // sum of Y/U/V/A squared errors for all macroblocks 387 uint64_t sse_[4]; // sum of Y/U/V/A squared errors for all macroblocks
389 uint64_t sse_count_; // pixel count for the sse_[] stats 388 uint64_t sse_count_; // pixel count for the sse_[] stats
390 int coded_size_; 389 int coded_size_;
391 int residual_bytes_[3][4]; 390 int residual_bytes_[3][4];
392 int block_count_[3]; 391 int block_count_[3];
393 392
394 // quality/speed settings 393 // quality/speed settings
395 int method_; // 0=fastest, 6=best/slowest. 394 int method_; // 0=fastest, 6=best/slowest.
396 VP8RDLevel rd_opt_level_; // Deduced from method_. 395 VP8RDLevel rd_opt_level_; // Deduced from method_.
397 int max_i4_header_bits_; // partition #0 safeness factor 396 int max_i4_header_bits_; // partition #0 safeness factor
397 int mb_header_limit_; // rough limit for header bits per MB
398 int thread_level_; // derived from config->thread_level 398 int thread_level_; // derived from config->thread_level
399 int do_search_; // derived from config->target_XXX 399 int do_search_; // derived from config->target_XXX
400 int use_tokens_; // if true, use token buffer 400 int use_tokens_; // if true, use token buffer
401 401
402 // Memory 402 // Memory
403 VP8MBInfo* mb_info_; // contextual macroblock infos (mb_w_ + 1) 403 VP8MBInfo* mb_info_; // contextual macroblock infos (mb_w_ + 1)
404 uint8_t* preds_; // predictions modes: (4*mb_w+1) * (4*mb_h+1) 404 uint8_t* preds_; // predictions modes: (4*mb_w+1) * (4*mb_h+1)
405 uint32_t* nz_; // non-zero bit context: mb_w+1 405 uint32_t* nz_; // non-zero bit context: mb_w+1
406 uint8_t* y_top_; // top luma samples. 406 uint8_t* y_top_; // top luma samples.
407 uint8_t* uv_top_; // top u/v samples. 407 uint8_t* uv_top_; // top u/v samples.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 int VP8Decimate(VP8EncIterator* const it, VP8ModeScore* const rd, 470 int VP8Decimate(VP8EncIterator* const it, VP8ModeScore* const rd,
471 VP8RDLevel rd_opt); 471 VP8RDLevel rd_opt);
472 472
473 // in alpha.c 473 // in alpha.c
474 void VP8EncInitAlpha(VP8Encoder* const enc); // initialize alpha compression 474 void VP8EncInitAlpha(VP8Encoder* const enc); // initialize alpha compression
475 int VP8EncStartAlpha(VP8Encoder* const enc); // start alpha coding process 475 int VP8EncStartAlpha(VP8Encoder* const enc); // start alpha coding process
476 int VP8EncFinishAlpha(VP8Encoder* const enc); // finalize compressed data 476 int VP8EncFinishAlpha(VP8Encoder* const enc); // finalize compressed data
477 int VP8EncDeleteAlpha(VP8Encoder* const enc); // delete compressed data 477 int VP8EncDeleteAlpha(VP8Encoder* const enc); // delete compressed data
478 478
479 // in filter.c 479 // in filter.c
480 480 void VP8SSIMAddStats(const VP8DistoStats* const src, VP8DistoStats* const dst);
481 // SSIM utils
482 typedef struct {
483 double w, xm, ym, xxm, xym, yym;
484 } DistoStats;
485 void VP8SSIMAddStats(const DistoStats* const src, DistoStats* const dst);
486 void VP8SSIMAccumulatePlane(const uint8_t* src1, int stride1, 481 void VP8SSIMAccumulatePlane(const uint8_t* src1, int stride1,
487 const uint8_t* src2, int stride2, 482 const uint8_t* src2, int stride2,
488 int W, int H, DistoStats* const stats); 483 int W, int H, VP8DistoStats* const stats);
489 double VP8SSIMGet(const DistoStats* const stats); 484 double VP8SSIMGet(const VP8DistoStats* const stats);
490 double VP8SSIMGetSquaredError(const DistoStats* const stats); 485 double VP8SSIMGetSquaredError(const VP8DistoStats* const stats);
491 486
492 // autofilter 487 // autofilter
493 void VP8InitFilter(VP8EncIterator* const it); 488 void VP8InitFilter(VP8EncIterator* const it);
494 void VP8StoreFilterStats(VP8EncIterator* const it); 489 void VP8StoreFilterStats(VP8EncIterator* const it);
495 void VP8AdjustFilterStrength(VP8EncIterator* const it); 490 void VP8AdjustFilterStrength(VP8EncIterator* const it);
496 491
497 // returns the approximate filtering strength needed to smooth a edge 492 // returns the approximate filtering strength needed to smooth a edge
498 // step of 'delta', given a sharpness parameter 'sharpness'. 493 // step of 'delta', given a sharpness parameter 'sharpness'.
499 int VP8FilterStrengthFromDelta(int sharpness, int delta); 494 int VP8FilterStrengthFromDelta(int sharpness, int delta);
500 495
(...skipping 26 matching lines...) Expand all
527 uint32_t* argb, uint32_t* argb_scratch, 522 uint32_t* argb, uint32_t* argb_scratch,
528 const uint32_t* const transform_data, 523 const uint32_t* const transform_data,
529 int quality, int subtract_green); 524 int quality, int subtract_green);
530 //------------------------------------------------------------------------------ 525 //------------------------------------------------------------------------------
531 526
532 #ifdef __cplusplus 527 #ifdef __cplusplus
533 } // extern "C" 528 } // extern "C"
534 #endif 529 #endif
535 530
536 #endif /* WEBP_ENC_VP8ENCI_H_ */ 531 #endif /* WEBP_ENC_VP8ENCI_H_ */
OLDNEW
« no previous file with comments | « third_party/libwebp/enc/quant.c ('k') | third_party/libwebp/enc/vp8l.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698