GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("{ I420, YV12 }"))
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("{ I420, YV12, Y41B, Y42B, Y444 }"))
);
static GstStaticPadTemplate gst_video_detect_sink_template =
GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("{ I420, YV12 }"))
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("{ I420, YV12, Y41B, Y42B, Y444 }"))
);
static GstVideoFilterClass *parent_class = NULL;
{
GstVideoDetect *vf;
GstStructure *in_s;
+ guint32 fourcc;
gboolean ret;
vf = GST_VIDEO_DETECT (btrans);
ret = gst_structure_get_int (in_s, "width", &vf->width);
ret &= gst_structure_get_int (in_s, "height", &vf->height);
- ret &= gst_structure_get_fourcc (in_s, "format", &vf->format);
+ ret &= gst_structure_get_fourcc (in_s, "format", &fourcc);
+
+ if (ret)
+ vf->format = gst_video_format_from_fourcc (fourcc);
return ret;
}
-#define GST_VIDEO_I420_Y_ROWSTRIDE(width) (GST_ROUND_UP_4(width))
-
static void
gst_video_detect_post_message (GstVideoDetect * videodetect, GstBuffer * buffer,
guint data)
}
static void
-gst_video_detect_420 (GstVideoDetect * videodetect, GstBuffer * buffer)
+gst_video_detect_yuv (GstVideoDetect * videodetect, GstBuffer * buffer)
{
+ GstVideoFormat format;
gdouble brightness;
gint i, pw, ph, stride, width, height;
gint req_width, req_height;
data = GST_BUFFER_DATA (buffer);
+ format = videodetect->format;
width = videodetect->width;
height = videodetect->height;
pw = videodetect->pattern_width;
ph = videodetect->pattern_height;
- stride = GST_VIDEO_I420_Y_ROWSTRIDE (width);
+ stride = gst_video_format_get_row_stride (format, 0, width);
req_width =
(videodetect->pattern_count + videodetect->pattern_data_count) * pw +
videodetect = GST_VIDEO_DETECT (trans);
- gst_video_detect_420 (videodetect, buf);
+ gst_video_detect_yuv (videodetect, buf);
return ret;
}
#define __GST_VIDEO_DETECT_H__
#include <gst/video/gstvideofilter.h>
+#include <gst/video/video.h>
G_BEGIN_DECLS
GstVideoFilter videofilter;
gint width, height;
- guint32 format;
+ GstVideoFormat format;
gboolean message;
gint pattern_width;
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("{ I420, YV12 }"))
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("{ I420, YV12, Y41B, Y42B, Y444 }"))
);
static GstStaticPadTemplate gst_video_mark_sink_template =
GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("{ I420, YV12 }"))
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("{ I420, YV12, Y41B, Y42B, Y444 }"))
);
static GstVideoFilterClass *parent_class = NULL;
{
GstVideoMark *vf;
GstStructure *in_s;
+ guint32 fourcc;
gboolean ret;
vf = GST_VIDEO_MARK (btrans);
ret = gst_structure_get_int (in_s, "width", &vf->width);
ret &= gst_structure_get_int (in_s, "height", &vf->height);
- ret &= gst_structure_get_fourcc (in_s, "format", &vf->format);
+ ret &= gst_structure_get_fourcc (in_s, "format", &fourcc);
+
+ if (ret)
+ vf->format = gst_video_format_from_fourcc (fourcc);
return ret;
}
-#define GST_VIDEO_I420_Y_ROWSTRIDE(width) (GST_ROUND_UP_4(width))
-
static void
gst_video_mark_draw_box (GstVideoMark * videomark, guint8 * data,
gint width, gint height, gint stride, guint8 color)
}
static GstFlowReturn
-gst_video_mark_420 (GstVideoMark * videomark, GstBuffer * buffer)
+gst_video_mark_yuv (GstVideoMark * videomark, GstBuffer * buffer)
{
+ GstVideoFormat format;
gint i, pw, ph, stride, width, height;
gint req_width, req_height;
guint8 *d, *data;
data = GST_BUFFER_DATA (buffer);
+ format = videomark->format;
width = videomark->width;
height = videomark->height;
pw = videomark->pattern_width;
ph = videomark->pattern_height;
- stride = GST_VIDEO_I420_Y_ROWSTRIDE (width);
+ stride = gst_video_format_get_row_stride (format, 0, width);
req_width =
(videomark->pattern_count + videomark->pattern_data_count) * pw +
videomark = GST_VIDEO_MARK (trans);
if (videomark->enabled)
- return gst_video_mark_420 (videomark, buf);
+ return gst_video_mark_yuv (videomark, buf);
return ret;
}
#define __GST_VIDEO_MARK_H__
#include <gst/video/gstvideofilter.h>
+#include <gst/video/video.h>
G_BEGIN_DECLS
GstVideoFilter videofilter;
gint width, height;
- guint32 format;
+ GstVideoFormat format;
gint pattern_width;
gint pattern_height;