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

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

Issue 116213006: Update libwebp to 0.4.0 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: After Blink Roll Created 6 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « third_party/libwebp/enc/token.c ('k') | third_party/libwebp/enc/vp8enci.h » ('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 // Token probabilities 10 // Coding of token probabilities, intra modes and segments.
11 // 11 //
12 // Author: Skal (pascal.massimino@gmail.com) 12 // Author: Skal (pascal.massimino@gmail.com)
13 13
14 #include "./vp8enci.h" 14 #include "./vp8enci.h"
15 15
16 #if defined(__cplusplus) || defined(c_plusplus)
17 extern "C" {
18 #endif
19
20 //------------------------------------------------------------------------------ 16 //------------------------------------------------------------------------------
21 // Default probabilities 17 // Default probabilities
22 18
23 // Paragraph 13.5 19 // Paragraph 13.5
24 const uint8_t 20 const uint8_t
25 VP8CoeffsProba0[NUM_TYPES][NUM_BANDS][NUM_CTX][NUM_PROBAS] = { 21 VP8CoeffsProba0[NUM_TYPES][NUM_BANDS][NUM_CTX][NUM_PROBAS] = {
26 // genereated using vp8_default_coef_probs() in entropy.c:129
27 { { { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }, 22 { { { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
28 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }, 23 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
29 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 } 24 { 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
30 }, 25 },
31 { { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 }, 26 { { 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 },
32 { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 }, 27 { 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 },
33 { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 } 28 { 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 }
34 }, 29 },
35 { { 1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128 }, 30 { { 1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128 },
36 { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 }, 31 { 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 },
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 static void PutSegment(VP8BitWriter* const bw, int s, const uint8_t* p) { 308 static void PutSegment(VP8BitWriter* const bw, int s, const uint8_t* p) {
314 if (VP8PutBit(bw, s >= 2, p[0])) p += 1; 309 if (VP8PutBit(bw, s >= 2, p[0])) p += 1;
315 VP8PutBit(bw, s & 1, p[1]); 310 VP8PutBit(bw, s & 1, p[1]);
316 } 311 }
317 312
318 void VP8CodeIntraModes(VP8Encoder* const enc) { 313 void VP8CodeIntraModes(VP8Encoder* const enc) {
319 VP8BitWriter* const bw = &enc->bw_; 314 VP8BitWriter* const bw = &enc->bw_;
320 VP8EncIterator it; 315 VP8EncIterator it;
321 VP8IteratorInit(enc, &it); 316 VP8IteratorInit(enc, &it);
322 do { 317 do {
323 const VP8MBInfo* mb = it.mb_; 318 const VP8MBInfo* const mb = it.mb_;
324 const uint8_t* preds = it.preds_; 319 const uint8_t* preds = it.preds_;
325 if (enc->segment_hdr_.update_map_) { 320 if (enc->segment_hdr_.update_map_) {
326 PutSegment(bw, mb->segment_, enc->proba_.segments_); 321 PutSegment(bw, mb->segment_, enc->proba_.segments_);
327 } 322 }
328 if (enc->proba_.use_skip_proba_) { 323 if (enc->proba_.use_skip_proba_) {
329 VP8PutBit(bw, mb->skip_, enc->proba_.skip_proba_); 324 VP8PutBit(bw, mb->skip_, enc->proba_.skip_proba_);
330 } 325 }
331 if (VP8PutBit(bw, (mb->type_ != 0), 145)) { // i16x16 326 if (VP8PutBit(bw, (mb->type_ != 0), 145)) { // i16x16
332 PutI16Mode(bw, preds[0]); 327 PutI16Mode(bw, preds[0]);
333 } else { 328 } else {
334 const int preds_w = enc->preds_w_; 329 const int preds_w = enc->preds_w_;
335 const uint8_t* top_pred = preds - preds_w; 330 const uint8_t* top_pred = preds - preds_w;
336 int x, y; 331 int x, y;
337 for (y = 0; y < 4; ++y) { 332 for (y = 0; y < 4; ++y) {
338 int left = preds[-1]; 333 int left = preds[-1];
339 for (x = 0; x < 4; ++x) { 334 for (x = 0; x < 4; ++x) {
340 const uint8_t* const probas = kBModesProba[top_pred[x]][left]; 335 const uint8_t* const probas = kBModesProba[top_pred[x]][left];
341 left = PutI4Mode(bw, preds[x], probas); 336 left = PutI4Mode(bw, preds[x], probas);
342 } 337 }
343 top_pred = preds; 338 top_pred = preds;
344 preds += preds_w; 339 preds += preds_w;
345 } 340 }
346 } 341 }
347 PutUVMode(bw, mb->uv_mode_); 342 PutUVMode(bw, mb->uv_mode_);
348 } while (VP8IteratorNext(&it, 0)); 343 } while (VP8IteratorNext(&it));
349 } 344 }
350 345
351 //------------------------------------------------------------------------------ 346 //------------------------------------------------------------------------------
352 // Paragraph 13 347 // Paragraph 13
353 348
354 const uint8_t 349 const uint8_t
355 VP8CoeffsUpdateProba[NUM_TYPES][NUM_BANDS][NUM_CTX][NUM_PROBAS] = { 350 VP8CoeffsUpdateProba[NUM_TYPES][NUM_BANDS][NUM_CTX][NUM_PROBAS] = {
356 { { { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 351 { { { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
357 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }, 352 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 },
358 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 } 353 { 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 } 495 }
501 } 496 }
502 } 497 }
503 } 498 }
504 } 499 }
505 if (VP8PutBitUniform(bw, probas->use_skip_proba_)) { 500 if (VP8PutBitUniform(bw, probas->use_skip_proba_)) {
506 VP8PutValue(bw, probas->skip_proba_, 8); 501 VP8PutValue(bw, probas->skip_proba_, 8);
507 } 502 }
508 } 503 }
509 504
510 #if defined(__cplusplus) || defined(c_plusplus)
511 } // extern "C"
512 #endif
OLDNEW
« no previous file with comments | « third_party/libwebp/enc/token.c ('k') | third_party/libwebp/enc/vp8enci.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698