ARG_LOOP_BASED,
ARG_SLEEP_TIME,
ARG_DUPLICATE,
+ ARG_ERROR_AFTER,
ARG_SILENT,
};
g_param_spec_uint ("sleep_time", "sleep_time", "sleep_time",
0, G_MAXUINT, 0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DUPLICATE,
- g_param_spec_uint ("duplicate", "duplicate", "duplicate",
+ g_param_spec_uint ("duplicate", "Duplicate Buffers", "Push the buffers N times",
0, G_MAXUINT, 1, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ERROR_AFTER,
+ g_param_spec_int ("error_after", "Error After", "Error after N buffers",
+ G_MININT, G_MAXINT, -1, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SILENT,
g_param_spec_boolean ("silent", "silent", "silent",
TRUE,G_PARAM_READWRITE));
identity->loop_based = FALSE;
identity->sleep_time = 0;
identity->duplicate = 1;
+ identity->error_after = -1;
identity->silent = FALSE;
}
identity = GST_IDENTITY (gst_pad_get_parent (pad));
+ if (identity->error_after >= 0) {
+ identity->error_after--;
+ if (identity->error_after == 0) {
+ gst_buffer_unref (buf);
+ gst_element_error (GST_ELEMENT (identity), "errored after iterations as requested");
+ return;
+ }
+ }
+
for (i=identity->duplicate; i; i--) {
if (!identity->silent)
g_print("identity: chain ******* (%s:%s)i (%d bytes, %llu) \n",
identity = GST_IDENTITY (element);
buf = gst_pad_pull (identity->sinkpad);
+ if (GST_IS_EVENT (buf)) {
+ gst_pad_event_default (identity->sinkpad, GST_EVENT (buf));
+ }
+
+ if (identity->error_after >= 0) {
+ identity->error_after--;
+ if (identity->error_after == 0) {
+ gst_buffer_unref (buf);
+ gst_element_error (element, "errored after iterations as requested");
+ return;
+ }
+ }
for (i=identity->duplicate; i; i--) {
if (!identity->silent)
case ARG_DUPLICATE:
identity->duplicate = g_value_get_uint (value);
break;
+ case ARG_ERROR_AFTER:
+ identity->error_after = g_value_get_uint (value);
+ break;
default:
break;
}
case ARG_DUPLICATE:
g_value_set_uint (value, identity->duplicate);
break;
+ case ARG_ERROR_AFTER:
+ g_value_set_uint (value, identity->error_after);
+ break;
case ARG_SILENT:
g_value_set_boolean (value, identity->silent);
break;
ARG_LOOP_BASED,
ARG_SLEEP_TIME,
ARG_DUPLICATE,
+ ARG_ERROR_AFTER,
ARG_SILENT,
};
g_param_spec_uint ("sleep_time", "sleep_time", "sleep_time",
0, G_MAXUINT, 0, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_DUPLICATE,
- g_param_spec_uint ("duplicate", "duplicate", "duplicate",
+ g_param_spec_uint ("duplicate", "Duplicate Buffers", "Push the buffers N times",
0, G_MAXUINT, 1, G_PARAM_READWRITE));
+ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_ERROR_AFTER,
+ g_param_spec_int ("error_after", "Error After", "Error after N buffers",
+ G_MININT, G_MAXINT, -1, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SILENT,
g_param_spec_boolean ("silent", "silent", "silent",
TRUE,G_PARAM_READWRITE));
identity->loop_based = FALSE;
identity->sleep_time = 0;
identity->duplicate = 1;
+ identity->error_after = -1;
identity->silent = FALSE;
}
identity = GST_IDENTITY (gst_pad_get_parent (pad));
+ if (identity->error_after >= 0) {
+ identity->error_after--;
+ if (identity->error_after == 0) {
+ gst_buffer_unref (buf);
+ gst_element_error (GST_ELEMENT (identity), "errored after iterations as requested");
+ return;
+ }
+ }
+
for (i=identity->duplicate; i; i--) {
if (!identity->silent)
g_print("identity: chain ******* (%s:%s)i (%d bytes, %llu) \n",
identity = GST_IDENTITY (element);
buf = gst_pad_pull (identity->sinkpad);
+ if (GST_IS_EVENT (buf)) {
+ gst_pad_event_default (identity->sinkpad, GST_EVENT (buf));
+ }
+
+ if (identity->error_after >= 0) {
+ identity->error_after--;
+ if (identity->error_after == 0) {
+ gst_buffer_unref (buf);
+ gst_element_error (element, "errored after iterations as requested");
+ return;
+ }
+ }
for (i=identity->duplicate; i; i--) {
if (!identity->silent)
case ARG_DUPLICATE:
identity->duplicate = g_value_get_uint (value);
break;
+ case ARG_ERROR_AFTER:
+ identity->error_after = g_value_get_uint (value);
+ break;
default:
break;
}
case ARG_DUPLICATE:
g_value_set_uint (value, identity->duplicate);
break;
+ case ARG_ERROR_AFTER:
+ g_value_set_uint (value, identity->error_after);
+ break;
case ARG_SILENT:
g_value_set_boolean (value, identity->silent);
break;