Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 127026 | Differences between
and this patch

Collapse All | Expand All

(-)libopenjpeg/openjpeg.h (+44 lines)
Lines 311-316 Link Here
311
311
312
} opj_cparameters_t;
312
} opj_cparameters_t;
313
313
314
/** Stop after tags. */
315
typedef enum LIMIT_TAGS {
316
	OPJ_TAG_SOC = 0x000001,	/**< start of codestream */
317
	OPJ_TAG_SOT = 0x000002,	/**< start of tile-part*/
318
	OPJ_TAG_SOD = 0x000004,	/**< start of data */
319
	OPJ_TAG_EOC = 0x000008,	/**< end of codestream */
320
	OPJ_TAG_SIZ = 0x000010,	/**< image and tile size */
321
	OPJ_TAG_COD = 0x000020,	/**< coding style default */
322
	OPJ_TAG_COC = 0x000040,	/**< coding style component */
323
	OPJ_TAG_RGN = 0x000080,	/**< region-of-interest */
324
	OPJ_TAG_QCD = 0x000100,	/**< quantization default */
325
	OPJ_TAG_QCC = 0x000200,	/**< quantization component */
326
	OPJ_TAG_POC = 0x000400,	/**< progression order change */
327
	OPJ_TAG_TLM = 0x000800,	/**< tile-part lengths */
328
	OPJ_TAG_PLM = 0x001000,	/**< packet length, main header */
329
	OPJ_TAG_PLT = 0x002000,	/**< packet length, tile-part header */
330
	OPJ_TAG_PPM = 0x004000,	/**< packet packet headers, main header */
331
	OPJ_TAG_PPT = 0x008000,	/**< packet packet headers, tile-part header */
332
	OPJ_TAG_SOP = 0x010000,	/**< SOP marker value */
333
	OPJ_TAG_EPH = 0x020000,	/**< EPH marker value */
334
	OPJ_TAG_CRG = 0x040000,	/**< component registration */
335
	OPJ_TAG_COM = 0x080000,	/**< comment */
336
#ifdef USE_JPWL
337
/* UniPG>> */           
338
	OPJ_TAG_EPC = 0x100000,	/**< EPC marker value (Part11) */
339
	OPJ_TAG_EPB = 0x200000,	/**< EPB marker value (Part11) */
340
	OPJ_TAG_ESD = 0x400000,	/**< ESD marker value (Part11) */
341
	OPJ_TAG_RED = 0x800000,	/**< RED marker value (Part11) */
342
#endif /* USE_JPWL */
343
/* <<UniPG */
344
} OPJ_LIMIT_TAGS;
345
346
/** The needed tags to decode just the size of the image. */
347
#define OPJ_LIMIT_FOR_SIZE (OPJ_LIMIT_TAGS)(OPJ_TAG_SOC | OPJ_TAG_SIZ )
348
314
/**
349
/**
315
Decompression parameters
350
Decompression parameters
316
*/
351
*/
Lines 330-335 Link Here
330
	if == 0 or not used, all the quality layers are decoded 
365
	if == 0 or not used, all the quality layers are decoded 
331
	*/
366
	*/
332
	int cp_layer;
367
	int cp_layer;
368
	/**
369
	Limits the tags that are decoded.
370
	This is a bitwise OR of the tags to be decoded.  If a tag is
371
	encountered that isn't in the list decoding ceases and the function
372
	returns.
373
	if != 0 only the given tags are decoded.
374
	if == 0 all tags are decoded.
375
	*/
376
	OPJ_LIMIT_TAGS cp_limit_tags;
333
377
334
	/**@name command line encoder parameters (not used inside the library) */
378
	/**@name command line encoder parameters (not used inside the library) */
335
	/*@{*/
379
	/*@{*/
(-)libopenjpeg/j2k.c (-24 / +33 lines)
Lines 1342-1378 Link Here
1342
	int states;
1342
	int states;
1343
	/** action linked to the marker */
