diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c index 7b8a9aa987..0371773e47 100644 --- a/libavcodec/jpeg2000dec.c +++ b/libavcodec/jpeg2000dec.c @@ -123,7 +123,7 @@ static int tag_tree_decode(Jpeg2000DecoderContext *s, Jpeg2000TgtNode *node, int sp = -1, curval = 0; if (!node) - return AVERROR(EINVAL); + return AVERROR_INVALIDDATA; while (node && !node->vis) { stack[++sp] = node; @@ -508,8 +508,8 @@ static int get_sot(Jpeg2000DecoderContext *s, int n) return AVERROR_PATCHWELCOME; } - s->tile[s->curtileno].tp_idx = TPsot; - tp = s->tile[s->curtileno].tile_part + TPsot; + s->tile[Isot].tp_idx = TPsot; + tp = s->tile[Isot].tile_part + TPsot; tp->tile_index = Isot; tp->tp_end = s->g.buffer + Psot - n - 2; @@ -720,13 +720,16 @@ static int jpeg2000_decode_packet(Jpeg2000DecoderContext *s, static int jpeg2000_decode_packets(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile) { - int layno, reslevelno, compno, precno, ok_reslevel, ret; + int ret = 0; + int layno, reslevelno, compno, precno, ok_reslevel; int x, y; s->bit_index = 8; switch (tile->codsty[0].prog_order) { - case JPEG2000_PGOD_LRCP: case JPEG2000_PGOD_RLCP: + avpriv_request_sample(s->avctx, "Progression order RLCP"); + + case JPEG2000_PGOD_LRCP: for (layno = 0; layno < tile->codsty[0].nlayers; layno++) { ok_reslevel = 1; for (reslevelno = 0; ok_reslevel; reslevelno++) { @@ -799,6 +802,16 @@ static int jpeg2000_decode_packets(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile } break; + case JPEG2000_PGOD_RPCL: + avpriv_request_sample(s->avctx, "Progression order RPCL"); + ret = AVERROR_PATCHWELCOME; + break; + + case JPEG2000_PGOD_PCRL: + avpriv_request_sample(s->avctx, "Progression order PCRL"); + ret = AVERROR_PATCHWELCOME; + break; + default: break; } @@ -806,7 +819,7 @@ static int jpeg2000_decode_packets(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile /* EOC marker reached */ bytestream2_skip(&s->g, 2); - return 0; + return ret; } /* TIER-1 routines */