summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Thompson <sw@jkqxz.net>2018-09-23 22:53:00 +0100
committerMark Thompson <sw@jkqxz.net>2018-10-27 19:35:35 +0100
commitfef2162b6ea752c76a1220f59ad962b65a400fc3 (patch)
treeeb9cf3ff0ab7698e03ce93c78c1ed1dc83a37ece
parenta7eda762dce66e7df993f66fc3abdf06c7074190 (diff)
downloadffmpeg-streaming-fef2162b6ea752c76a1220f59ad962b65a400fc3.zip
ffmpeg-streaming-fef2162b6ea752c76a1220f59ad962b65a400fc3.tar.gz
vaapi_encode: Add flag to mark encoders supporting only constant-quality
And set it for MJPEG.
-rw-r--r--libavcodec/vaapi_encode.c3
-rw-r--r--libavcodec/vaapi_encode.h2
-rw-r--r--libavcodec/vaapi_encode_mjpeg.c2
3 files changed, 6 insertions, 1 deletions
diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c
index e01c3c1..2fe8501 100644
--- a/libavcodec/vaapi_encode.c
+++ b/libavcodec/vaapi_encode.c
@@ -1277,7 +1277,8 @@ static av_cold int vaapi_encode_init_rate_control(AVCodecContext *avctx)
ctx->va_rc_mode = VA_RC_CQP;
return 0;
}
- if (avctx->flags & AV_CODEC_FLAG_QSCALE ||
+ if (ctx->codec->flags & FLAG_CONSTANT_QUALITY_ONLY ||
+ avctx->flags & AV_CODEC_FLAG_QSCALE ||
avctx->bit_rate <= 0) {
if (rc_attr.value & VA_RC_CQP) {
av_log(avctx, AV_LOG_VERBOSE, "Using constant-quality mode.\n");
diff --git a/libavcodec/vaapi_encode.h b/libavcodec/vaapi_encode.h
index 271d4ef..965fe65 100644
--- a/libavcodec/vaapi_encode.h
+++ b/libavcodec/vaapi_encode.h
@@ -251,6 +251,8 @@ typedef struct VAAPIEncodeContext {
enum {
// Codec supports controlling the subdivision of pictures into slices.
FLAG_SLICE_CONTROL = 1 << 0,
+ // Codec only supports constant quality (no rate control).
+ FLAG_CONSTANT_QUALITY_ONLY = 1 << 1,
};
typedef struct VAAPIEncodeType {
diff --git a/libavcodec/vaapi_encode_mjpeg.c b/libavcodec/vaapi_encode_mjpeg.c
index fe8439c..79f4347 100644
--- a/libavcodec/vaapi_encode_mjpeg.c
+++ b/libavcodec/vaapi_encode_mjpeg.c
@@ -476,6 +476,8 @@ static const VAAPIEncodeProfile vaapi_encode_mjpeg_profiles[] = {
static const VAAPIEncodeType vaapi_encode_type_mjpeg = {
.profiles = vaapi_encode_mjpeg_profiles,
+ .flags = FLAG_CONSTANT_QUALITY_ONLY,
+
.configure = &vaapi_encode_mjpeg_configure,
.picture_params_size = sizeof(VAEncPictureParameterBufferJPEG),
OpenPOWER on IntegriCloud