diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index e7e2c09222..64c1788c57 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -718,6 +718,9 @@ int attribute_align_arg avcodec_receive_frame(AVCodecContext *avctx, AVFrame *fr { av_frame_unref(frame); + if (!avcodec_is_open(avctx)) + return AVERROR(EINVAL); + if (av_codec_is_decoder(avctx->codec)) return ff_decode_receive_frame(avctx, frame); return ff_encode_receive_frame(avctx, frame); diff --git a/libavcodec/decode.c b/libavcodec/decode.c index c5a577f4f1..3a1c35a55f 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -817,9 +817,6 @@ int ff_decode_receive_frame(AVCodecContext *avctx, AVFrame *frame) AVCodecInternal *avci = avctx->internal; int ret; - if (!avcodec_is_open(avctx) || !av_codec_is_decoder(avctx->codec)) - return AVERROR(EINVAL); - if (avci->buffer_frame->buf[0]) { av_frame_move_ref(frame, avci->buffer_frame); } else {