mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-02 20:42:30 +00:00
msdkdec: add d3d11 caps for srcpad
Set decoder srcpad with D3D11Memory. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4088>
This commit is contained in:
parent
a11f811155
commit
2b9cda928b
6 changed files with 58 additions and 5 deletions
|
@ -61,7 +61,8 @@ GST_DEBUG_CATEGORY_EXTERN (gst_msdkav1dec_debug);
|
|||
#define VA_SRC_CAPS_STR \
|
||||
";" GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE ("{ NV12 }")
|
||||
#else
|
||||
#define VA_SRC_CAPS_STR ""
|
||||
#define D3D11_SRC_CAPS_STR \
|
||||
";" GST_MSDK_CAPS_MAKE_WITH_D3D11_FEATURE ("{ NV12 }")
|
||||
#endif
|
||||
|
||||
static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
|
||||
|
@ -70,11 +71,19 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
|
|||
GST_STATIC_CAPS ("video/x-av1")
|
||||
);
|
||||
|
||||
#ifndef _WIN32
|
||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||
GST_PAD_SRC,
|
||||
GST_PAD_ALWAYS,
|
||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
||||
VA_SRC_CAPS_STR));
|
||||
#else
|
||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||
GST_PAD_SRC,
|
||||
GST_PAD_ALWAYS,
|
||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
||||
D3D11_SRC_CAPS_STR));
|
||||
#endif
|
||||
|
||||
#define gst_msdkav1dec_parent_class parent_class
|
||||
G_DEFINE_TYPE (GstMsdkAV1Dec, gst_msdkav1dec, GST_TYPE_MSDKDEC);
|
||||
|
|
|
@ -44,6 +44,8 @@
|
|||
|
||||
#ifndef _WIN32
|
||||
#include <gst/va/gstvaallocator.h>
|
||||
#else
|
||||
#include <gst/d3d11/gstd3d11.h>
|
||||
#endif
|
||||
|
||||
GST_DEBUG_CATEGORY_EXTERN (gst_msdkdec_debug);
|
||||
|
@ -750,6 +752,12 @@ gst_msdkdec_set_src_caps (GstMsdkDec * thiz, gboolean need_allocation)
|
|||
gst_caps_set_features (output_state->caps, 0,
|
||||
gst_caps_features_new (GST_CAPS_FEATURE_MEMORY_DMABUF, NULL));
|
||||
}
|
||||
#else
|
||||
if (pad_accept_memory (thiz, GST_CAPS_FEATURE_MEMORY_D3D11_MEMORY,
|
||||
output_state->caps)) {
|
||||
gst_caps_set_features (output_state->caps, 0,
|
||||
gst_caps_features_new (GST_CAPS_FEATURE_MEMORY_D3D11_MEMORY, NULL));
|
||||
}
|
||||
#endif
|
||||
|
||||
if (need_allocation) {
|
||||
|
|
|
@ -60,7 +60,8 @@ GST_DEBUG_CATEGORY_EXTERN (gst_msdkh264dec_debug);
|
|||
#define VA_SRC_CAPS_STR \
|
||||
"; " GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE ("{ NV12 }")
|
||||
#else
|
||||
#define VA_SRC_CAPS_STR ""
|
||||
#define D3D11_SRC_CAPS_STR \
|
||||
";" GST_MSDK_CAPS_MAKE_WITH_D3D11_FEATURE ("{ NV12 }")
|
||||
#endif
|
||||
|
||||
static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
|
||||
|
@ -72,11 +73,19 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
|
|||
"profile = (string) { high, progressive-high, constrained-high, main, baseline, constrained-baseline }")
|
||||
);
|
||||
|
||||
#ifndef _WIN32
|
||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||
GST_PAD_SRC,
|
||||
GST_PAD_ALWAYS,
|
||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
||||
VA_SRC_CAPS_STR));
|
||||
#else
|
||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||
GST_PAD_SRC,
|
||||
GST_PAD_ALWAYS,
|
||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
||||
D3D11_SRC_CAPS_STR));
|
||||
#endif
|
||||
|
||||
#define gst_msdkh264dec_parent_class parent_class
|
||||
G_DEFINE_TYPE (GstMsdkH264Dec, gst_msdkh264dec, GST_TYPE_MSDKDEC);
|
||||
|
|
|
@ -62,7 +62,8 @@ GST_DEBUG_CATEGORY_EXTERN (gst_msdkh265dec_debug);
|
|||
#define VA_SRC_CAPS_STR \
|
||||
"; " GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE ("{ NV12 }")
|
||||
#else
|
||||
#define VA_SRC_CAPS_STR ""
|
||||
#define D3D11_SRC_CAPS_STR \
|
||||
";" GST_MSDK_CAPS_MAKE_WITH_D3D11_FEATURE ("{ NV12 }")
|
||||
#endif
|
||||
|
||||
/* TODO: update both sink and src dynamically */
|
||||
|
@ -74,11 +75,19 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
|
|||
"stream-format = (string) byte-stream , alignment = (string) au ")
|
||||
);
|
||||
|
||||
#ifndef _WIN32
|
||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||
GST_PAD_SRC,
|
||||
GST_PAD_ALWAYS,
|
||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
||||
VA_SRC_CAPS_STR));
|
||||
#else
|
||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||
GST_PAD_SRC,
|
||||
GST_PAD_ALWAYS,
|
||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
||||
D3D11_SRC_CAPS_STR));
|
||||
#endif
|
||||
|
||||
#define gst_msdkh265dec_parent_class parent_class
|
||||
G_DEFINE_TYPE (GstMsdkH265Dec, gst_msdkh265dec, GST_TYPE_MSDKDEC);
|
||||
|
|
|
@ -71,14 +71,23 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
|
|||
#define VA_SRC_CAPS_STR \
|
||||
"; " GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE ("{ NV12 }")
|
||||
#else
|
||||
#define VA_SRC_CAPS_STR ""
|
||||
#define D3D11_SRC_CAPS_STR \
|
||||
"; " GST_MSDK_CAPS_MAKE_WITH_D3D11_FEATURE ("{ NV12 }")
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32
|
||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||
GST_PAD_SRC,
|
||||
GST_PAD_ALWAYS,
|
||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR ("{ NV12, YUY2 }", "{ NV12, YUY2 }")
|
||||
VA_SRC_CAPS_STR));
|
||||
#else
|
||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||
GST_PAD_SRC,
|
||||
GST_PAD_ALWAYS,
|
||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR ("{ NV12, YUY2 }", "{ NV12, YUY2 }")
|
||||
D3D11_SRC_CAPS_STR));
|
||||
#endif
|
||||
|
||||
#define gst_msdkmjpegdec_parent_class parent_class
|
||||
G_DEFINE_TYPE (GstMsdkMJPEGDec, gst_msdkmjpegdec, GST_TYPE_MSDKDEC);
|
||||
|
|
|
@ -64,7 +64,8 @@ GST_DEBUG_CATEGORY_EXTERN (gst_msdkvp9dec_debug);
|
|||
#define VA_SRC_CAPS_STR \
|
||||
"; " GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE (SUPPORTED_VA_FORMAT)
|
||||
#else
|
||||
#define VA_SRC_CAPS_STR ""
|
||||
#define D3D11_SRC_CAPS_STR \
|
||||
"; " GST_MSDK_CAPS_MAKE_WITH_D3D11_FEATURE ("{ NV12 }")
|
||||
#endif
|
||||
|
||||
static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
|
||||
|
@ -73,11 +74,19 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
|
|||
GST_STATIC_CAPS ("video/x-vp9")
|
||||
);
|
||||
|
||||
#ifndef _WIN32
|
||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||
GST_PAD_SRC,
|
||||
GST_PAD_ALWAYS,
|
||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
||||
VA_SRC_CAPS_STR));
|
||||
#else
|
||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||
GST_PAD_SRC,
|
||||
GST_PAD_ALWAYS,
|
||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
||||
D3D11_SRC_CAPS_STR));
|
||||
#endif
|
||||
|
||||
#define gst_msdkvp9dec_parent_class parent_class
|
||||
G_DEFINE_TYPE (GstMsdkVP9Dec, gst_msdkvp9dec, GST_TYPE_MSDKDEC);
|
||||
|
|
Loading…
Reference in a new issue