From 13be7cbe868007eebea715e0c2f6a3d5d8648d13 Mon Sep 17 00:00:00 2001 From: Mengkejiergeli Ba Date: Mon, 24 Oct 2022 11:56:51 +0800 Subject: [PATCH] msdkvpp: Set va mem caps as higher priority We use va pool as msdkvpp's bufferpool, which means both va memory and dma memory will be allocated by va pool. Considering drm modifier stuff is not ready, we use va memory with higher priortiry than dma memory when deciding vpp caps. Besides, this patch removes the specified "interlace-mode" in vpp caps. Part-of: --- .../gst-plugins-bad/sys/msdk/gstmsdkvpp.c | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkvpp.c b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkvpp.c index 0b7f2e71a9..9fc5f38308 100644 --- a/subprojects/gst-plugins-bad/sys/msdk/gstmsdkvpp.c +++ b/subprojects/gst-plugins-bad/sys/msdk/gstmsdkvpp.c @@ -110,7 +110,7 @@ GST_DEBUG_CATEGORY_EXTERN (gst_msdkvpp_debug); GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_DMABUF, \ SUPPORTED_DMABUF_FORMAT) ";" #define VA_SINK_CAPS_STR \ - GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE (SUPPORTED_VA_FORMAT) + GST_VIDEO_CAPS_MAKE_WITH_FEATURES ("memory:VAMemory", SUPPORTED_VA_FORMAT) #else #define DMABUF_SINK_CAPS_STR "" #define VA_SINK_CAPS_STR "" @@ -121,7 +121,7 @@ GST_DEBUG_CATEGORY_EXTERN (gst_msdkvpp_debug); GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_DMABUF, \ SRC_DMABUF_FORMAT) ";" #define VA_SRC_CAPS_STR \ - GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE (SUPPORTED_VA_FORMAT) + GST_VIDEO_CAPS_MAKE_WITH_FEATURES ("memory:VAMemory", SUPPORTED_VA_FORMAT) #else #define DMABUF_SRC_CAPS_STR "" #define VA_SRC_CAPS_STR "" @@ -1389,20 +1389,20 @@ gst_msdkvpp_fixate_caps (GstBaseTransform * trans, GST_DEBUG_OBJECT (trans, "fixated to %" GST_PTR_FORMAT, result); gst_caps_unref (othercaps); - /* We let msdkvpp srcpad first query if downstream has dmabuf type caps, - * if not, will check the type of va memory. + /* We let msdkvpp srcpad first query if downstream has va memory type caps, + * if not, will check the type of dma memory. */ #ifndef _WIN32 - if (pad_accept_memory (thiz, GST_CAPS_FEATURE_MEMORY_DMABUF, - direction == GST_PAD_SRC ? GST_PAD_SINK : GST_PAD_SRC, result)) { - gst_caps_set_features (result, 0, - gst_caps_features_new (GST_CAPS_FEATURE_MEMORY_DMABUF, NULL)); - *use_dmabuf = TRUE; - } else if (pad_accept_memory (thiz, GST_CAPS_FEATURE_MEMORY_VA, + if (pad_accept_memory (thiz, GST_CAPS_FEATURE_MEMORY_VA, direction == GST_PAD_SRC ? GST_PAD_SINK : GST_PAD_SRC, result)) { gst_caps_set_features (result, 0, gst_caps_features_new (GST_CAPS_FEATURE_MEMORY_VA, NULL)); *use_va = TRUE; + } else if (pad_accept_memory (thiz, GST_CAPS_FEATURE_MEMORY_DMABUF, + direction == GST_PAD_SRC ? GST_PAD_SINK : GST_PAD_SRC, result)) { + gst_caps_set_features (result, 0, + gst_caps_features_new (GST_CAPS_FEATURE_MEMORY_DMABUF, NULL)); + *use_dmabuf = TRUE; } #endif