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

Side by Side Diff: third_party/libwebp/dec/vp8l.c

Issue 653803003: libwebp: update to 0.4.2-rc2 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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/dec/vp8i.h ('k') | third_party/libwebp/demux/demux.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 2012 Google Inc. All Rights Reserved. 1 // Copyright 2012 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 // main entry for the decoder 10 // main entry for the decoder
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 } else { 227 } else {
228 const int length = use_prev ? prev_code_len : 0; 228 const int length = use_prev ? prev_code_len : 0;
229 while (repeat-- > 0) code_lengths[symbol++] = length; 229 while (repeat-- > 0) code_lengths[symbol++] = length;
230 } 230 }
231 } 231 }
232 } 232 }
233 ok = 1; 233 ok = 1;
234 234
235 End: 235 End:
236 VP8LHuffmanTreeFree(&tree); 236 VP8LHuffmanTreeFree(&tree);
237 if (!ok) dec->status_ = VP8_STATUS_BITSTREAM_ERROR;
237 return ok; 238 return ok;
238 } 239 }
239 240
240 // 'code_lengths' is pre-allocated temporary buffer, used for creating Huffman 241 // 'code_lengths' is pre-allocated temporary buffer, used for creating Huffman
241 // tree. 242 // tree.
242 static int ReadHuffmanCode(int alphabet_size, VP8LDecoder* const dec, 243 static int ReadHuffmanCode(int alphabet_size, VP8LDecoder* const dec,
243 int* const code_lengths, int* const huff_codes, 244 int* const code_lengths, int* const huff_codes,
244 HuffmanTree* const tree) { 245 HuffmanTree* const tree) {
245 int ok = 0; 246 int ok = 0;
246 VP8LBitReader* const br = &dec->br_; 247 VP8LBitReader* const br = &dec->br_;
(...skipping 547 matching lines...) Expand 10 before | Expand all | Expand 10 after
794 ExtractPalettedAlphaRows(dec, row); 795 ExtractPalettedAlphaRows(dec, row);
795 } 796 }
796 } 797 }
797 if (pos < last && (col & mask)) { 798 if (pos < last && (col & mask)) {
798 htree_group = GetHtreeGroupForPos(hdr, col, row); 799 htree_group = GetHtreeGroupForPos(hdr, col, row);
799 } 800 }
800 } else { // Not reached 801 } else { // Not reached
801 ok = 0; 802 ok = 0;
802 goto End; 803 goto End;
803 } 804 }
805 assert(br->eos_ == VP8LIsEndOfStream(br));
804 ok = !br->error_; 806 ok = !br->error_;
805 if (!ok) goto End; 807 if (!ok) goto End;
806 } 808 }
807 // Process the remaining rows corresponding to last row-block. 809 // Process the remaining rows corresponding to last row-block.
808 ExtractPalettedAlphaRows(dec, row); 810 ExtractPalettedAlphaRows(dec, row);
809 811
810 End: 812 End:
811 if (br->error_ || !ok || (br->eos_ && pos < end)) { 813 if (br->error_ || !ok || (br->eos_ && pos < end)) {
812 ok = 0; 814 ok = 0;
813 dec->status_ = br->eos_ ? VP8_STATUS_SUSPENDED 815 dec->status_ = br->eos_ ? VP8_STATUS_SUSPENDED
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
911 assert(color_cache != NULL); 913 assert(color_cache != NULL);
912 while (last_cached < src) { 914 while (last_cached < src) {
913 VP8LColorCacheInsert(color_cache, *last_cached++); 915 VP8LColorCacheInsert(color_cache, *last_cached++);
914 } 916 }
915 *src = VP8LColorCacheLookup(color_cache, key); 917 *src = VP8LColorCacheLookup(color_cache, key);
916 goto AdvanceByOne; 918 goto AdvanceByOne;
917 } else { // Not reached 919 } else { // Not reached
918 ok = 0; 920 ok = 0;
919 goto End; 921 goto End;
920 } 922 }
923 assert(br->eos_ == VP8LIsEndOfStream(br));
921 ok = !br->error_; 924 ok = !br->error_;
922 if (!ok) goto End; 925 if (!ok) goto End;
923 } 926 }
924 // Process the remaining rows corresponding to last row-block. 927 // Process the remaining rows corresponding to last row-block.
925 if (process_func != NULL) process_func(dec, row); 928 if (process_func != NULL) process_func(dec, row);
926 929
927 End: 930 End:
928 if (br->error_ || !ok || (br->eos_ && src < src_end)) { 931 if (br->error_ || !ok || (br->eos_ && src < src_end)) {
929 ok = 0; 932 ok = 0;
930 dec->status_ = br->eos_ ? VP8_STATUS_SUSPENDED 933 dec->status_ = br->eos_ ? VP8_STATUS_SUSPENDED
(...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after
1347 return 0; 1350 return 0;
1348 } 1351 }
1349 1352
1350 int VP8LDecodeImage(VP8LDecoder* const dec) { 1353 int VP8LDecodeImage(VP8LDecoder* const dec) {
1351 VP8Io* io = NULL; 1354 VP8Io* io = NULL;
1352 WebPDecParams* params = NULL; 1355 WebPDecParams* params = NULL;
1353 1356
1354 // Sanity checks. 1357 // Sanity checks.
1355 if (dec == NULL) return 0; 1358 if (dec == NULL) return 0;
1356 1359
1360 dec->status_ = VP8_STATUS_BITSTREAM_ERROR;
1361 assert(dec->hdr_.htree_groups_ != NULL);
1362 assert(dec->hdr_.num_htree_groups_ > 0);
1363
1357 io = dec->io_; 1364 io = dec->io_;
1358 assert(io != NULL); 1365 assert(io != NULL);
1359 params = (WebPDecParams*)io->opaque; 1366 params = (WebPDecParams*)io->opaque;
1360 assert(params != NULL); 1367 assert(params != NULL);
1361 dec->output_ = params->output; 1368 dec->output_ = params->output;
1362 assert(dec->output_ != NULL); 1369 assert(dec->output_ != NULL);
1363 1370
1364 // Initialization. 1371 // Initialization.
1365 if (!WebPIoInitFromOptions(params->options, io, MODE_BGRA)) { 1372 if (!WebPIoInitFromOptions(params->options, io, MODE_BGRA)) {
1366 dec->status_ = VP8_STATUS_INVALID_PARAM; 1373 dec->status_ = VP8_STATUS_INVALID_PARAM;
(...skipping 21 matching lines...) Expand all
1388 VP8LClear(dec); 1395 VP8LClear(dec);
1389 return 1; 1396 return 1;
1390 1397
1391 Err: 1398 Err:
1392 VP8LClear(dec); 1399 VP8LClear(dec);
1393 assert(dec->status_ != VP8_STATUS_OK); 1400 assert(dec->status_ != VP8_STATUS_OK);
1394 return 0; 1401 return 0;
1395 } 1402 }
1396 1403
1397 //------------------------------------------------------------------------------ 1404 //------------------------------------------------------------------------------
OLDNEW
« no previous file with comments | « third_party/libwebp/dec/vp8i.h ('k') | third_party/libwebp/demux/demux.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698