]> git.sesse.net Git - ffmpeg/commitdiff
h264dec: do not abort if decoding extradata fails
authorAnton Khirnov <anton@khirnov.net>
Sat, 5 Aug 2017 16:36:12 +0000 (18:36 +0200)
committerAnton Khirnov <anton@khirnov.net>
Fri, 10 Apr 2020 13:49:27 +0000 (15:49 +0200)
Such errors are not necessarily fatal and decoding might still be
possible, e.g. it happens for MVC streams where we do not handle the
subset SPS thus failing to parse its corresponding PPS.

libavcodec/h264dec.c

index b6c51ed1e24797966e7a69f8a489a06d2729dd66..8673d5a2c2f50f4a6d9c1ed311d2ee65230f860b 100644 (file)
@@ -414,10 +414,16 @@ static av_cold int h264_decode_init(AVCodecContext *avctx)
             ret = ff_h264_decode_extradata(avctx->extradata, avctx->extradata_size,
                                            &h->ps, &h->is_avc, &h->nal_length_size,
                                            avctx->err_recognition, avctx);
-            if (ret < 0) {
-                h264_decode_end(avctx);
-                return ret;
-            }
+           if (ret < 0) {
+               int explode = avctx->err_recognition & AV_EF_EXPLODE;
+               av_log(avctx, explode ? AV_LOG_ERROR: AV_LOG_WARNING,
+                      "Error decoding the extradata\n");
+               if (explode) {
+                   h264_decode_end(avctx);
+                   return ret;
+               }
+               ret = 0;
+           }
         }
     }