From c1208a2f8d73d4c567562a044b77dfe5e6941bd6 Mon Sep 17 00:00:00 2001 From: gerrit507 Date: Sun, 5 Mar 2017 04:02:03 +0100 Subject: [PATCH 1/3] Fix naming of nvenc codecs. It should be nvenc_h264. --- .../MediaEncoding/EncodingHelper.cs | 10 +++++----- MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index ef356c7cda..090232ff07 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -50,7 +50,7 @@ namespace MediaBrowser.Controller.MediaEncoding if (string.Equals(hwType, "nvenc", StringComparison.OrdinalIgnoreCase)) { - return GetAvailableEncoder("h264_nvenc", defaultEncoder); + return GetAvailableEncoder("nvenc_h264", defaultEncoder); } if (string.Equals(hwType, "h264_omx", StringComparison.OrdinalIgnoreCase)) { @@ -591,8 +591,8 @@ namespace MediaBrowser.Controller.MediaEncoding } - // h264 (h264_nvenc) - else if (string.Equals(videoEncoder, "h264_nvenc", StringComparison.OrdinalIgnoreCase)) + // h264 (nvenc_h264) + else if (string.Equals(videoEncoder, "nvenc_h264", StringComparison.OrdinalIgnoreCase)) { param += "-preset default"; } @@ -670,10 +670,10 @@ namespace MediaBrowser.Controller.MediaEncoding { var level = NormalizeTranscodingLevel(state.OutputVideoCodec, request.Level); - // h264_qsv and h264_nvenc expect levels to be expressed as a decimal. libx264 supports decimal and non-decimal format + // h264_qsv and nvenc_h264 expect levels to be expressed as a decimal. libx264 supports decimal and non-decimal format // also needed for libx264 due to https://trac.ffmpeg.org/ticket/3307 if (string.Equals(videoEncoder, "h264_qsv", StringComparison.OrdinalIgnoreCase) || - string.Equals(videoEncoder, "h264_nvenc", StringComparison.OrdinalIgnoreCase) || + string.Equals(videoEncoder, "nvenc_h264", StringComparison.OrdinalIgnoreCase) || string.Equals(videoEncoder, "libx264", StringComparison.OrdinalIgnoreCase)) { switch (level) diff --git a/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs b/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs index b37e783b86..7bcbc97eba 100644 --- a/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs +++ b/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs @@ -133,7 +133,7 @@ namespace MediaBrowser.MediaEncoding.Encoder "libopus", "libvorbis", "srt", - "h264_nvenc", + "nvenc_h264", "h264_qsv", "h264_omx", "h264_vaapi", From 46b6235b8a974c5f8ab880af97d498c635c3365a Mon Sep 17 00:00:00 2001 From: gerrit507 Date: Sun, 5 Mar 2017 13:25:36 +0100 Subject: [PATCH 2/3] Revert "Fix naming of nvenc codecs. It should be nvenc_h264." This reverts commit 44ae8c94fc720fc14d4fc551cd375006691d3d3e. --- .../MediaEncoding/EncodingHelper.cs | 10 +++++----- MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index 090232ff07..ef356c7cda 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -50,7 +50,7 @@ namespace MediaBrowser.Controller.MediaEncoding if (string.Equals(hwType, "nvenc", StringComparison.OrdinalIgnoreCase)) { - return GetAvailableEncoder("nvenc_h264", defaultEncoder); + return GetAvailableEncoder("h264_nvenc", defaultEncoder); } if (string.Equals(hwType, "h264_omx", StringComparison.OrdinalIgnoreCase)) { @@ -591,8 +591,8 @@ namespace MediaBrowser.Controller.MediaEncoding } - // h264 (nvenc_h264) - else if (string.Equals(videoEncoder, "nvenc_h264", StringComparison.OrdinalIgnoreCase)) + // h264 (h264_nvenc) + else if (string.Equals(videoEncoder, "h264_nvenc", StringComparison.OrdinalIgnoreCase)) { param += "-preset default"; } @@ -670,10 +670,10 @@ namespace MediaBrowser.Controller.MediaEncoding { var level = NormalizeTranscodingLevel(state.OutputVideoCodec, request.Level); - // h264_qsv and nvenc_h264 expect levels to be expressed as a decimal. libx264 supports decimal and non-decimal format + // h264_qsv and h264_nvenc expect levels to be expressed as a decimal. libx264 supports decimal and non-decimal format // also needed for libx264 due to https://trac.ffmpeg.org/ticket/3307 if (string.Equals(videoEncoder, "h264_qsv", StringComparison.OrdinalIgnoreCase) || - string.Equals(videoEncoder, "nvenc_h264", StringComparison.OrdinalIgnoreCase) || + string.Equals(videoEncoder, "h264_nvenc", StringComparison.OrdinalIgnoreCase) || string.Equals(videoEncoder, "libx264", StringComparison.OrdinalIgnoreCase)) { switch (level) diff --git a/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs b/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs index 7bcbc97eba..b37e783b86 100644 --- a/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs +++ b/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs @@ -133,7 +133,7 @@ namespace MediaBrowser.MediaEncoding.Encoder "libopus", "libvorbis", "srt", - "nvenc_h264", + "h264_nvenc", "h264_qsv", "h264_omx", "h264_vaapi", From a74373e851f98c66ce39f73b288419a3781b1449 Mon Sep 17 00:00:00 2001 From: gerrit507 Date: Sun, 5 Mar 2017 13:35:23 +0100 Subject: [PATCH 3/3] Remove level param for nvenc, because it fails to encode with it. --- MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs index ef356c7cda..8afee9f35f 100644 --- a/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs +++ b/MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs @@ -671,9 +671,8 @@ namespace MediaBrowser.Controller.MediaEncoding var level = NormalizeTranscodingLevel(state.OutputVideoCodec, request.Level); // h264_qsv and h264_nvenc expect levels to be expressed as a decimal. libx264 supports decimal and non-decimal format - // also needed for libx264 due to https://trac.ffmpeg.org/ticket/3307 + // also needed for libx264 due to https://trac.ffmpeg.org/ticket/3307 if (string.Equals(videoEncoder, "h264_qsv", StringComparison.OrdinalIgnoreCase) || - string.Equals(videoEncoder, "h264_nvenc", StringComparison.OrdinalIgnoreCase) || string.Equals(videoEncoder, "libx264", StringComparison.OrdinalIgnoreCase)) { switch (level) @@ -710,10 +709,15 @@ namespace MediaBrowser.Controller.MediaEncoding break; } } + // nvenc doesn't decode with param -level set ?! + if (string.Equals(videoEncoder, "h264_nvenc", StringComparison.OrdinalIgnoreCase)){ + param += ""; + } else if (!string.Equals(videoEncoder, "h264_omx", StringComparison.OrdinalIgnoreCase)) { param += " -level " + level; } + } if (string.Equals(videoEncoder, "libx264", StringComparison.OrdinalIgnoreCase))