Browse Source

vaapi_encode: Warn if input has cropping information

Cropping is not supported by VAAPI encode.
tags/n4.2
Mark Thompson 7 years ago
parent
commit
909bcedc58
2 changed files with 23 additions and 0 deletions
  1. +19
    -0
      libavcodec/vaapi_encode.c
  2. +4
    -0
      libavcodec/vaapi_encode.h

+ 19
- 0
libavcodec/vaapi_encode.c View File

@@ -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);


+ 4
- 0
libavcodec/vaapi_encode.h View File

@@ -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 {


Loading…
Cancel
Save