Module: libav
Branch: master
Commit: 2e2f8534ebde47d3a3909fe64c2e66204bc56874

Author:    wm4 <nfx...@googlemail.com>
Committer: Anton Khirnov <an...@khirnov.net>
Date:      Mon Feb 29 22:48:12 2016 +0100

lavc: factor apply_param_change() AV_EF_EXPLODE handling

Remove the duplicated code for handling failure of apply_param_change().

Signed-off-by: Anton Khirnov <an...@khirnov.net>

---

 libavcodec/utils.c |   28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index a9a7423..866cdfc 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -1390,7 +1390,8 @@ static int apply_param_change(AVCodecContext *avctx, 
AVPacket *avpkt)
     if (!(avctx->codec->capabilities & AV_CODEC_CAP_PARAM_CHANGE)) {
         av_log(avctx, AV_LOG_ERROR, "This decoder does not support parameter "
                "changes, but PARAM_CHANGE side data was sent to it.\n");
-        return AVERROR(EINVAL);
+        ret = AVERROR(EINVAL);
+        goto fail2;
     }
 
     if (size < 4)
@@ -1425,13 +1426,20 @@ static int apply_param_change(AVCodecContext *avctx, 
AVPacket *avpkt)
         size -= 8;
         ret = ff_set_dimensions(avctx, avctx->width, avctx->height);
         if (ret < 0)
-            return ret;
+            goto fail2;
     }
 
     return 0;
 fail:
     av_log(avctx, AV_LOG_ERROR, "PARAM_CHANGE side data too small.\n");
-    return AVERROR_INVALIDDATA;
+    ret = AVERROR_INVALIDDATA;
+fail2:
+    if (ret < 0) {
+        av_log(avctx, AV_LOG_ERROR, "Error applying parameter changes.\n");
+        if (avctx->err_recognition & AV_EF_EXPLODE)
+            return ret;
+    }
+    return 0;
 }
 
 static int unrefcount_frame(AVCodecInternal *avci, AVFrame *frame)
@@ -1492,11 +1500,8 @@ int attribute_align_arg 
avcodec_decode_video2(AVCodecContext *avctx, AVFrame *pi
 
     avctx->internal->pkt = avpkt;
     ret = apply_param_change(avctx, avpkt);
-    if (ret < 0) {
-        av_log(avctx, AV_LOG_ERROR, "Error applying parameter changes.\n");
-        if (avctx->err_recognition & AV_EF_EXPLODE)
-            return ret;
-    }
+    if (ret < 0)
+        return ret;
 
     av_frame_unref(picture);
 
@@ -1560,11 +1565,8 @@ int attribute_align_arg 
avcodec_decode_audio4(AVCodecContext *avctx,
     }
 
     ret = apply_param_change(avctx, avpkt);
-    if (ret < 0) {
-        av_log(avctx, AV_LOG_ERROR, "Error applying parameter changes.\n");
-        if (avctx->err_recognition & AV_EF_EXPLODE)
-            return ret;
-    }
+    if (ret < 0)
+        return ret;
 
     av_frame_unref(frame);
 

_______________________________________________
libav-commits mailing list
libav-commits@libav.org
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to