mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-08 23:42:28 +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 \
|
#define VA_SRC_CAPS_STR \
|
||||||
";" GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE ("{ NV12 }")
|
";" GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE ("{ NV12 }")
|
||||||
#else
|
#else
|
||||||
#define VA_SRC_CAPS_STR ""
|
#define D3D11_SRC_CAPS_STR \
|
||||||
|
";" GST_MSDK_CAPS_MAKE_WITH_D3D11_FEATURE ("{ NV12 }")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
|
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")
|
GST_STATIC_CAPS ("video/x-av1")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||||
GST_PAD_SRC,
|
GST_PAD_SRC,
|
||||||
GST_PAD_ALWAYS,
|
GST_PAD_ALWAYS,
|
||||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
||||||
VA_SRC_CAPS_STR));
|
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
|
#define gst_msdkav1dec_parent_class parent_class
|
||||||
G_DEFINE_TYPE (GstMsdkAV1Dec, gst_msdkav1dec, GST_TYPE_MSDKDEC);
|
G_DEFINE_TYPE (GstMsdkAV1Dec, gst_msdkav1dec, GST_TYPE_MSDKDEC);
|
||||||
|
|
|
@ -44,6 +44,8 @@
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <gst/va/gstvaallocator.h>
|
#include <gst/va/gstvaallocator.h>
|
||||||
|
#else
|
||||||
|
#include <gst/d3d11/gstd3d11.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
GST_DEBUG_CATEGORY_EXTERN (gst_msdkdec_debug);
|
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_set_features (output_state->caps, 0,
|
||||||
gst_caps_features_new (GST_CAPS_FEATURE_MEMORY_DMABUF, NULL));
|
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
|
#endif
|
||||||
|
|
||||||
if (need_allocation) {
|
if (need_allocation) {
|
||||||
|
|
|
@ -60,7 +60,8 @@ GST_DEBUG_CATEGORY_EXTERN (gst_msdkh264dec_debug);
|
||||||
#define VA_SRC_CAPS_STR \
|
#define VA_SRC_CAPS_STR \
|
||||||
"; " GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE ("{ NV12 }")
|
"; " GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE ("{ NV12 }")
|
||||||
#else
|
#else
|
||||||
#define VA_SRC_CAPS_STR ""
|
#define D3D11_SRC_CAPS_STR \
|
||||||
|
";" GST_MSDK_CAPS_MAKE_WITH_D3D11_FEATURE ("{ NV12 }")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
|
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 }")
|
"profile = (string) { high, progressive-high, constrained-high, main, baseline, constrained-baseline }")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||||
GST_PAD_SRC,
|
GST_PAD_SRC,
|
||||||
GST_PAD_ALWAYS,
|
GST_PAD_ALWAYS,
|
||||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
||||||
VA_SRC_CAPS_STR));
|
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
|
#define gst_msdkh264dec_parent_class parent_class
|
||||||
G_DEFINE_TYPE (GstMsdkH264Dec, gst_msdkh264dec, GST_TYPE_MSDKDEC);
|
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 \
|
#define VA_SRC_CAPS_STR \
|
||||||
"; " GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE ("{ NV12 }")
|
"; " GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE ("{ NV12 }")
|
||||||
#else
|
#else
|
||||||
#define VA_SRC_CAPS_STR ""
|
#define D3D11_SRC_CAPS_STR \
|
||||||
|
";" GST_MSDK_CAPS_MAKE_WITH_D3D11_FEATURE ("{ NV12 }")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* TODO: update both sink and src dynamically */
|
/* 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 ")
|
"stream-format = (string) byte-stream , alignment = (string) au ")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||||
GST_PAD_SRC,
|
GST_PAD_SRC,
|
||||||
GST_PAD_ALWAYS,
|
GST_PAD_ALWAYS,
|
||||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
||||||
VA_SRC_CAPS_STR));
|
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
|
#define gst_msdkh265dec_parent_class parent_class
|
||||||
G_DEFINE_TYPE (GstMsdkH265Dec, gst_msdkh265dec, GST_TYPE_MSDKDEC);
|
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 \
|
#define VA_SRC_CAPS_STR \
|
||||||
"; " GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE ("{ NV12 }")
|
"; " GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE ("{ NV12 }")
|
||||||
#else
|
#else
|
||||||
#define VA_SRC_CAPS_STR ""
|
#define D3D11_SRC_CAPS_STR \
|
||||||
|
"; " GST_MSDK_CAPS_MAKE_WITH_D3D11_FEATURE ("{ NV12 }")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||||
GST_PAD_SRC,
|
GST_PAD_SRC,
|
||||||
GST_PAD_ALWAYS,
|
GST_PAD_ALWAYS,
|
||||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR ("{ NV12, YUY2 }", "{ NV12, YUY2 }")
|
GST_STATIC_CAPS (GST_MSDK_CAPS_STR ("{ NV12, YUY2 }", "{ NV12, YUY2 }")
|
||||||
VA_SRC_CAPS_STR));
|
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
|
#define gst_msdkmjpegdec_parent_class parent_class
|
||||||
G_DEFINE_TYPE (GstMsdkMJPEGDec, gst_msdkmjpegdec, GST_TYPE_MSDKDEC);
|
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 \
|
#define VA_SRC_CAPS_STR \
|
||||||
"; " GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE (SUPPORTED_VA_FORMAT)
|
"; " GST_MSDK_CAPS_MAKE_WITH_VA_FEATURE (SUPPORTED_VA_FORMAT)
|
||||||
#else
|
#else
|
||||||
#define VA_SRC_CAPS_STR ""
|
#define D3D11_SRC_CAPS_STR \
|
||||||
|
"; " GST_MSDK_CAPS_MAKE_WITH_D3D11_FEATURE ("{ NV12 }")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
|
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")
|
GST_STATIC_CAPS ("video/x-vp9")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
|
||||||
GST_PAD_SRC,
|
GST_PAD_SRC,
|
||||||
GST_PAD_ALWAYS,
|
GST_PAD_ALWAYS,
|
||||||
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)
|
||||||
VA_SRC_CAPS_STR));
|
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
|
#define gst_msdkvp9dec_parent_class parent_class
|
||||||
G_DEFINE_TYPE (GstMsdkVP9Dec, gst_msdkvp9dec, GST_TYPE_MSDKDEC);
|
G_DEFINE_TYPE (GstMsdkVP9Dec, gst_msdkvp9dec, GST_TYPE_MSDKDEC);
|
||||||
|
|
Loading…
Reference in a new issue