diff options
author | Artem Dyomin <artem.dyomin@qt.io> | 2023-08-15 12:27:04 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-08-16 15:36:14 +0000 |
commit | e4fd150ad8626709d25f775525faf13a069f2359 (patch) | |
tree | aa633e6547fa6a7d1cd334077e8bb6e04414cd74 | |
parent | 786dd2dfcbb272626c83b6c669c098cde1387d7a (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.cpp | 27 |
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; |