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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3253>
This commit is contained in:
Mengkejiergeli Ba 2022-10-24 11:56:51 +08:00 committed by GStreamer Marge Bot
parent cb1345ab77
commit 13be7cbe86

View file

@ -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