comparison dwt/internal/image/JPEGDecoder.d @ 314:0e2b4fed7a0f

sync dwt/internal/image with dwt-linux
author Frank Benoit <benoit@tionex.de>
date Tue, 07 Oct 2008 14:44:44 +0200
parents fd9c62a2998e
children
comparison
equal deleted inserted replaced
313:fcbee1f66cc3 314:0e2b4fed7a0f
977 } 977 }
978 } 978 }
979 r = s >> 4; 979 r = s >> 4;
980 s &= 15; 980 s &= 15;
981 if (s !is 0) { 981 if (s !is 0) {
982 if (s !is 1) { /* size of new coef should always be 1 */ 982 if (s !is 1) { /* size of new coef should always be 1 */
983 // WARNMS(cinfo, JWRN_HUFF_BAD_CODE); 983 // WARNMS(cinfo, JWRN_HUFF_BAD_CODE);
984 } 984 }
985 // CHECK_BIT_BUFFER(br_state, 1, goto undoit); 985 // CHECK_BIT_BUFFER(br_state, 1, goto undoit);
986 { 986 {
987 if (bits_left < (1)) { 987 if (bits_left < (1)) {
1240 } else { 1240 } else {
1241 if (r is 15) { /* ZRL */ 1241 if (r is 15) { /* ZRL */
1242 k += 15; /* skip 15 zeroes in band */ 1242 k += 15; /* skip 15 zeroes in band */
1243 } else { /* EOBr, run length is 2^r + appended bits */ 1243 } else { /* EOBr, run length is 2^r + appended bits */
1244 EOBRUN = 1 << r; 1244 EOBRUN = 1 << r;
1245 if (r !is 0) { /* EOBr, r > 0 */ 1245 if (r !is 0) { /* EOBr, r > 0 */
1246 // CHECK_BIT_BUFFER(br_state, r, return FALSE); 1246 // CHECK_BIT_BUFFER(br_state, r, return FALSE);
1247 { 1247 {
1248 if (bits_left < (r)) { 1248 if (bits_left < (r)) {
1249 if (! jpeg_fill_bit_buffer(br_state,get_buffer,bits_left,r)) { 1249 if (! jpeg_fill_bit_buffer(br_state,get_buffer,bits_left,r)) {
1250 return false; 1250 return false;
4446 huffval[i] = cinfo.buffer[cinfo.bytes_offset++]; 4446 huffval[i] = cinfo.buffer[cinfo.bytes_offset++];
4447 } 4447 }
4448 4448
4449 length -= count; 4449 length -= count;
4450 4450
4451 if ((index & 0x10) !is 0) { /* AC table definition */ 4451 if ((index & 0x10) !is 0) { /* AC table definition */
4452 index -= 0x10; 4452 index -= 0x10;
4453 htblptr = cinfo.ac_huff_tbl_ptrs[index] = new JHUFF_TBL(); 4453 htblptr = cinfo.ac_huff_tbl_ptrs[index] = new JHUFF_TBL();
4454 } else { /* DC table definition */ 4454 } else { /* DC table definition */
4455 htblptr = cinfo.dc_huff_tbl_ptrs[index] = new JHUFF_TBL(); 4455 htblptr = cinfo.dc_huff_tbl_ptrs[index] = new JHUFF_TBL();
4456 } 4456 }
5235 if (((data[12] & 0xFF) | (data[13]) & 0xFF) !is 0) { 5235 if (((data[12] & 0xFF) | (data[13]) & 0xFF) !is 0) {
5236 // TRACEMS2(cinfo, 1, JTRC_JFIF_THUMBNAIL, 5236 // TRACEMS2(cinfo, 1, JTRC_JFIF_THUMBNAIL,
5237 // GETJOCTET(data[12]), GETJOCTET(data[13])); 5237 // GETJOCTET(data[12]), GETJOCTET(data[13]));
5238 } 5238 }
5239 totallen -= APP0_DATA_LEN; 5239 totallen -= APP0_DATA_LEN;
5240 if (totallen !is ((data[12] & 0xFF) * (data[13] & 0xFF) * 3)) { 5240 if (totallen !is ((data[12] & 0xFF) * (data[13] & 0xFF) * 3)) {
5241 // TRACEMS1(cinfo, 1, JTRC_JFIF_BADTHUMBNAILSIZE, cast(int) totallen); 5241 // TRACEMS1(cinfo, 1, JTRC_JFIF_BADTHUMBNAILSIZE, cast(int) totallen);
5242 } 5242 }
5243 } else if (datalen >= 6 && 5243 } else if (datalen >= 6 &&
5244 (data[0] & 0xFF) is 0x4A && 5244 (data[0] & 0xFF) is 0x4A &&
5245 (data[1] & 0xFF) is 0x46 && 5245 (data[1] & 0xFF) is 0x46 &&