Add VideoUtil.FormatToTemplateCaps() to generate pad template caps

This commit is contained in:
Sebastian Dröge 2009-09-22 09:37:55 +02:00
parent bc14e845a7
commit 102f895fb6
3 changed files with 57 additions and 1 deletions

View file

@ -22,3 +22,14 @@ public static Gst.Fourcc FormatToFourcc (Gst.Video.VideoFormat format) {
public static Gst.Video.VideoFormat FormatFromFourcc (Gst.Fourcc fourcc) {
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);
}

View file

@ -20,7 +20,8 @@ libgstreamersharpglue_0_10_la_SOURCES = \
tunernorm.c \
adapter.c \
controller.c \
controlsource.c
controlsource.c \
videoutil.c
nodist_libgstreamersharpglue_0_10_la_SOURCES = generated.c

View 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;
}