qsv: Promote encoder rank to PRIMARY on Windows
authorSeungha Yang <seungha@centricular.com>
Sat, 12 Nov 2022 18:07:54 +0000 (03:07 +0900)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Sat, 19 Nov 2022 00:43:10 +0000 (00:43 +0000)
QSV is very well integrated with GstD3D11 infrastructure on Windows,
and this is the recommended H/W encoder element over the MediaFoundation
plugins on Intel GPU system.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3393>

subprojects/gst-plugins-bad/docs/plugins/gst_plugins_cache.json
subprojects/gst-plugins-bad/sys/qsv/plugin.cpp

index 30a8ccf..778557a 100644 (file)
                         "writable": true
                     }
                 },
-                "rank": "none"
+                "rank": "primary"
             },
             "qsvh264dec": {
                 "author": "Seungha Yang <seungha@centricular.com>",
                         "writable": true
                     }
                 },
-                "rank": "none"
+                "rank": "primary"
             },
             "qsvh265dec": {
                 "author": "Seungha Yang <seungha@centricular.com>",
                         "writable": true
                     }
                 },
-                "rank": "none"
+                "rank": "primary"
             },
             "qsvjpegdec": {
                 "author": "Seungha Yang <seungha@centricular.com>",
                         "writable": true
                     }
                 },
-                "rank": "none"
+                "rank": "primary"
             },
             "qsvvp9dec": {
                 "author": "Seungha Yang <seungha@centricular.com>",
                         "writable": true
                     }
                 },
-                "rank": "none"
+                "rank": "primary"
             }
         },
         "filename": "gstqsv",
index b71a01a..15887f8 100644 (file)
@@ -209,12 +209,15 @@ plugin_init (GstPlugin * plugin)
   mfxLoader loader;
   guint i = 0;
   GList *platform_devices = nullptr;
+  GstRank enc_rank = GST_RANK_NONE;
 
 #ifdef G_OS_WIN32
   /* D3D11 Video API is supported since Windows 8.
    * Do we want to support old OS (Windows 7 for example) with D3D9 ?? */
   if (!IsWindows8OrGreater ())
     return TRUE;
+
+  enc_rank = GST_RANK_PRIMARY;
 #endif
 
   GST_DEBUG_CATEGORY_INIT (gst_qsv_debug, "qsv", 0, "Intel Quick Sync Video");
@@ -261,11 +264,11 @@ plugin_init (GstPlugin * plugin)
     gst_qsv_jpeg_dec_register (plugin, GST_RANK_SECONDARY, i, device, session);
     gst_qsv_vp9_dec_register (plugin, GST_RANK_MARGINAL, i, device, session);
 
-    gst_qsv_h264_enc_register (plugin, GST_RANK_NONE, i, device, session);
-    gst_qsv_h265_enc_register (plugin, GST_RANK_NONE, i, device, session);
-    gst_qsv_jpeg_enc_register (plugin, GST_RANK_NONE, i, device, session);
-    gst_qsv_vp9_enc_register (plugin, GST_RANK_NONE, i, device, session);
-    gst_qsv_av1_enc_register (plugin, GST_RANK_NONE, i, device, session);
+    gst_qsv_h264_enc_register (plugin, enc_rank, i, device, session);
+    gst_qsv_h265_enc_register (plugin, enc_rank, i, device, session);
+    gst_qsv_jpeg_enc_register (plugin, enc_rank, i, device, session);
+    gst_qsv_vp9_enc_register (plugin, enc_rank, i, device, session);
+    gst_qsv_av1_enc_register (plugin, enc_rank, i, device, session);
 
   next:
     MFXDispReleaseImplDescription (loader, desc);