mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-10 17:35:59 +00:00
plugins/elements/gstidentity.*: Add property to disable handoff signal emission. Fixes #498694.
Original commit message from CVS: Patch by: Laurent Glayal <spglegle at yahoo dot fr> * plugins/elements/gstidentity.c: (gst_identity_class_init), (gst_identity_init), (gst_identity_transform_ip), (gst_identity_set_property), (gst_identity_get_property): * plugins/elements/gstidentity.h: Add property to disable handoff signal emission. Fixes #498694. API: GstIdentity::signal-handoffs
This commit is contained in:
parent
5e43ebcda5
commit
54ff34dc2d
3 changed files with 39 additions and 4 deletions
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
2007-11-21 Wim Taymans <wim.taymans@gmail.com>
|
||||||
|
|
||||||
|
Patch by: Laurent Glayal <spglegle at yahoo dot fr>
|
||||||
|
|
||||||
|
* plugins/elements/gstidentity.c: (gst_identity_class_init),
|
||||||
|
(gst_identity_init), (gst_identity_transform_ip),
|
||||||
|
(gst_identity_set_property), (gst_identity_get_property):
|
||||||
|
* plugins/elements/gstidentity.h:
|
||||||
|
Add property to disable handoff signal emission. Fixes #498694.
|
||||||
|
API: GstIdentity::signal-handoffs
|
||||||
|
|
||||||
2007-11-21 Julien Moutte <julien@fluendo.com>
|
2007-11-21 Julien Moutte <julien@fluendo.com>
|
||||||
|
|
||||||
* docs/faq/gst-uninstalled: Yet another missing library for the
|
* docs/faq/gst-uninstalled: Yet another missing library for the
|
||||||
|
|
|
@ -71,6 +71,7 @@ enum
|
||||||
#define DEFAULT_CHECK_PERFECT FALSE
|
#define DEFAULT_CHECK_PERFECT FALSE
|
||||||
#define DEFAULT_CHECK_IMPERFECT_TIMESTAMP FALSE
|
#define DEFAULT_CHECK_IMPERFECT_TIMESTAMP FALSE
|
||||||
#define DEFAULT_CHECK_IMPERFECT_OFFSET FALSE
|
#define DEFAULT_CHECK_IMPERFECT_OFFSET FALSE
|
||||||
|
#define DEFAULT_SIGNAL_HANDOFFS TRUE
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
@ -86,7 +87,8 @@ enum
|
||||||
PROP_SYNC,
|
PROP_SYNC,
|
||||||
PROP_CHECK_PERFECT,
|
PROP_CHECK_PERFECT,
|
||||||
PROP_CHECK_IMPERFECT_TIMESTAMP,
|
PROP_CHECK_IMPERFECT_TIMESTAMP,
|
||||||
PROP_CHECK_IMPERFECT_OFFSET
|
PROP_CHECK_IMPERFECT_OFFSET,
|
||||||
|
PROP_SIGNAL_HANDOFFS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -229,7 +231,20 @@ gst_identity_class_init (GstIdentityClass * klass)
|
||||||
"Send element messages if offset and offset_end do not match up",
|
"Send element messages if offset and offset_end do not match up",
|
||||||
DEFAULT_CHECK_IMPERFECT_OFFSET, G_PARAM_READWRITE));
|
DEFAULT_CHECK_IMPERFECT_OFFSET, G_PARAM_READWRITE));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* GstIdentity:signal-handoffs
|
||||||
|
*
|
||||||
|
* If set to #TRUE, the identity will emit a handoff signal when handling a buffer.
|
||||||
|
* When set to #FALSE, no signal will be emited, which might improve performance.
|
||||||
|
*
|
||||||
|
* Since: 0.10.16
|
||||||
|
*/
|
||||||
|
g_object_class_install_property (gobject_class, PROP_SIGNAL_HANDOFFS,
|
||||||
|
g_param_spec_boolean ("signal-handoffs",
|
||||||
|
"Signal handoffs", "Send a signal before pushing the buffer",
|
||||||
|
DEFAULT_SIGNAL_HANDOFFS, G_PARAM_READWRITE));
|
||||||
|
|
||||||
|
/**
|
||||||
* GstIdentity::handoff:
|
* GstIdentity::handoff:
|
||||||
* @identity: the identity instance
|
* @identity: the identity instance
|
||||||
* @buffer: the buffer that just has been received
|
* @buffer: the buffer that just has been received
|
||||||
|
@ -268,6 +283,7 @@ gst_identity_init (GstIdentity * identity, GstIdentityClass * g_class)
|
||||||
identity->check_imperfect_offset = DEFAULT_CHECK_IMPERFECT_OFFSET;
|
identity->check_imperfect_offset = DEFAULT_CHECK_IMPERFECT_OFFSET;
|
||||||
identity->dump = DEFAULT_DUMP;
|
identity->dump = DEFAULT_DUMP;
|
||||||
identity->last_message = NULL;
|
identity->last_message = NULL;
|
||||||
|
identity->signal_handoffs = DEFAULT_SIGNAL_HANDOFFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -548,8 +564,9 @@ gst_identity_transform_ip (GstBaseTransform * trans, GstBuffer * buf)
|
||||||
GST_BUFFER_SIZE (buf) * GST_SECOND / identity->datarate;
|
GST_BUFFER_SIZE (buf) * GST_SECOND / identity->datarate;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_signal_emit (G_OBJECT (identity), gst_identity_signals[SIGNAL_HANDOFF], 0,
|
if (identity->signal_handoffs)
|
||||||
buf);
|
g_signal_emit (G_OBJECT (identity), gst_identity_signals[SIGNAL_HANDOFF], 0,
|
||||||
|
buf);
|
||||||
|
|
||||||
if (trans->segment.format == GST_FORMAT_TIME)
|
if (trans->segment.format == GST_FORMAT_TIME)
|
||||||
runtimestamp = gst_segment_to_running_time (&trans->segment,
|
runtimestamp = gst_segment_to_running_time (&trans->segment,
|
||||||
|
@ -640,6 +657,9 @@ gst_identity_set_property (GObject * object, guint prop_id,
|
||||||
case PROP_CHECK_IMPERFECT_OFFSET:
|
case PROP_CHECK_IMPERFECT_OFFSET:
|
||||||
identity->check_imperfect_offset = g_value_get_boolean (value);
|
identity->check_imperfect_offset = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_SIGNAL_HANDOFFS:
|
||||||
|
identity->signal_handoffs = g_value_get_boolean (value);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
@ -693,6 +713,9 @@ gst_identity_get_property (GObject * object, guint prop_id, GValue * value,
|
||||||
case PROP_CHECK_IMPERFECT_OFFSET:
|
case PROP_CHECK_IMPERFECT_OFFSET:
|
||||||
g_value_set_boolean (value, identity->check_imperfect_offset);
|
g_value_set_boolean (value, identity->check_imperfect_offset);
|
||||||
break;
|
break;
|
||||||
|
case PROP_SIGNAL_HANDOFFS:
|
||||||
|
g_value_set_boolean (value, identity->signal_handoffs);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -72,6 +72,7 @@ struct _GstIdentity {
|
||||||
guint64 prev_offset_end;
|
guint64 prev_offset_end;
|
||||||
gchar *last_message;
|
gchar *last_message;
|
||||||
guint64 offset;
|
guint64 offset;
|
||||||
|
gboolean signal_handoffs;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GstIdentityClass {
|
struct _GstIdentityClass {
|
||||||
|
|
Loading…
Reference in a new issue