diff options
author | Mark Thompson <sw@jkqxz.net> | 2019-03-31 15:39:44 +0100 |
---|---|---|
committer | Mark Thompson <sw@jkqxz.net> | 2019-06-02 17:30:41 +0100 |
commit | 909bcedc581aa03dd5e22ecb1d0cc3b52eba8c26 (patch) | |
tree | 7cb9f3e25f64642d99365e56d84ca033ceb35cda | |
parent | ef2f89bbccc973fbde0926bfedef6e1eb3604674 (diff) | |
download | ffmpeg-909bcedc581aa03dd5e22ecb1d0cc3b52eba8c26.tar.gz |
vaapi_encode: Warn if input has cropping information
Cropping is not supported by VAAPI encode.
-rw-r--r-- | libavcodec/vaapi_encode.c | 19 | ||||
-rw-r--r-- | libavcodec/vaapi_encode.h | 4 |
2 files changed, 23 insertions, 0 deletions
diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index 2dda451882..c3d8944c3c 100644 --- a/libavcodec/vaapi_encode.c +++ b/libavcodec/vaapi_encode.c @@ -913,6 +913,21 @@ static int vaapi_encode_clear_old(AVCodecContext *avctx) return 0; } +static int vaapi_encode_check_frame(AVCodecContext *avctx, + const AVFrame *frame) +{ + VAAPIEncodeContext *ctx = avctx->priv_data; + + if ((frame->crop_top || frame->crop_bottom || + frame->crop_left || frame->crop_right) && !ctx->crop_warned) { + av_log(avctx, AV_LOG_WARNING, "Cropping information on input " + "frames ignored due to lack of API support.\n"); + ctx->crop_warned = 1; + } + + return 0; +} + int ff_vaapi_encode_send_frame(AVCodecContext *avctx, const AVFrame *frame) { VAAPIEncodeContext *ctx = avctx->priv_data; @@ -923,6 +938,10 @@ int ff_vaapi_encode_send_frame(AVCodecContext *avctx, const AVFrame *frame) av_log(avctx, AV_LOG_DEBUG, "Input frame: %ux%u (%"PRId64").\n", frame->width, frame->height, frame->pts); + err = vaapi_encode_check_frame(avctx, frame); + if (err < 0) + return err; + pic = vaapi_encode_alloc(avctx); if (!pic) return AVERROR(ENOMEM); diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h index 44a8db566e..12efee2d08 100644 --- a/libavcodec/vaapi_encode.h +++ b/libavcodec/vaapi_encode.h @@ -314,6 +314,10 @@ typedef struct VAAPIEncodeContext { int idr_counter; int gop_counter; int end_of_stream; + + // The encoder does not support cropping information, so warn about + // it the first time we encounter any nonzero crop fields. + int crop_warned; } VAAPIEncodeContext; enum { |