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

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

Issue 2584033003: libwebp-0.5.2-rc2 (Closed)
Patch Set: layout tests Created 3 years, 12 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 // Macroblock analysis 10 // Macroblock analysis
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 i4_alpha = GetAlpha(&total_histo); 300 i4_alpha = GetAlpha(&total_histo);
301 if (IS_BETTER_ALPHA(i4_alpha, best_alpha)) { 301 if (IS_BETTER_ALPHA(i4_alpha, best_alpha)) {
302 VP8SetIntra4Mode(it, modes); 302 VP8SetIntra4Mode(it, modes);
303 best_alpha = i4_alpha; 303 best_alpha = i4_alpha;
304 } 304 }
305 return best_alpha; 305 return best_alpha;
306 } 306 }
307 307
308 static int MBAnalyzeBestUVMode(VP8EncIterator* const it) { 308 static int MBAnalyzeBestUVMode(VP8EncIterator* const it) {
309 int best_alpha = DEFAULT_ALPHA; 309 int best_alpha = DEFAULT_ALPHA;
310 int smallest_alpha = 0;
310 int best_mode = 0; 311 int best_mode = 0;
311 const int max_mode = MAX_UV_MODE; 312 const int max_mode = MAX_UV_MODE;
312 int mode; 313 int mode;
313 314
314 VP8MakeChroma8Preds(it); 315 VP8MakeChroma8Preds(it);
315 for (mode = 0; mode < max_mode; ++mode) { 316 for (mode = 0; mode < max_mode; ++mode) {
316 VP8Histogram histo; 317 VP8Histogram histo;
317 int alpha; 318 int alpha;
318 InitHistogram(&histo); 319 InitHistogram(&histo);
319 VP8CollectHistogram(it->yuv_in_ + U_OFF_ENC, 320 VP8CollectHistogram(it->yuv_in_ + U_OFF_ENC,
320 it->yuv_p_ + VP8UVModeOffsets[mode], 321 it->yuv_p_ + VP8UVModeOffsets[mode],
321 16, 16 + 4 + 4, &histo); 322 16, 16 + 4 + 4, &histo);
322 alpha = GetAlpha(&histo); 323 alpha = GetAlpha(&histo);
323 if (IS_BETTER_ALPHA(alpha, best_alpha)) { 324 if (IS_BETTER_ALPHA(alpha, best_alpha)) {
324 best_alpha = alpha; 325 best_alpha = alpha;
326 }
327 // The best prediction mode tends to be the one with the smallest alpha.
328 if (mode == 0 || alpha < smallest_alpha) {
329 smallest_alpha = alpha;
325 best_mode = mode; 330 best_mode = mode;
326 } 331 }
327 } 332 }
328 VP8SetIntraUVMode(it, best_mode); 333 VP8SetIntraUVMode(it, best_mode);
329 return best_alpha; 334 return best_alpha;
330 } 335 }
331 336
332 static void MBAnalyze(VP8EncIterator* const it, 337 static void MBAnalyze(VP8EncIterator* const it,
333 int alphas[MAX_ALPHA + 1], 338 int alphas[MAX_ALPHA + 1],
334 int* const alpha, int* const uv_alpha) { 339 int* const alpha, int* const uv_alpha) {
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 enc->alpha_ = main_job.alpha / total_mb; 497 enc->alpha_ = main_job.alpha / total_mb;
493 enc->uv_alpha_ = main_job.uv_alpha / total_mb; 498 enc->uv_alpha_ = main_job.uv_alpha / total_mb;
494 AssignSegments(enc, main_job.alphas); 499 AssignSegments(enc, main_job.alphas);
495 } 500 }
496 } else { // Use only one default segment. 501 } else { // Use only one default segment.
497 ResetAllMBInfo(enc); 502 ResetAllMBInfo(enc);
498 } 503 }
499 return ok; 504 return ok;
500 } 505 }
501 506
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698