Bläddra i källkod

Merge pull request #6258 from gnuyent/feat/hardware-encode-status

Claus Vium 3 år sedan
förälder
incheckning
a29f702432

+ 1 - 0
CONTRIBUTORS.md

@@ -212,3 +212,4 @@
  - [Tim Hobbs](https://github.com/timhobbs)
  - [SvenVandenbrande](https://github.com/SvenVandenbrande)
  - [olsh](https://github.com/olsh)
+ - [gnuyent](https://github.com/gnuyent)

+ 8 - 3
Jellyfin.Api/Helpers/TranscodingJobHelper.cs

@@ -380,7 +380,7 @@ namespace Jellyfin.Api.Helpers
         private void DeleteHlsPartialStreamFiles(string outputFilePath)
         {
             var directory = Path.GetDirectoryName(outputFilePath)
-                ?? throw new ArgumentException("Path can't be a root directory.", nameof(outputFilePath));
+                            ?? throw new ArgumentException("Path can't be a root directory.", nameof(outputFilePath));
 
             var name = Path.GetFileNameWithoutExtension(outputFilePath);
 
@@ -444,6 +444,10 @@ namespace Jellyfin.Api.Helpers
             {
                 var audioCodec = state.ActualOutputAudioCodec;
                 var videoCodec = state.ActualOutputVideoCodec;
+                var hardwareAccelerationTypeString = _serverConfigurationManager.GetEncodingOptions().HardwareAccelerationType;
+                HardwareEncodingType? hardwareAccelerationType = string.IsNullOrEmpty(hardwareAccelerationTypeString)
+                    ? null
+                    : (HardwareEncodingType)Enum.Parse(typeof(HardwareEncodingType), hardwareAccelerationTypeString, true);
 
                 _sessionManager.ReportTranscodingInfo(deviceId, new TranscodingInfo
                 {
@@ -458,6 +462,7 @@ namespace Jellyfin.Api.Helpers
                     AudioChannels = state.OutputAudioChannels,
                     IsAudioDirect = EncodingHelper.IsCopyCodec(state.OutputAudioCodec),
                     IsVideoDirect = EncodingHelper.IsCopyCodec(state.OutputVideoCodec),
+                    HardwareAccelerationType = hardwareAccelerationType,
                     TranscodeReasons = state.TranscodeReasons
                 });
             }
@@ -759,8 +764,8 @@ namespace Jellyfin.Api.Helpers
             if (state.MediaSource.RequiresOpening && string.IsNullOrWhiteSpace(state.Request.LiveStreamId))
             {
                 var liveStreamResponse = await _mediaSourceManager.OpenLiveStream(
-                    new LiveStreamRequest { OpenToken = state.MediaSource.OpenToken },
-                    cancellationTokenSource.Token)
+                        new LiveStreamRequest { OpenToken = state.MediaSource.OpenToken },
+                        cancellationTokenSource.Token)
                     .ConfigureAwait(false);
                 var encodingOptions = _serverConfigurationManager.GetEncodingOptions();
 

+ 48 - 0
MediaBrowser.Model/Session/HardwareEncodingType.cs

@@ -0,0 +1,48 @@
+namespace MediaBrowser.Model.Session
+{
+    /// <summary>
+    /// Enum HardwareEncodingType.
+    /// </summary>
+    public enum HardwareEncodingType
+    {
+        /// <summary>
+        /// AMD AMF
+        /// </summary>
+        AMF = 0,
+
+        /// <summary>
+        /// Intel Quick Sync Video
+        /// </summary>
+        QSV = 1,
+
+        /// <summary>
+        /// NVIDIA NVENC
+        /// </summary>
+        NVENC = 2,
+
+        /// <summary>
+        /// OpenMax OMX
+        /// </summary>
+        OMX = 3,
+
+        /// <summary>
+        /// Exynos V4L2 MFC
+        /// </summary>
+        V4L2M2M = 4,
+
+        /// <summary>
+        /// MediaCodec Android
+        /// </summary>
+        MediaCodec = 5,
+
+        /// <summary>
+        /// Video Acceleration API (VAAPI)
+        /// </summary>
+        VAAPI = 6,
+
+        /// <summary>
+        /// Video ToolBox
+        /// </summary>
+        VideoToolBox = 7
+    }
+}

+ 2 - 0
MediaBrowser.Model/Session/TranscodingInfo.cs

@@ -34,6 +34,8 @@ namespace MediaBrowser.Model.Session
 
         public int? AudioChannels { get; set; }
 
+        public HardwareEncodingType? HardwareAccelerationType { get; set; }
+
         public TranscodeReason[] TranscodeReasons { get; set; }
     }
 }