From 5b781a8a496111572404d9e1ca7343bbcb6471ff Mon Sep 17 00:00:00 2001 From: Jaex Date: Sun, 1 Oct 2023 07:30:01 +0300 Subject: [PATCH] Use only bitrate for nvenc, amf and qsv --- ShareX.MediaLib/Forms/VideoConverterForm.cs | 22 ++++---- ShareX.MediaLib/VideoConverterOptions.cs | 58 +++------------------ 2 files changed, 16 insertions(+), 64 deletions(-) diff --git a/ShareX.MediaLib/Forms/VideoConverterForm.cs b/ShareX.MediaLib/Forms/VideoConverterForm.cs index 53b5a49b7..f7f71fcdf 100644 --- a/ShareX.MediaLib/Forms/VideoConverterForm.cs +++ b/ShareX.MediaLib/Forms/VideoConverterForm.cs @@ -93,12 +93,6 @@ private void UpdateOptions() { case ConverterVideoCodecs.x264: case ConverterVideoCodecs.x265: - case ConverterVideoCodecs.h264_nvenc: - case ConverterVideoCodecs.hevc_nvenc: - case ConverterVideoCodecs.h264_amf: - case ConverterVideoCodecs.hevc_amf: - case ConverterVideoCodecs.h264_qsv: - case ConverterVideoCodecs.hevc_qsv: case ConverterVideoCodecs.vp8: case ConverterVideoCodecs.vp9: case ConverterVideoCodecs.av1: @@ -107,6 +101,16 @@ private void UpdateOptions() tbVideoQuality.Visible = lblVideoQualityValue.Visible = lblVideoQualityLower.Visible = lblVideoQualityHigher.Visible = !Options.VideoQualityUseBitrate; nudVideoQualityBitrate.Visible = lblVideoQualityBitrateHint.Visible = Options.VideoQualityUseBitrate; break; + case ConverterVideoCodecs.h264_nvenc: + case ConverterVideoCodecs.hevc_nvenc: + case ConverterVideoCodecs.h264_amf: + case ConverterVideoCodecs.hevc_amf: + case ConverterVideoCodecs.h264_qsv: + case ConverterVideoCodecs.hevc_qsv: + cbVideoQualityUseBitrate.Visible = false; + tbVideoQuality.Visible = lblVideoQualityValue.Visible = lblVideoQualityLower.Visible = lblVideoQualityHigher.Visible = false; + nudVideoQualityBitrate.Visible = lblVideoQualityBitrateHint.Visible = true; + break; default: cbVideoQualityUseBitrate.Visible = tbVideoQuality.Visible = lblVideoQualityValue.Visible = lblVideoQualityLower.Visible = lblVideoQualityHigher.Visible = nudVideoQualityBitrate.Visible = lblVideoQualityBitrateHint.Visible = false; @@ -116,16 +120,10 @@ private void UpdateOptions() switch (Options.VideoCodec) { case ConverterVideoCodecs.x264: - case ConverterVideoCodecs.h264_nvenc: - case ConverterVideoCodecs.h264_amf: - case ConverterVideoCodecs.h264_qsv: tbVideoQuality.Minimum = FFmpegCLIManager.x264_min; tbVideoQuality.Maximum = FFmpegCLIManager.x264_max; break; case ConverterVideoCodecs.x265: - case ConverterVideoCodecs.hevc_nvenc: - case ConverterVideoCodecs.hevc_amf: - case ConverterVideoCodecs.hevc_qsv: tbVideoQuality.Minimum = FFmpegCLIManager.x265_min; tbVideoQuality.Maximum = FFmpegCLIManager.x265_max; break; diff --git a/ShareX.MediaLib/VideoConverterOptions.cs b/ShareX.MediaLib/VideoConverterOptions.cs index 45fb19c46..e89d664f3 100644 --- a/ShareX.MediaLib/VideoConverterOptions.cs +++ b/ShareX.MediaLib/VideoConverterOptions.cs @@ -123,84 +123,38 @@ public string GetFFmpegArgs() args.Append("-preset p4 "); args.Append("-tune hq "); args.Append("-profile:v high "); - if (VideoQualityUseBitrate) - { - args.Append($"-b:v {VideoQualityBitrate}k "); - } - else - { - args.Append("-rc vbr "); - args.Append($"-cq {VideoQuality.Clamp(FFmpegCLIManager.x264_min, FFmpegCLIManager.x264_max)} "); - args.Append("-b:v 0 "); - } + args.Append($"-b:v {VideoQualityBitrate}k "); break; case ConverterVideoCodecs.hevc_nvenc: // https://trac.ffmpeg.org/wiki/HWAccelIntro#NVENC args.Append("-c:v hevc_nvenc "); args.Append("-preset p4 "); args.Append("-tune hq "); args.Append("-profile:v main "); - if (VideoQualityUseBitrate) - { - args.Append($"-b:v {VideoQualityBitrate}k "); - } - else - { - args.Append("-rc vbr "); - args.Append($"-cq {VideoQuality.Clamp(FFmpegCLIManager.x265_min, FFmpegCLIManager.x265_max)} "); - args.Append("-b:v 0 "); - } + args.Append($"-b:v {VideoQualityBitrate}k "); break; case ConverterVideoCodecs.h264_amf: args.Append("-c:v h264_amf "); args.Append("-usage transcoding "); args.Append("-profile main "); args.Append("-quality balanced "); - if (VideoQualityUseBitrate) - { - args.Append($"-b:v {VideoQualityBitrate}k "); - } - else - { - // TODO: CRF? - } + args.Append($"-b:v {VideoQualityBitrate}k "); break; case ConverterVideoCodecs.hevc_amf: args.Append("-c:v hevc_amf "); args.Append("-usage transcoding "); args.Append("-profile main "); args.Append("-quality balanced "); - if (VideoQualityUseBitrate) - { - args.Append($"-b:v {VideoQualityBitrate}k "); - } - else - { - // TODO: CRF? - } + args.Append($"-b:v {VideoQualityBitrate}k "); break; case ConverterVideoCodecs.h264_qsv: // https://trac.ffmpeg.org/wiki/Hardware/QuickSync args.Append("-c:v h264_qsv "); args.Append("-preset medium "); - if (VideoQualityUseBitrate) - { - args.Append($"-b:v {VideoQualityBitrate}k "); - } - else - { - args.Append($"-crf {VideoQuality.Clamp(FFmpegCLIManager.x264_min, FFmpegCLIManager.x264_max)} "); - } + args.Append($"-b:v {VideoQualityBitrate}k "); break; case ConverterVideoCodecs.hevc_qsv: // https://trac.ffmpeg.org/wiki/Hardware/QuickSync args.Append("-c:v hevc_qsv "); args.Append("-preset medium "); - if (VideoQualityUseBitrate) - { - args.Append($"-b:v {VideoQualityBitrate}k "); - } - else - { - args.Append($"-crf {VideoQuality.Clamp(FFmpegCLIManager.x265_min, FFmpegCLIManager.x265_max)} "); - } + args.Append($"-b:v {VideoQualityBitrate}k "); break; case ConverterVideoCodecs.vp8: // https://trac.ffmpeg.org/wiki/Encode/VP8 args.Append("-c:v libvpx ");