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

Side by Side Diff: jdarith.c

Issue 1258673007: Add jpeg_skip_scanlines() API to libjpeg-turbo (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git@master
Patch Set: Updating google.patch Created 5 years, 4 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 | « jdapistd.c ('k') | jdcoefct.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 /* 1 /*
2 * jdarith.c 2 * jdarith.c
3 * 3 *
4 * This file is part of the Independent JPEG Group's software:
4 * Developed 1997-2009 by Guido Vollbeding. 5 * Developed 1997-2009 by Guido Vollbeding.
5 * This file is part of the Independent JPEG Group's software. 6 * libjpeg-turbo Modifications:
7 * Copyright (C) 2015, D. R. Commander.
6 * For conditions of distribution and use, see the accompanying README file. 8 * For conditions of distribution and use, see the accompanying README file.
7 * 9 *
8 * This file contains portable arithmetic entropy decoding routines for JPEG 10 * This file contains portable arithmetic entropy decoding routines for JPEG
9 * (implementing the ISO/IEC IS 10918-1 and CCITT Recommendation ITU-T T.81). 11 * (implementing the ISO/IEC IS 10918-1 and CCITT Recommendation ITU-T T.81).
10 * 12 *
11 * Both sequential and progressive modes are supported in this single module. 13 * Both sequential and progressive modes are supported in this single module.
12 * 14 *
13 * Suspension is not currently supported in this module. 15 * Suspension is not currently supported in this module.
14 */ 16 */
15 17
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 if (entropy->restarts_to_go == 0) 509 if (entropy->restarts_to_go == 0)
508 process_restart(cinfo); 510 process_restart(cinfo);
509 entropy->restarts_to_go--; 511 entropy->restarts_to_go--;
510 } 512 }
511 513
512 if (entropy->ct == -1) return TRUE; /* if error do nothing */ 514 if (entropy->ct == -1) return TRUE; /* if error do nothing */
513 515
514 /* Outer loop handles each block in the MCU */ 516 /* Outer loop handles each block in the MCU */
515 517
516 for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) { 518 for (blkn = 0; blkn < cinfo->blocks_in_MCU; blkn++) {
517 block = MCU_data[blkn]; 519 block = MCU_data ? MCU_data[blkn] : NULL;
518 ci = cinfo->MCU_membership[blkn]; 520 ci = cinfo->MCU_membership[blkn];
519 compptr = cinfo->cur_comp_info[ci]; 521 compptr = cinfo->cur_comp_info[ci];
520 522
521 /* Sections F.2.4.1 & F.1.4.4.1: Decoding of DC coefficients */ 523 /* Sections F.2.4.1 & F.1.4.4.1: Decoding of DC coefficients */
522 524
523 tbl = compptr->dc_tbl_no; 525 tbl = compptr->dc_tbl_no;
524 526
525 /* Table F.4: Point to statistics bin S0 for DC coefficient coding */ 527 /* Table F.4: Point to statistics bin S0 for DC coefficient coding */
526 st = entropy->dc_stats[tbl] + entropy->dc_context[ci]; 528 st = entropy->dc_stats[tbl] + entropy->dc_context[ci];
527 529
(...skipping 26 matching lines...) Expand all
554 entropy->dc_context[ci] = 4 + (sign * 4); /* small diff category */ 556 entropy->dc_context[ci] = 4 + (sign * 4); /* small diff category */
555 v = m; 557 v = m;
556 /* Figure F.24: Decoding the magnitude bit pattern of v */ 558 /* Figure F.24: Decoding the magnitude bit pattern of v */
557 st += 14; 559 st += 14;
558 while (m >>= 1) 560 while (m >>= 1)
559 if (arith_decode(cinfo, st)) v |= m; 561 if (arith_decode(cinfo, st)) v |= m;
560 v += 1; if (sign) v = -v; 562 v += 1; if (sign) v = -v;
561 entropy->last_dc_val[ci] += v; 563 entropy->last_dc_val[ci] += v;
562 } 564 }
563 565
564 (*block)[0] = (JCOEF) entropy->last_dc_val[ci]; 566 if (block)
567 (*block)[0] = (JCOEF) entropy->last_dc_val[ci];
565 568
566 /* Sections F.2.4.2 & F.1.4.4.2: Decoding of AC coefficients */ 569 /* Sections F.2.4.2 & F.1.4.4.2: Decoding of AC coefficients */
567 570
568 tbl = compptr->ac_tbl_no; 571 tbl = compptr->ac_tbl_no;
569 572
570 /* Figure F.20: Decode_AC_coefficients */ 573 /* Figure F.20: Decode_AC_coefficients */
571 for (k = 1; k <= DCTSIZE2 - 1; k++) { 574 for (k = 1; k <= DCTSIZE2 - 1; k++) {
572 st = entropy->ac_stats[tbl] + 3 * (k - 1); 575 st = entropy->ac_stats[tbl] + 3 * (k - 1);
573 if (arith_decode(cinfo, st)) break; /* EOB flag */ 576 if (arith_decode(cinfo, st)) break; /* EOB flag */
574 while (arith_decode(cinfo, st + 1) == 0) { 577 while (arith_decode(cinfo, st + 1) == 0) {
(...skipping 23 matching lines...) Expand all
598 st += 1; 601 st += 1;
599 } 602 }
600 } 603 }
601 } 604 }
602 v = m; 605 v = m;
603 /* Figure F.24: Decoding the magnitude bit pattern of v */ 606 /* Figure F.24: Decoding the magnitude bit pattern of v */
604 st += 14; 607 st += 14;
605 while (m >>= 1) 608 while (m >>= 1)
606 if (arith_decode(cinfo, st)) v |= m; 609 if (arith_decode(cinfo, st)) v |= m;
607 v += 1; if (sign) v = -v; 610 v += 1; if (sign) v = -v;
608 (*block)[jpeg_natural_order[k]] = (JCOEF) v; 611 if (block)
612 (*block)[jpeg_natural_order[k]] = (JCOEF) v;
609 } 613 }
610 } 614 }
611 615
612 return TRUE; 616 return TRUE;
613 } 617 }
614 618
615 619
616 /* 620 /*
617 * Initialize for an arithmetic-compressed scan. 621 * Initialize for an arithmetic-compressed scan.
618 */ 622 */
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
752 int *coef_bit_ptr, ci; 756 int *coef_bit_ptr, ci;
753 cinfo->coef_bits = (int (*)[DCTSIZE2]) 757 cinfo->coef_bits = (int (*)[DCTSIZE2])
754 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE, 758 (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_IMAGE,
755 cinfo->num_components*DCTSIZE2*SIZEOF(int)); 759 cinfo->num_components*DCTSIZE2*SIZEOF(int));
756 coef_bit_ptr = & cinfo->coef_bits[0][0]; 760 coef_bit_ptr = & cinfo->coef_bits[0][0];
757 for (ci = 0; ci < cinfo->num_components; ci++) 761 for (ci = 0; ci < cinfo->num_components; ci++)
758 for (i = 0; i < DCTSIZE2; i++) 762 for (i = 0; i < DCTSIZE2; i++)
759 *coef_bit_ptr++ = -1; 763 *coef_bit_ptr++ = -1;
760 } 764 }
761 } 765 }
OLDNEW
« no previous file with comments | « jdapistd.c ('k') | jdcoefct.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698