diff --git a/sys/msdk/gstmsdkdec.c b/sys/msdk/gstmsdkdec.c index c91a99ee60..c279bc73cd 100644 --- a/sys/msdk/gstmsdkdec.c +++ b/sys/msdk/gstmsdkdec.c @@ -44,21 +44,10 @@ GST_DEBUG_CATEGORY_EXTERN (gst_msdkdec_debug); #define GST_CAT_DEFAULT gst_msdkdec_debug -#ifndef _WIN32 -#define DMABUF_CAPS_STR \ - GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_DMABUF, "{ NV12 }") -#else -#define DMABUF_CAPS_STR "" -#endif - static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS ("video/x-raw, " - "format = (string) { NV12 }, " - "framerate = (fraction) [0, MAX], " - "width = (int) [ 1, MAX ], height = (int) [ 1, MAX ]," - "interlace-mode = (string) progressive;" DMABUF_CAPS_STR) + GST_STATIC_CAPS (GST_MSDK_CAPS_STR ("NV12", "NV12")) ); #define PROP_HARDWARE_DEFAULT TRUE diff --git a/sys/msdk/gstmsdkenc.c b/sys/msdk/gstmsdkenc.c index bf552ba18b..08b462eb64 100644 --- a/sys/msdk/gstmsdkenc.c +++ b/sys/msdk/gstmsdkenc.c @@ -76,21 +76,11 @@ static void gst_msdkenc_close_encoder (GstMsdkEnc * thiz); GST_DEBUG_CATEGORY_EXTERN (gst_msdkenc_debug); #define GST_CAT_DEFAULT gst_msdkenc_debug -#ifndef _WIN32 -#define DMABUF_CAPS_STR \ - GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_DMABUF, "{ NV12 }") -#else -#define DMABUF_CAPS_STR "" -#endif - static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS ("video/x-raw, " - "format = (string) { NV12, I420, YV12, YUY2, UYVY, BGRA }, " - "framerate = (fraction) [0, MAX], " - "width = (int) [ 16, MAX ], height = (int) [ 16, MAX ]," - "interlace-mode = (string) progressive" ";" DMABUF_CAPS_STR) + GST_STATIC_CAPS (GST_MSDK_CAPS_STR + ("{ NV12, I420, YV12, YUY2, UYVY, BGRA }", "NV12")) ); #define PROP_HARDWARE_DEFAULT TRUE diff --git a/sys/msdk/gstmsdkh265dec.c b/sys/msdk/gstmsdkh265dec.c index 43b27d8f7b..14d7ac7edb 100644 --- a/sys/msdk/gstmsdkh265dec.c +++ b/sys/msdk/gstmsdkh265dec.c @@ -41,6 +41,8 @@ GST_DEBUG_CATEGORY_EXTERN (gst_msdkh265dec_debug); #define GST_CAT_DEFAULT gst_msdkh265dec_debug +#define COMMON_FORMAT "{ NV12, P010_10LE, YUY2, Y210, VUYA, Y410 }" + /* TODO: update both sink and src dynamically */ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, @@ -53,13 +55,7 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS ("video/x-raw, " - "format = (string) { NV12, P010_10LE, YUY2, Y210, VUYA, Y410 }, " - "framerate = (fraction) [0, MAX], " - "width = (int) [ 1, MAX ], height = (int) [ 1, MAX ]," - "interlace-mode = (string) progressive;" - GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_DMABUF, - "{ NV12, P010_10LE, YUY2, Y210, VUYA, Y410 }") ";") + GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)) ); #define gst_msdkh265dec_parent_class parent_class diff --git a/sys/msdk/gstmsdkh265enc.c b/sys/msdk/gstmsdkh265enc.c index 1ce2a4d3e2..46f64eb035 100644 --- a/sys/msdk/gstmsdkh265enc.c +++ b/sys/msdk/gstmsdkh265enc.c @@ -49,16 +49,12 @@ enum #define PROP_LOWPOWER_DEFAULT FALSE +#define COMMON_FORMAT "{ NV12, I420, YV12, YUY2, UYVY, BGRA, P010_10LE }" + static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS ("video/x-raw, " - "format = (string) { NV12, I420, YV12, YUY2, UYVY, BGRA, P010_10LE }, " - "framerate = (fraction) [0, MAX], " - "width = (int) [ 16, MAX ], height = (int) [ 16, MAX ]," - "interlace-mode = (string) progressive" ";" - GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_DMABUF, - "{ NV12 }"))); + GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, "NV12"))); static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, diff --git a/sys/msdk/gstmsdkmjpegdec.c b/sys/msdk/gstmsdkmjpegdec.c index 75029da67f..777b69d0e8 100644 --- a/sys/msdk/gstmsdkmjpegdec.c +++ b/sys/msdk/gstmsdkmjpegdec.c @@ -54,13 +54,7 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS ("video/x-raw, " - "format = (string) { NV12, YUY2 }, " - "framerate = (fraction) [0, MAX], " - "width = (int) [ 1, MAX ], height = (int) [ 1, MAX ]," - "interlace-mode = (string) progressive;" - GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_DMABUF, - "{ NV12, YUY2 }") ";") + GST_STATIC_CAPS (GST_MSDK_CAPS_STR ("{ NV12, YUY2 }", "{ NV12, YUY2 }")) ); #define gst_msdkmjpegdec_parent_class parent_class diff --git a/sys/msdk/gstmsdkvp9dec.c b/sys/msdk/gstmsdkvp9dec.c index dff64272dc..cb87b52015 100644 --- a/sys/msdk/gstmsdkvp9dec.c +++ b/sys/msdk/gstmsdkvp9dec.c @@ -44,6 +44,8 @@ GST_DEBUG_CATEGORY_EXTERN (gst_msdkvp9dec_debug); #define GST_CAT_DEFAULT gst_msdkvp9dec_debug +#define COMMON_FORMAT "{ NV12, P010_10LE, VUYA, Y410 }" + static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, @@ -53,13 +55,7 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS ("video/x-raw, " - "format = (string) { NV12, P010_10LE, VUYA, Y410 }, " - "framerate = (fraction) [0, MAX], " - "width = (int) [ 1, MAX ], height = (int) [ 1, MAX ]," - "interlace-mode = (string) progressive;" - GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_DMABUF, - "{ NV12, P010_10LE, VUYA, Y410 }") ";") + GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, COMMON_FORMAT)) ); #define gst_msdkvp9dec_parent_class parent_class diff --git a/sys/msdk/gstmsdkvp9enc.c b/sys/msdk/gstmsdkvp9enc.c index 379b2c0c2a..b56ca91e46 100644 --- a/sys/msdk/gstmsdkvp9enc.c +++ b/sys/msdk/gstmsdkvp9enc.c @@ -42,16 +42,12 @@ GST_DEBUG_CATEGORY_EXTERN (gst_msdkvp9enc_debug); #define GST_CAT_DEFAULT gst_msdkvp9enc_debug +#define COMMON_FORMAT "{ NV12, I420, YV12, YUY2, UYVY, BGRA, P010_10LE }" + static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS ("video/x-raw, " - "format = (string) { NV12, I420, YV12, YUY2, UYVY, BGRA, P010_10LE }, " - "framerate = (fraction) [0/1, MAX], " - "width = (int) [ 1, MAX ], height = (int) [ 1, MAX ]," - "interlace-mode = (string) progressive" ";" - GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_DMABUF, - "{ NV12 }"))); + GST_STATIC_CAPS (GST_MSDK_CAPS_STR (COMMON_FORMAT, "NV12"))); static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, diff --git a/sys/msdk/msdk.h b/sys/msdk/msdk.h index 0423d2ac86..61682a594e 100644 --- a/sys/msdk/msdk.h +++ b/sys/msdk/msdk.h @@ -40,11 +40,28 @@ #include #include +#include #include G_BEGIN_DECLS +#define GST_MSDK_CAPS_MAKE(format) \ + GST_VIDEO_CAPS_MAKE (format) ", " \ + "interlace-mode = (string) progressive" + +#ifndef _WIN32 +#define GST_MSDK_CAPS_MAKE_WITH_DMABUF_FEATURE(dmaformat) \ + GST_VIDEO_CAPS_MAKE_WITH_FEATURES(GST_CAPS_FEATURE_MEMORY_DMABUF, dmaformat) ", " \ + "interlace-mode = (string) progressive" +#else +#define GST_MSDK_CAPS_MAKE_WITH_DMABUF_FEATURE(dmaformat) "" +#endif + +#define GST_MSDK_CAPS_STR(format,dmaformat) \ + GST_MSDK_CAPS_MAKE (format) "; " \ + GST_MSDK_CAPS_MAKE_WITH_DMABUF_FEATURE (dmaformat) + mfxSession msdk_open_session (mfxIMPL impl); void msdk_close_session (mfxSession session);