]> git.sesse.net Git - ffmpeg/commitdiff
libavcodec/jpeg2000dec.c: fix error in cod marker
authorGautam Ramakrishnan <gautamramk@gmail.com>
Sat, 11 Apr 2020 06:40:08 +0000 (12:10 +0530)
committerMichael Niedermayer <michael@niedermayer.cc>
Sat, 11 Apr 2020 16:15:58 +0000 (18:15 +0200)
This patch fixes an error where the COC marker
overrides all data of the SPcod field of the
COD marker. It must override only one bit of
SPcod field. This now allows p0_08.j2k to be
decoded correctly (mentioned in #4679).

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavcodec/jpeg2000dec.c

index 9684e57b34c51728ff64c531291252fc8ce0be0d..7196cba6b4382559e25d97965162845926a7d3fb 100644 (file)
@@ -566,6 +566,7 @@ static int get_coc(Jpeg2000DecoderContext *s, Jpeg2000CodingStyle *c,
                    uint8_t *properties)
 {
     int compno, ret;
+    uint8_t has_eph;
 
     if (bytestream2_get_bytes_left(&s->g) < 2) {
         av_log(s->avctx, AV_LOG_ERROR, "Insufficient space for COC\n");
@@ -582,7 +583,9 @@ static int get_coc(Jpeg2000DecoderContext *s, Jpeg2000CodingStyle *c,
     }
 
     c      += compno;
+    has_eph = c->csty & JPEG2000_CSTY_EPH;
     c->csty = bytestream2_get_byteu(&s->g);
+    c->csty |= has_eph; //do not override eph present bits from COD
 
     if ((ret = get_cox(s, c)) < 0)
         return ret;