X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fvaapi_encode_mjpeg.c;h=bd029cc90315e1e224802b5225d86d77f3dfbac7;hb=f70c397456c7eba78a22e9318bce634e1d9079d6;hp=f0ea29209874ada7026394dc0cd211ff2a09f44d;hpb=cd8087444bb459c7c62e21913adfef5ec09675cc;p=ffmpeg diff --git a/libavcodec/vaapi_encode_mjpeg.c b/libavcodec/vaapi_encode_mjpeg.c index f0ea2920987..bd029cc9031 100644 --- a/libavcodec/vaapi_encode_mjpeg.c +++ b/libavcodec/vaapi_encode_mjpeg.c @@ -142,7 +142,7 @@ static int vaapi_encode_mjpeg_write_image_header(AVCodecContext *avctx, err = 0; fail: - ff_cbs_fragment_uninit(priv->cbc, frag); + ff_cbs_fragment_reset(priv->cbc, frag); return err; } @@ -227,6 +227,8 @@ static int vaapi_encode_mjpeg_init_picture_params(AVCodecContext *avctx, JPEGRawScanHeader *sh = &priv->scan.header; VAEncPictureParameterBufferJPEG *vpic = pic->codec_picture_params; const AVPixFmtDescriptor *desc; + const uint8_t components_rgb[3] = { 'R', 'G', 'B' }; + const uint8_t components_yuv[3] = { 1, 2, 3 }; const uint8_t *components; int t, i, quant_scale, len; @@ -235,9 +237,9 @@ static int vaapi_encode_mjpeg_init_picture_params(AVCodecContext *avctx, desc = av_pix_fmt_desc_get(priv->common.input_frames->sw_format); av_assert0(desc); if (desc->flags & AV_PIX_FMT_FLAG_RGB) - components = (uint8_t[3]) { 'R', 'G', 'B' }; + components = components_rgb; else - components = (uint8_t[3]) { 1, 2, 3 }; + components = components_yuv; // Frame header. @@ -438,7 +440,7 @@ static av_cold int vaapi_encode_mjpeg_configure(AVCodecContext *avctx) VAAPIEncodeMJPEGContext *priv = avctx->priv_data; int err; - priv->quality = avctx->global_quality; + priv->quality = ctx->rc_quality; if (priv->quality < 1 || priv->quality > 100) { av_log(avctx, AV_LOG_ERROR, "Invalid quality value %d " "(must be 1-100).\n", priv->quality); @@ -483,6 +485,8 @@ static const VAAPIEncodeType vaapi_encode_type_mjpeg = { .configure = &vaapi_encode_mjpeg_configure, + .default_quality = 80, + .picture_params_size = sizeof(VAEncPictureParameterBufferJPEG), .init_picture_params = &vaapi_encode_mjpeg_init_picture_params, @@ -515,6 +519,7 @@ static av_cold int vaapi_encode_mjpeg_close(AVCodecContext *avctx) { VAAPIEncodeMJPEGContext *priv = avctx->priv_data; + ff_cbs_fragment_free(priv->cbc, &priv->current_fragment); ff_cbs_close(&priv->cbc); return ff_vaapi_encode_close(avctx); @@ -536,7 +541,6 @@ static const AVOption vaapi_encode_mjpeg_options[] = { }; static const AVCodecDefault vaapi_encode_mjpeg_defaults[] = { - { "global_quality", "80" }, { "b", "0" }, { NULL }, };