浏览代码

fixes #2865 - Odroid XU4 Hardware encoder support

Luke Pulverenti 7 年之前
父节点
当前提交
3badff870b
共有 1 个文件被更改,包括 15 次插入4 次删除
  1. 15 4
      MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs

+ 15 - 4
MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs

@@ -60,6 +60,10 @@ namespace MediaBrowser.Controller.MediaEncoding
                 {
                 {
                     return GetAvailableEncoder("h264_omx", defaultEncoder);
                     return GetAvailableEncoder("h264_omx", defaultEncoder);
                 }
                 }
+                if (string.Equals(hwType, "h264_v4l2m2m", StringComparison.OrdinalIgnoreCase))
+                {
+                    return GetAvailableEncoder("h264_v4l2m2m", defaultEncoder);
+                }
                 if (string.Equals(hwType, "vaapi", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(encodingOptions.VaapiDevice))
                 if (string.Equals(hwType, "vaapi", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(encodingOptions.VaapiDevice))
                 {
                 {
                     if (IsVaapiSupported(state))
                     if (IsVaapiSupported(state))
@@ -692,7 +696,8 @@ namespace MediaBrowser.Controller.MediaEncoding
             if (!string.IsNullOrEmpty(request.Profile))
             if (!string.IsNullOrEmpty(request.Profile))
             {
             {
                 if (!string.Equals(videoEncoder, "h264_omx", StringComparison.OrdinalIgnoreCase) &&
                 if (!string.Equals(videoEncoder, "h264_omx", StringComparison.OrdinalIgnoreCase) &&
-                    !string.Equals(videoEncoder, "h264_vaapi", StringComparison.OrdinalIgnoreCase))
+                    !string.Equals(videoEncoder, "h264_vaapi", StringComparison.OrdinalIgnoreCase) &&
+                    !string.Equals(videoEncoder, "h264_v4l2m2m", StringComparison.OrdinalIgnoreCase))
                 {
                 {
                     // not supported by h264_omx
                     // not supported by h264_omx
                     param += " -profile:v " + request.Profile;
                     param += " -profile:v " + request.Profile;
@@ -761,11 +766,17 @@ namespace MediaBrowser.Controller.MediaEncoding
 
 
             if (!string.Equals(videoEncoder, "h264_omx", StringComparison.OrdinalIgnoreCase) &&
             if (!string.Equals(videoEncoder, "h264_omx", StringComparison.OrdinalIgnoreCase) &&
                 !string.Equals(videoEncoder, "h264_qsv", StringComparison.OrdinalIgnoreCase) &&
                 !string.Equals(videoEncoder, "h264_qsv", StringComparison.OrdinalIgnoreCase) &&
-                !string.Equals(videoEncoder, "h264_vaapi", StringComparison.OrdinalIgnoreCase))
+                !string.Equals(videoEncoder, "h264_vaapi", StringComparison.OrdinalIgnoreCase) &&
+                !string.Equals(videoEncoder, "h264_v4l2m2m", StringComparison.OrdinalIgnoreCase))
             {
             {
                 param = "-pix_fmt yuv420p " + param;
                 param = "-pix_fmt yuv420p " + param;
             }
             }
 
 
+            if (string.Equals(videoEncoder, "h264_v4l2m2m", StringComparison.OrdinalIgnoreCase))
+            {
+                param = "-pix_fmt nv21 " + param;
+            }
+
             return param;
             return param;
         }
         }
 
 
@@ -1567,7 +1578,7 @@ namespace MediaBrowser.Controller.MediaEncoding
 
 
             inputModifier += " " + GetFastSeekCommandLineParameter(state.BaseRequest);
             inputModifier += " " + GetFastSeekCommandLineParameter(state.BaseRequest);
             inputModifier = inputModifier.Trim();
             inputModifier = inputModifier.Trim();
-            
+
             if (state.InputProtocol == MediaProtocol.Rtsp)
             if (state.InputProtocol == MediaProtocol.Rtsp)
             {
             {
                 inputModifier += " -rtsp_transport tcp";
                 inputModifier += " -rtsp_transport tcp";
@@ -1691,7 +1702,7 @@ namespace MediaBrowser.Controller.MediaEncoding
                 }
                 }
                 else
                 else
                 {
                 {
-                    state.PlayableStreamFileNames = new string[]{};
+                    state.PlayableStreamFileNames = new string[] { };
                 }
                 }
             }
             }
             else
             else