| OLD | NEW |
| 1 /* | 1 /* |
| 2 * jdmarker.c | 2 * jdmarker.c |
| 3 * | 3 * |
| 4 * Copyright (C) 1991-1998, Thomas G. Lane. | 4 * Copyright (C) 1991-1998, Thomas G. Lane. |
| 5 * This file is part of the Independent JPEG Group's software. | 5 * This file is part of the Independent JPEG Group's software. |
| 6 * For conditions of distribution and use, see the accompanying README file. | 6 * For conditions of distribution and use, see the accompanying README file. |
| 7 * | 7 * |
| 8 * This file contains routines to decode JPEG datastream markers. | 8 * This file contains routines to decode JPEG datastream markers. |
| 9 * Most of the complexity arises from our desire to support input | 9 * Most of the complexity arises from our desire to support input |
| 10 * suspension: if not all of the data for a marker is available, | 10 * suspension: if not all of the data for a marker is available, |
| (...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 ERREXIT1(cinfo, JERR_BAD_COMPONENT_ID, cc); | 335 ERREXIT1(cinfo, JERR_BAD_COMPONENT_ID, cc); |
| 336 | 336 |
| 337 id_found: | 337 id_found: |
| 338 | 338 |
| 339 cinfo->cur_comp_info[i] = compptr; | 339 cinfo->cur_comp_info[i] = compptr; |
| 340 compptr->dc_tbl_no = (c >> 4) & 15; | 340 compptr->dc_tbl_no = (c >> 4) & 15; |
| 341 compptr->ac_tbl_no = (c ) & 15; | 341 compptr->ac_tbl_no = (c ) & 15; |
| 342 | 342 |
| 343 TRACEMS3(cinfo, 1, JTRC_SOS_COMPONENT, cc, | 343 TRACEMS3(cinfo, 1, JTRC_SOS_COMPONENT, cc, |
| 344 compptr->dc_tbl_no, compptr->ac_tbl_no); | 344 compptr->dc_tbl_no, compptr->ac_tbl_no); |
| 345 |
| 346 /* This CSi (cc) should differ from the previous CSi */ |
| 347 for (ci = 0; ci < i; ci++) { |
| 348 if (cinfo->cur_comp_info[ci] == compptr) |
| 349 ERREXIT1(cinfo, JERR_BAD_COMPONENT_ID, cc); |
| 350 } |
| 345 } | 351 } |
| 346 | 352 |
| 347 /* Collect the additional scan parameters Ss, Se, Ah/Al. */ | 353 /* Collect the additional scan parameters Ss, Se, Ah/Al. */ |
| 348 INPUT_BYTE(cinfo, c, return FALSE); | 354 INPUT_BYTE(cinfo, c, return FALSE); |
| 349 cinfo->Ss = c; | 355 cinfo->Ss = c; |
| 350 INPUT_BYTE(cinfo, c, return FALSE); | 356 INPUT_BYTE(cinfo, c, return FALSE); |
| 351 cinfo->Se = c; | 357 cinfo->Se = c; |
| 352 INPUT_BYTE(cinfo, c, return FALSE); | 358 INPUT_BYTE(cinfo, c, return FALSE); |
| 353 cinfo->Ah = (c >> 4) & 15; | 359 cinfo->Ah = (c >> 4) & 15; |
| 354 cinfo->Al = (c ) & 15; | 360 cinfo->Al = (c ) & 15; |
| (...skipping 996 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1351 { | 1357 { |
| 1352 my_marker_ptr marker = (my_marker_ptr) cinfo->marker; | 1358 my_marker_ptr marker = (my_marker_ptr) cinfo->marker; |
| 1353 | 1359 |
| 1354 if (marker_code == (int) M_COM) | 1360 if (marker_code == (int) M_COM) |
| 1355 marker->process_COM = routine; | 1361 marker->process_COM = routine; |
| 1356 else if (marker_code >= (int) M_APP0 && marker_code <= (int) M_APP15) | 1362 else if (marker_code >= (int) M_APP0 && marker_code <= (int) M_APP15) |
| 1357 marker->process_APPn[marker_code - (int) M_APP0] = routine; | 1363 marker->process_APPn[marker_code - (int) M_APP0] = routine; |
| 1358 else | 1364 else |
| 1359 ERREXIT1(cinfo, JERR_UNKNOWN_MARKER, marker_code); | 1365 ERREXIT1(cinfo, JERR_UNKNOWN_MARKER, marker_code); |
| 1360 } | 1366 } |
| OLD | NEW |