summaryrefslogtreecommitdiff
path: root/gst/videosignal/gstvideomark.c
diff options
context:
space:
mode:
Diffstat (limited to 'gst/videosignal/gstvideomark.c')
-rw-r--r--gst/videosignal/gstvideomark.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/gst/videosignal/gstvideomark.c b/gst/videosignal/gstvideomark.c
index cbc721456..3e73d8594 100644
--- a/gst/videosignal/gstvideomark.c
+++ b/gst/videosignal/gstvideomark.c
@@ -74,6 +74,7 @@ enum
PROP_PATTERN_COUNT,
PROP_PATTERN_DATA_COUNT,
PROP_PATTERN_DATA,
+ PROP_PATTERN_DATA_64,
PROP_ENABLED,
PROP_LEFT_OFFSET,
PROP_BOTTOM_OFFSET
@@ -150,7 +151,7 @@ gst_video_mark_yuv (GstVideoMark * videomark, GstBuffer * buffer)
gint i, pw, ph, row_stride, pixel_stride, offset;
gint width, height, req_width, req_height;
guint8 *d, *data;
- guint pattern_shift;
+ guint64 pattern_shift;
guint8 color;
data = GST_BUFFER_DATA (buffer);
@@ -196,7 +197,7 @@ gst_video_mark_yuv (GstVideoMark * videomark, GstBuffer * buffer)
color);
}
- pattern_shift = 1 << (videomark->pattern_data_count - 1);
+ pattern_shift = G_GUINT64_CONSTANT (1) << (videomark->pattern_data_count - 1);
/* get the data of the pattern */
for (i = 0; i < videomark->pattern_data_count; i++) {
@@ -258,6 +259,9 @@ gst_video_mark_set_property (GObject * object, guint prop_id,
case PROP_PATTERN_DATA_COUNT:
videomark->pattern_data_count = g_value_get_int (value);
break;
+ case PROP_PATTERN_DATA_64:
+ videomark->pattern_data = g_value_get_uint64 (value);
+ break;
case PROP_PATTERN_DATA:
videomark->pattern_data = g_value_get_int (value);
break;
@@ -297,8 +301,11 @@ gst_video_mark_get_property (GObject * object, guint prop_id, GValue * value,
case PROP_PATTERN_DATA_COUNT:
g_value_set_int (value, videomark->pattern_data_count);
break;
+ case PROP_PATTERN_DATA_64:
+ g_value_set_uint64 (value, videomark->pattern_data);
+ break;
case PROP_PATTERN_DATA:
- g_value_set_int (value, videomark->pattern_data);
+ g_value_set_int (value, MIN (videomark->pattern_data, G_MAXINT));
break;
case PROP_ENABLED:
g_value_set_boolean (value, videomark->enabled);
@@ -356,12 +363,16 @@ gst_video_mark_class_init (gpointer klass, gpointer class_data)
DEFAULT_PATTERN_COUNT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
g_object_class_install_property (gobject_class, PROP_PATTERN_DATA_COUNT,
g_param_spec_int ("pattern-data-count", "Pattern data count",
- "The number of extra data pattern markers", 0, G_MAXINT,
+ "The number of extra data pattern markers", 0, 64,
DEFAULT_PATTERN_DATA_COUNT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+ g_object_class_install_property (gobject_class, PROP_PATTERN_DATA_64,
+ g_param_spec_uint64 ("pattern-data-uint64", "Pattern data",
+ "The extra data pattern markers", 0, G_MAXUINT64,
+ DEFAULT_PATTERN_DATA, G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
g_object_class_install_property (gobject_class, PROP_PATTERN_DATA,
g_param_spec_int ("pattern-data", "Pattern data",
"The extra data pattern markers", 0, G_MAXINT,
- DEFAULT_PATTERN_DATA, G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+ DEFAULT_PATTERN_DATA, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, PROP_ENABLED,
g_param_spec_boolean ("enabled", "Enabled",
"Enable or disable the filter",