summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtem Dyomin <artem.dyomin@qt.io>2023-08-15 12:27:04 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-08-16 15:36:14 +0000
commite4fd150ad8626709d25f775525faf13a069f2359 (patch)
treeaa633e6547fa6a7d1cd334077e8bb6e04414cd74
parent786dd2dfcbb272626c83b6c669c098cde1387d7a (diff)
Fix nvenc settings
* av1_nvenc was not added * global_quality is deprecated for nvenc Change-Id: I5d51643f597522d78e2fa3f147cad02c9245ee0e Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit fdf84d45259acb7cbad7d612ea02c1ee6f025659) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/plugins/multimedia/ffmpeg/qffmpegencoderoptions.cpp27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/plugins/multimedia/ffmpeg/qffmpegencoderoptions.cpp b/src/plugins/multimedia/ffmpeg/qffmpegencoderoptions.cpp
index 797362437..63b3fd15c 100644
--- a/src/plugins/multimedia/ffmpeg/qffmpegencoderoptions.cpp
+++ b/src/plugins/multimedia/ffmpeg/qffmpegencoderoptions.cpp
@@ -184,14 +184,24 @@ static void apply_vaapi(const QMediaEncoderSettings &settings, AVCodecContext *c
#endif
static void apply_nvenc(const QMediaEncoderSettings &settings, AVCodecContext *codec,
- AVDictionary ** /*opts*/)
+ AVDictionary **opts)
{
- if (settings.encodingMode() == QMediaRecorder::ConstantBitRateEncoding
- || settings.encodingMode() == QMediaRecorder::AverageBitRateEncoding) {
+ switch (settings.encodingMode()) {
+ case QMediaRecorder::EncodingMode::AverageBitRateEncoding:
+ av_dict_set(opts, "vbr", "1", 0);
codec->bit_rate = settings.videoBitRate();
- } else {
- static const int q[] = { 51, 48, 35, 15, 1 };
- codec->global_quality = q[settings.quality()];
+ break;
+ case QMediaRecorder::EncodingMode::ConstantBitRateEncoding:
+ av_dict_set(opts, "cbr", "1", 0);
+ codec->bit_rate = settings.videoBitRate();
+ codec->rc_max_rate = codec->rc_min_rate = codec->bit_rate;
+ break;
+ case QMediaRecorder::EncodingMode::ConstantQualityEncoding: {
+ static const char *q[] = { "51", "48", "35", "15", "1" };
+ av_dict_set(opts, "cq", q[settings.quality()], 0);
+ } break;
+ default:
+ break;
}
}
@@ -267,6 +277,7 @@ const struct {
{ "libvpx_vp9", apply_libvpx },
{ "h264_nvenc", apply_nvenc },
{ "hevc_nvenc", apply_nvenc },
+ { "av1_nvenc", apply_nvenc },
#ifdef Q_OS_DARWIN
{ "h264_videotoolbox", apply_videotoolbox },
{ "hevc_videotoolbox", apply_videotoolbox },
@@ -286,10 +297,10 @@ const struct {
{ "h264_mf", apply_mf },
#endif
#ifdef Q_OS_ANDROID
- { "hevc_mediacodec", apply_mediacodec},
+ { "hevc_mediacodec", apply_mediacodec },
{ "h264_mediacodec", apply_mediacodec },
#endif
- { nullptr, nullptr } };
+ { nullptr, nullptr } };
const struct {
const char *name;