1343
	/** action linked to the marker */
1344
	void (*handler) (opj_j2k_t *j2k);
1344
	void (*handler) (opj_j2k_t *j2k);
1345
	/** The enum value used to limit decode to specific tags. */
1346
	OPJ_LIMIT_TAGS limit_tag;
1345
} opj_dec_mstabent_t;
1347
} opj_dec_mstabent_t;
1346
1348
1347
opj_dec_mstabent_t j2k_dec_mstab[] = {
1349
opj_dec_mstabent_t j2k_dec_mstab[] = {
1348
  {J2K_MS_SOC, J2K_STATE_MHSOC, j2k_read_soc},
1350
  {J2K_MS_SOC, J2K_STATE_MHSOC, j2k_read_soc, OPJ_TAG_SOC},
1349
  {J2K_MS_SOT, J2K_STATE_MH | J2K_STATE_TPHSOT, j2k_read_sot},
1351
  {J2K_MS_SOT, J2K_STATE_MH | J2K_STATE_TPHSOT, j2k_read_sot, OPJ_TAG_SOT},
1350
  {J2K_MS_SOD, J2K_STATE_TPH, j2k_read_sod},
1352
  {J2K_MS_SOD, J2K_STATE_TPH, j2k_read_sod, OPJ_TAG_SOD},
1351
  {J2K_MS_EOC, J2K_STATE_TPHSOT, j2k_read_eoc},
1353
  {J2K_MS_EOC, J2K_STATE_TPHSOT, j2k_read_eoc, OPJ_TAG_EOC},
1352
  {J2K_MS_SIZ, J2K_STATE_MHSIZ, j2k_read_siz},
1354
  {J2K_MS_SIZ, J2K_STATE_MHSIZ, j2k_read_siz, OPJ_TAG_SIZ},
1353
  {J2K_MS_COD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_cod},
1355
  {J2K_MS_COD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_cod, OPJ_TAG_COD},
1354
  {J2K_MS_COC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_coc},
1356
  {J2K_MS_COC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_coc, OPJ_TAG_COC},
1355
  {J2K_MS_RGN, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_rgn},
1357
  {J2K_MS_RGN, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_rgn, OPJ_TAG_RGN},
1356
  {J2K_MS_QCD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_qcd},
1358
  {J2K_MS_QCD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_qcd, OPJ_TAG_QCD},
1357
  {J2K_MS_QCC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_qcc},
1359
  {J2K_MS_QCC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_qcc, OPJ_TAG_QCC},
1358
  {J2K_MS_POC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_poc},
1360
  {J2K_MS_POC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_poc, OPJ_TAG_POC},
1359
  {J2K_MS_TLM, J2K_STATE_MH, j2k_read_tlm},
1361
  {J2K_MS_TLM, J2K_STATE_MH, j2k_read_tlm, OPJ_TAG_TLM},
1360
  {J2K_MS_PLM, J2K_STATE_MH, j2k_read_plm},
1362
  {J2K_MS_PLM, J2K_STATE_MH, j2k_read_plm, OPJ_TAG_PLM},
1361
  {J2K_MS_PLT, J2K_STATE_TPH, j2k_read_plt},
1363
  {J2K_MS_PLT, J2K_STATE_TPH, j2k_read_plt, OPJ_TAG_PLT},
1362
  {J2K_MS_PPM, J2K_STATE_MH, j2k_read_ppm},
1364
  {J2K_MS_PPM, J2K_STATE_MH, j2k_read_ppm, OPJ_TAG_PPM},
1363
  {J2K_MS_PPT, J2K_STATE_TPH, j2k_read_ppt},
1365
  {J2K_MS_PPT, J2K_STATE_TPH, j2k_read_ppt, OPJ_TAG_PPT},
1364
  {J2K_MS_SOP, 0, 0},
1366
  {J2K_MS_SOP, 0, 0, OPJ_TAG_SOP},
1365
  {J2K_MS_CRG, J2K_STATE_MH, j2k_read_crg},
1367
  {J2K_MS_CRG, J2K_STATE_MH, j2k_read_crg, OPJ_TAG_CRG},
1366
  {J2K_MS_COM, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_com},
1368
  {J2K_MS_COM, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_com, OPJ_TAG_COM},
1367
/* UniPG>> */
1369
/* UniPG>> */
1368
#ifdef USE_JPWL
1370
#ifdef USE_JPWL
1369
  {J2K_MS_EPC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_epc},
1371
  {J2K_MS_EPC, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_epc, OPJ_TAG_EPC},
1370
  {J2K_MS_EPB, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_epb},
1372
  {J2K_MS_EPB, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_epb, OPJ_TAG_EPB},
1371
  {J2K_MS_ESD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_esd},
1373
  {J2K_MS_ESD, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_esd, OPJ_TAG_ESD},
1372
  {J2K_MS_RED, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_red},
1374
  {J2K_MS_RED, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_red, OPJ_TAG_RED},
1373
#endif /* USE_JPWL */
1375
#endif /* USE_JPWL */
1374
/* <<UniPG */
1376
/* <<UniPG */
1375
  {0, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_unk}
1377
  {0, J2K_STATE_MH | J2K_STATE_TPH, j2k_read_unk, -1}
1376
};
1378
};
1377
1379
1378
static void j2k_read_unk(opj_j2k_t *j2k) {
1380
static void j2k_read_unk(opj_j2k_t *j2k) {
Lines 1522-1527 Link Here
1522
		opj_cp_t *cp = (opj_cp_t*)opj_malloc(sizeof(opj_cp_t));
1524
		opj_cp_t *cp = (opj_cp_t*)opj_malloc(sizeof(opj_cp_t));
1523
		cp->reduce = parameters->cp_reduce;	
1525
		cp->reduce = parameters->cp_reduce;	
1524
		cp->layer = parameters->cp_layer;
1526
		cp->layer = parameters->cp_layer;
1527
		cp->limit_tags = parameters->cp_limit_tags;
1525
/* UniPG>> */
1528
/* UniPG>> */
1526
#ifdef USE_JPWL
1529
#ifdef USE_JPWL
1527
		cp->correct = parameters->jpwl_correct;
1530
		cp->correct = parameters->jpwl_correct;
Lines 1599-1604 Link Here
1599
			opj_event_msg(cinfo, EVT_ERROR, "%.8x: unexpected marker %x\n", cio_tell(cio) - 2, id);
1602
			opj_event_msg(cinfo, EVT_ERROR, "%.8x: unexpected marker %x\n", cio_tell(cio) - 2, id);
1600
			return 0;
1603
			return 0;
1601
		}
1604
		}
1605
		/* If a partial decode is requested, stop if the current tag
1606
		 * isn't in the list.
1607
		 */
1608
		if (j2k->cp->limit_tags && !(j2k->cp->limit_tags & e->limit_tag)) {
1609
			return image;
1610
		}
1602
		if (e->handler) {
1611
		if (e->handler) {
1603
			(*e->handler)(j2k);
1612
			(*e->handler)(j2k);
1604
		}
1613
		}
(-)libopenjpeg/j2k.h (+2 lines)
Lines 197-202 Link Here
197
	int reduce;
197
	int reduce;
198
	/** if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers are decoded */
198
	/** if != 0, then only the first "layer" layers are decoded; if == 0 or not used, all the quality layers are decoded */
199
	int layer;
199
	int layer;
200
	/** if != 0, then only decode specific tags, abort on any other; if == 0 decode all tags */
201
	OPJ_LIMIT_TAGS limit_tags;
200
	/** 0 = no index || 1 = index */
202
	/** 0 = no index || 1 = index */
201
	int index_on;
203
	int index_on;
202
	/** XTOsiz */
204
	/** XTOsiz */

Return to bug 127026