diff options
author | Artem Dyomin <artem.dyomin@qt.io> | 2023-08-18 14:29:47 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-08-23 13:35:13 +0000 |
commit | 23c5f021ca39fabf716e98ef57d8fcee445509d6 (patch) | |
tree | 957c3729ee3c36d8c6436bd3a964bf8ba84193e3 | |
parent | 936dd4eb4aefc33a83513323866cfdf6871421ba (diff) |
Apply openh264 encoder settings
Change-Id: If557d27fc82cdddf7db8ce2987bc18705be63c09
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
(cherry picked from commit cca6b9a873fde44e93c52ffd14a8322cc29971b4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/plugins/multimedia/ffmpeg/qffmpegencoderoptions.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/plugins/multimedia/ffmpeg/qffmpegencoderoptions.cpp b/src/plugins/multimedia/ffmpeg/qffmpegencoderoptions.cpp index 63b3fd15c..bd6a8e09b 100644 --- a/src/plugins/multimedia/ffmpeg/qffmpegencoderoptions.cpp +++ b/src/plugins/multimedia/ffmpeg/qffmpegencoderoptions.cpp @@ -57,6 +57,20 @@ static int bitrateForSettings(const QMediaEncoderSettings &settings, bool hdr = return bitrate; } +static void apply_openh264(const QMediaEncoderSettings &settings, AVCodecContext *codec, + AVDictionary **opts) +{ + if (settings.encodingMode() == QMediaRecorder::ConstantBitRateEncoding + || settings.encodingMode() == QMediaRecorder::AverageBitRateEncoding) { + codec->bit_rate = settings.videoBitRate(); + av_dict_set(opts, "rc_mode", "bitrate", 0); + } else { + av_dict_set(opts, "rc_mode", "quality", 0); + static const int q[] = { 51, 48, 38, 25, 5 }; + codec->qmax = codec->qmin = q[settings.quality()]; + } +} + static void apply_x264(const QMediaEncoderSettings &settings, AVCodecContext *codec, AVDictionary **opts) { if (settings.encodingMode() == QMediaRecorder::ConstantBitRateEncoding || settings.encodingMode() == QMediaRecorder::AverageBitRateEncoding) { @@ -275,6 +289,7 @@ const struct { { "libx265xx", apply_x265 }, { "libvpx", apply_libvpx }, { "libvpx_vp9", apply_libvpx }, + { "libopenh264", apply_openh264 }, { "h264_nvenc", apply_nvenc }, { "hevc_nvenc", apply_nvenc }, { "av1_nvenc", apply_nvenc }, |