mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-02 05:28:48 +00:00
Add VideoUtil.FormatToTemplateCaps() to generate pad template caps
This commit is contained in:
parent
bc14e845a7
commit
102f895fb6
3 changed files with 57 additions and 1 deletions
|
@ -22,3 +22,14 @@ public static Gst.Fourcc FormatToFourcc (Gst.Video.VideoFormat format) {
|
||||||
public static Gst.Video.VideoFormat FormatFromFourcc (Gst.Fourcc fourcc) {
|
public static Gst.Video.VideoFormat FormatFromFourcc (Gst.Fourcc fourcc) {
|
||||||
return FormatFromFourcc (fourcc.Val);
|
return FormatFromFourcc (fourcc.Val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[DllImport ("gstreamersharpglue-0.10.dll") ]
|
||||||
|
static extern IntPtr gstsharp_gst_videoutil_get_template_caps (Gst.Video.VideoFormat fmt);
|
||||||
|
|
||||||
|
public static Gst.Caps FormatToTemplateCaps (Gst.Video.VideoFormat fmt) {
|
||||||
|
IntPtr raw_ret = gstsharp_gst_videoutil_get_template_caps (fmt);
|
||||||
|
if (raw_ret == IntPtr.Zero)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return (Gst.Caps) Gst.GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Caps), true);
|
||||||
|
}
|
||||||
|
|
|
@ -20,7 +20,8 @@ libgstreamersharpglue_0_10_la_SOURCES = \
|
||||||
tunernorm.c \
|
tunernorm.c \
|
||||||
adapter.c \
|
adapter.c \
|
||||||
controller.c \
|
controller.c \
|
||||||
controlsource.c
|
controlsource.c \
|
||||||
|
videoutil.c
|
||||||
|
|
||||||
nodist_libgstreamersharpglue_0_10_la_SOURCES = generated.c
|
nodist_libgstreamersharpglue_0_10_la_SOURCES = generated.c
|
||||||
|
|
||||||
|
|
44
gstreamer-sharp/glue/videoutil.c
Normal file
44
gstreamer-sharp/glue/videoutil.c
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
#include <gst/gst.h>
|
||||||
|
#include <gst/video/video.h>
|
||||||
|
|
||||||
|
GstCaps *
|
||||||
|
gstsharp_gst_videoutil_get_template_caps (GstVideoFormat fmt) {
|
||||||
|
if (gst_video_format_is_yuv (fmt)) {
|
||||||
|
guint32 fourcc = gst_video_format_to_fourcc (fmt);
|
||||||
|
GstCaps *caps;
|
||||||
|
|
||||||
|
if (fourcc == 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
caps = gst_caps_from_string (GST_VIDEO_CAPS_YUV ("AYUV"));
|
||||||
|
gst_caps_set_simple (caps, fourcc, GST_TYPE_FOURCC, fourcc, NULL);
|
||||||
|
return caps;
|
||||||
|
} else {
|
||||||
|
switch (fmt) {
|
||||||
|
case GST_VIDEO_FORMAT_ABGR:
|
||||||
|
return gst_caps_from_string (GST_VIDEO_CAPS_ABGR);
|
||||||
|
case GST_VIDEO_FORMAT_ARGB:
|
||||||
|
return gst_caps_from_string (GST_VIDEO_CAPS_ARGB);
|
||||||
|
case GST_VIDEO_FORMAT_BGR:
|
||||||
|
return gst_caps_from_string (GST_VIDEO_CAPS_BGR);
|
||||||
|
case GST_VIDEO_FORMAT_BGRA:
|
||||||
|
return gst_caps_from_string (GST_VIDEO_CAPS_BGRA);
|
||||||
|
case GST_VIDEO_FORMAT_BGRx:
|
||||||
|
return gst_caps_from_string (GST_VIDEO_CAPS_BGRx);
|
||||||
|
case GST_VIDEO_FORMAT_RGB:
|
||||||
|
return gst_caps_from_string (GST_VIDEO_CAPS_RGB);
|
||||||
|
case GST_VIDEO_FORMAT_RGBA:
|
||||||
|
return gst_caps_from_string (GST_VIDEO_CAPS_RGBA);
|
||||||
|
case GST_VIDEO_FORMAT_RGBx:
|
||||||
|
return gst_caps_from_string (GST_VIDEO_CAPS_RGBx);
|
||||||
|
case GST_VIDEO_FORMAT_xBGR:
|
||||||
|
return gst_caps_from_string (GST_VIDEO_CAPS_xBGR);
|
||||||
|
case GST_VIDEO_FORMAT_xRGB:
|
||||||
|
return gst_caps_from_string (GST_VIDEO_CAPS_xRGB);
|
||||||
|
default:
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
Loading…
Reference in a new issue