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

Side by Side Diff: third_party/libwebp/enc/alpha.c

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
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 // Alpha-plane compression. 10 // Alpha-plane compression.
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 // internal encoding-related image containing necessary exact information in 72 // internal encoding-related image containing necessary exact information in
73 // RGB channels. 73 // RGB channels.
74 config.exact = 1; 74 config.exact = 1;
75 config.method = effort_level; // impact is very small 75 config.method = effort_level; // impact is very small
76 // Set a low default quality for encoding alpha. Ensure that Alpha quality at 76 // Set a low default quality for encoding alpha. Ensure that Alpha quality at
77 // lower methods (3 and below) is less than the threshold for triggering 77 // lower methods (3 and below) is less than the threshold for triggering
78 // costly 'BackwardReferencesTraceBackwards'. 78 // costly 'BackwardReferencesTraceBackwards'.
79 config.quality = 8.f * effort_level; 79 config.quality = 8.f * effort_level;
80 assert(config.quality >= 0 && config.quality <= 100.f); 80 assert(config.quality >= 0 && config.quality <= 100.f);
81 81
82 ok = (VP8LEncodeStream(&config, &picture, bw) == VP8_ENC_OK); 82 // TODO(urvang): Temporary fix to avoid generating images that trigger
83 // a decoder bug related to alpha with color cache.
84 // See: https://code.google.com/p/webp/issues/detail?id=239
85 // Need to re-enable this later.
86 ok = (VP8LEncodeStream(&config, &picture, bw, 0 /*use_cache*/) == VP8_ENC_OK);
83 WebPPictureFree(&picture); 87 WebPPictureFree(&picture);
84 ok = ok && !bw->error_; 88 ok = ok && !bw->error_;
85 if (!ok) { 89 if (!ok) {
86 VP8LBitWriterWipeOut(bw); 90 VP8LBitWriterWipeOut(bw);
87 return 0; 91 return 0;
88 } 92 }
89 return 1; 93 return 1;
90 } 94 }
91 95
92 // ----------------------------------------------------------------------------- 96 // -----------------------------------------------------------------------------
(...skipping 18 matching lines...) Expand all
111 const size_t data_size = width * height; 115 const size_t data_size = width * height;
112 const uint8_t* output = NULL; 116 const uint8_t* output = NULL;
113 size_t output_size = 0; 117 size_t output_size = 0;
114 VP8LBitWriter tmp_bw; 118 VP8LBitWriter tmp_bw;
115 119
116 assert((uint64_t)data_size == (uint64_t)width * height); // as per spec 120 assert((uint64_t)data_size == (uint64_t)width * height); // as per spec
117 assert(filter >= 0 && filter < WEBP_FILTER_LAST); 121 assert(filter >= 0 && filter < WEBP_FILTER_LAST);
118 assert(method >= ALPHA_NO_COMPRESSION); 122 assert(method >= ALPHA_NO_COMPRESSION);
119 assert(method <= ALPHA_LOSSLESS_COMPRESSION); 123 assert(method <= ALPHA_LOSSLESS_COMPRESSION);
120 assert(sizeof(header) == ALPHA_HEADER_LEN); 124 assert(sizeof(header) == ALPHA_HEADER_LEN);
121 // TODO(skal): have a common function and #define's to validate alpha params.
122 125
123 filter_func = WebPFilters[filter]; 126 filter_func = WebPFilters[filter];
124 if (filter_func != NULL) { 127 if (filter_func != NULL) {
125 filter_func(data, width, height, width, tmp_alpha); 128 filter_func(data, width, height, width, tmp_alpha);
126 alpha_src = tmp_alpha; 129 alpha_src = tmp_alpha;
127 } else { 130 } else {
128 alpha_src = data; 131 alpha_src = data;
129 } 132 }
130 133
131 if (method != ALPHA_NO_COMPRESSION) { 134 if (method != ALPHA_NO_COMPRESSION) {
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 ok = WebPGetWorkerInterface()->Sync(worker); 424 ok = WebPGetWorkerInterface()->Sync(worker);
422 // still need to end the worker, even if !ok 425 // still need to end the worker, even if !ok
423 WebPGetWorkerInterface()->End(worker); 426 WebPGetWorkerInterface()->End(worker);
424 } 427 }
425 WebPSafeFree(enc->alpha_data_); 428 WebPSafeFree(enc->alpha_data_);
426 enc->alpha_data_ = NULL; 429 enc->alpha_data_ = NULL;
427 enc->alpha_data_size_ = 0; 430 enc->alpha_data_size_ = 0;
428 enc->has_alpha_ = 0; 431 enc->has_alpha_ = 0;
429 return ok; 432 return ok;
430 } 433 }
OLDNEW
« no previous file with comments | « third_party/libwebp/dsp/yuv_mips_dsp_r2.c ('k') | third_party/libwebp/enc/backward_references.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698