mov: Support prores with multiple stsd
authorVittorio Giovara <vittorio.giovara@gmail.com>
Thu, 9 Jun 2016 22:55:19 +0000 (18:55 -0400)
committerVittorio Giovara <vittorio.giovara@gmail.com>
Fri, 17 Jun 2016 15:38:33 +0000 (11:38 -0400)
This function needs to return false, or data in the additional tables
will be skipped, and the decoder will not be able to decode frames
associated with them.

libavformat/mov.c

index a9b826f..fe1f264 100644 (file)
@@ -1774,6 +1774,8 @@ static int mov_skip_multiple_stsd(MOVContext *c, AVIOContext *pb,
         (codec_tag == AV_RL32("hvc1") ||
          codec_tag == AV_RL32("hev1") ||
          (codec_tag != format &&
+          // prores is allowed to have differing data format and codec tag
+          codec_tag != AV_RL32("apcn") && codec_tag != AV_RL32("apch") &&
           (c->fc->video_codec_id ? video_codec_id != c->fc->video_codec_id
                                  : codec_tag != MKTAG('j','p','e','g'))))) {
         /* Multiple fourcc, we skip JPEG. This is not correct, we should