mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-05 06:40:03 +00:00
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 <anton@khirnov.net>
This commit is contained in:
parent
7a6cf27714
commit
2e2f8534eb
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user