mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-30 12:10:37 +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) {
|
||||
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 \
|
||||
adapter.c \
|
||||
controller.c \
|
||||
controlsource.c
|
||||
controlsource.c \
|
||||
videoutil.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