aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2023-01-05 10:31:09 +0100
committerAnton Khirnov <anton@khirnov.net>2023-01-10 11:47:29 +0100
commita1eec66867b40e5e0952a31ee43fdb273af5f5a5 (patch)
treefefe507e99bc1e023393e581cd514218f639fb46 /libavcodec
parent5bf8f29135a6fd3fb2e887c7a37f3594eff97db8 (diff)
downloadffmpeg-a1eec66867b40e5e0952a31ee43fdb273af5f5a5.tar.gz
lavc/decode: deduplicate cleanup in ff_decode_receive_frame()
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/decode.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index 3e5be501b9..56ba06d5d5 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -685,10 +685,8 @@ int ff_decode_receive_frame(AVCodecContext *avctx, AVFrame *frame)
if (avctx->codec_type == AVMEDIA_TYPE_VIDEO) {
ret = apply_cropping(avctx, frame);
- if (ret < 0) {
- av_frame_unref(frame);
- return ret;
- }
+ if (ret < 0)
+ goto fail;
}
avctx->frame_number++;
@@ -706,10 +704,8 @@ int ff_decode_receive_frame(AVCodecContext *avctx, AVFrame *frame)
avci->initial_sample_rate = frame->sample_rate ? frame->sample_rate :
avctx->sample_rate;
ret = av_channel_layout_copy(&avci->initial_ch_layout, &frame->ch_layout);
- if (ret < 0) {
- av_frame_unref(frame);
- return ret;
- }
+ if (ret < 0)
+ goto fail;
break;
}
}
@@ -735,12 +731,15 @@ int ff_decode_receive_frame(AVCodecContext *avctx, AVFrame *frame)
" drop count: %d \n",
avctx->frame_number, frame->pts,
avci->changed_frames_dropped);
- av_frame_unref(frame);
- return AVERROR_INPUT_CHANGED;
+ ret = AVERROR_INPUT_CHANGED;
+ goto fail;
}
}
}
return 0;
+fail:
+ av_frame_unref(frame);
+ return ret;
}
static void get_subtitle_defaults(AVSubtitle *sub)