]> granicus.if.org Git - handbrake/commitdiff
WinGui: Enable support for H.265 QuickSync support
authorScott <sr55@users.noreply.github.com>
Thu, 24 Sep 2015 19:44:55 +0000 (20:44 +0100)
committerScott <sr55@users.noreply.github.com>
Thu, 24 Sep 2015 19:44:55 +0000 (20:44 +0100)
win/CS/HandBrake.ApplicationServices/Interop/HbLib/NativeConstants.cs
win/CS/HandBrake.ApplicationServices/Interop/Model/Encoding/VideoEncoder.cs
win/CS/HandBrake.ApplicationServices/Utilities/SystemInfo.cs
win/CS/HandBrakeWPF/Converters/Video/VideoEncoderConverter.cs

index 80f9e33be74d44e34223b52f75c7756b2454a79b..0bcbc18cf3c9b8515425b40fc464c7c355b88bdf 100644 (file)
@@ -45,6 +45,10 @@ namespace HandBrake.ApplicationServices.Interop.HbLib
         public const uint HB_ACODEC_ANY = (HB_ACODEC_MASK | HB_ACODEC_PASS_FLAG);\r
         public const uint HB_ACODEC_TRUEHD_PASS = (HB_ACODEC_PASS_FLAG | HB_ACODEC_FFTRUEHD);\r
 \r
+        // VideoEncoders\r
+        public const uint HB_VCODEC_QSV_H264 = 0x0000100;\r
+        public const uint HB_VCODEC_QSV_H265 = 0x0000200;\r
+        public const uint HB_VCODEC_QSV_MASK = 0x0000F00;\r
 \r
         // Encode state\r
         public const int HB_STATE_IDLE = 1;\r
index 17ed82aef7978b3619b6e1a8875a6552f85b9596..4f30b5df3533885c18c03db1798c33c0cdf607cf 100644 (file)
@@ -26,6 +26,10 @@ namespace HandBrake.ApplicationServices.Interop.Model.Encoding
         [ShortName("qsv_h264")]\r
         QuickSync,\r
 \r
+        [Display(Name = "H.265 (Intel QSV)")]\r
+        [ShortName("qsv_h265")]\r
+        QuickSyncH265,\r
+\r
         [Display(Name = "MPEG-4")]\r
         [ShortName("mpeg4")]\r
         FFMpeg,\r
index 2055fab9086b33135bf88abbf1135d210046aed4..ab11d71a9a753cb2cb10cc7df058ed21f90ac323 100644 (file)
@@ -1,4 +1,4 @@
-// --------------------------------------------------------------------------------------------------------------------\r
+// --------------------------------------------------------------------------------------------------------------------\r
 // <copyright file="SystemInfo.cs" company="HandBrake Project (http://handbrake.fr)">\r
 //   This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
 // </copyright>\r
@@ -81,6 +81,44 @@ namespace HandBrake.ApplicationServices.Utilities
             }\r
         }\r
 \r
+        /// <summary>\r
+        /// Gets a value indicating whether is qsv available.\r
+        /// </summary>\r
+        public static bool IsQsvAvailableH264\r
+        {\r
+            get\r
+            {\r
+                try\r
+                {\r
+                    return HBFunctions.hb_qsv_available() == NativeConstants.HB_VCODEC_QSV_H264;\r
+                }\r
+                catch (Exception)\r
+                {\r
+                    // Silent failure. Typically this means the dll hasn't been built with --enable-qsv\r
+                    return false;\r
+                }\r
+            }\r
+        }\r
+\r
+        /// <summary>\r
+        /// Gets a value indicating whether is qsv available.\r
+        /// </summary>\r
+        public static bool IsQsvAvailableH265\r
+        {\r
+            get\r
+            {\r
+                try\r
+                {\r
+                    return HBFunctions.hb_qsv_available() == NativeConstants.HB_VCODEC_QSV_H265;\r
+                }\r
+                catch (Exception)\r
+                {\r
+                    // Silent failure. Typically this means the dll hasn't been built with --enable-qsv\r
+                    return false;\r
+                }\r
+            }\r
+        }\r
+\r
         /// <summary>\r
         /// Gets the get gpu driver version.\r
         /// </summary>\r
index ffe11ffef040d59c043fd3e0dbc0b5f3072ba7ff..d0ef607755711c1066e3641e5768dd51c5107261 100644 (file)
@@ -57,11 +57,17 @@ namespace HandBrakeWPF.Converters.Video
                     encoders.Remove(VideoEncoder.VP8);\r
                 }\r
 \r
-                if (!SystemInfo.IsQsvAvailable)\r
+                if (!SystemInfo.IsQsvAvailableH264)\r
                 {\r
                     encoders.Remove(VideoEncoder.QuickSync);\r
                 }\r
 \r
+                if (!SystemInfo.IsQsvAvailableH265)\r
+                {\r
+                    encoders.Remove(VideoEncoder.QuickSyncH265);\r
+                }\r
+\r
+\r
                 return EnumHelper<VideoEncoder>.GetEnumDisplayValuesSubset(encoders);\r
             }\r
 \r