diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-10-08 09:57:27 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-10-08 09:57:27 +0200 |
commit | f4e033e836d36ee95103886032932bf823db5e3f (patch) | |
tree | 9a1dda8d0c07a5cfeebc047617b83056d715701c /plugins | |
parent | f73db06c09ae3480b3d76a2bba8700444d00f181 (diff) |
Imported Upstream version 1.0.1upstream/1.0.1
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/elements/gstcapsfilter.c | 1 | ||||
-rw-r--r-- | plugins/elements/gstfakesink.c | 2 | ||||
-rw-r--r-- | plugins/elements/gstfakesrc.c | 8 | ||||
-rw-r--r-- | plugins/elements/gstidentity.c | 7 | ||||
-rw-r--r-- | plugins/elements/gstmultiqueue.c | 2 | ||||
-rw-r--r-- | plugins/elements/gsttee.c | 2 | ||||
-rw-r--r-- | plugins/elements/gsttypefindelement.c | 16 | ||||
-rw-r--r-- | plugins/elements/gsttypefindelement.h | 1 |
8 files changed, 30 insertions, 9 deletions
diff --git a/plugins/elements/gstcapsfilter.c b/plugins/elements/gstcapsfilter.c index 5fa2ab3..fd6a094 100644 --- a/plugins/elements/gstcapsfilter.c +++ b/plugins/elements/gstcapsfilter.c @@ -128,6 +128,7 @@ gst_capsfilter_init (GstCapsFilter * filter) { GstBaseTransform *trans = GST_BASE_TRANSFORM (filter); gst_base_transform_set_gap_aware (trans, TRUE); + gst_base_transform_set_prefer_passthrough (trans, FALSE); filter->filter_caps = gst_caps_new_any (); } diff --git a/plugins/elements/gstfakesink.c b/plugins/elements/gstfakesink.c index c328f37..2e28b01 100644 --- a/plugins/elements/gstfakesink.c +++ b/plugins/elements/gstfakesink.c @@ -262,7 +262,7 @@ gst_fake_sink_set_property (GObject * object, guint prop_id, switch (prop_id) { case PROP_STATE_ERROR: - sink->state_error = g_value_get_enum (value); + sink->state_error = (GstFakeSinkStateError) g_value_get_enum (value); break; case PROP_SILENT: sink->silent = g_value_get_boolean (value); diff --git a/plugins/elements/gstfakesrc.c b/plugins/elements/gstfakesrc.c index bbdff16..ce43c38 100644 --- a/plugins/elements/gstfakesrc.c +++ b/plugins/elements/gstfakesrc.c @@ -449,7 +449,7 @@ gst_fake_src_set_property (GObject * object, guint prop_id, g_warning ("not yet implemented"); break; case PROP_DATA: - src->data = g_value_get_enum (value); + src->data = (GstFakeSrcDataType) g_value_get_enum (value); if (src->data == FAKE_SRC_DATA_SUBBUFFER) { if (!src->parent) @@ -462,7 +462,7 @@ gst_fake_src_set_property (GObject * object, guint prop_id, } break; case PROP_SIZETYPE: - src->sizetype = g_value_get_enum (value); + src->sizetype = (GstFakeSrcSizeType) g_value_get_enum (value); break; case PROP_SIZEMIN: src->sizemin = g_value_get_int (value); @@ -474,7 +474,7 @@ gst_fake_src_set_property (GObject * object, guint prop_id, src->parentsize = g_value_get_int (value); break; case PROP_FILLTYPE: - src->filltype = g_value_get_enum (value); + src->filltype = (GstFakeSrcFillType) g_value_get_enum (value); break; case PROP_DATARATE: src->datarate = g_value_get_int (value); @@ -507,7 +507,7 @@ gst_fake_src_set_property (GObject * object, guint prop_id, gst_base_src_set_live (basesrc, g_value_get_boolean (value)); break; case PROP_FORMAT: - src->format = g_value_get_enum (value); + src->format = (GstFormat) g_value_get_enum (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); diff --git a/plugins/elements/gstidentity.c b/plugins/elements/gstidentity.c index be93b86..2475cc8 100644 --- a/plugins/elements/gstidentity.c +++ b/plugins/elements/gstidentity.c @@ -307,6 +307,9 @@ gst_identity_sink_event (GstBaseTransform * trans, GstEvent * event) news = gst_event_new_segment (&segment); gst_pad_event_default (trans->sinkpad, GST_OBJECT_CAST (trans), news); + } else { + /* need to track segment for proper running time */ + gst_event_copy_segment (event, &trans->segment); } } @@ -551,7 +554,7 @@ gst_identity_transform_ip (GstBaseTransform * trans, GstBuffer * buf) GstClockTime time = gst_util_uint64_scale_int (identity->offset, GST_SECOND, identity->datarate); - GST_BUFFER_TIMESTAMP (buf) = time; + GST_BUFFER_PTS (buf) = GST_BUFFER_DTS (buf) = time; GST_BUFFER_DURATION (buf) = size * GST_SECOND / identity->datarate; } @@ -596,7 +599,7 @@ gst_identity_transform_ip (GstBaseTransform * trans, GstBuffer * buf) if (identity->single_segment && (trans->segment.format == GST_FORMAT_TIME) && (ret == GST_FLOW_OK)) { - GST_BUFFER_TIMESTAMP (buf) = runtimestamp; + GST_BUFFER_PTS (buf) = GST_BUFFER_DTS (buf) = runtimestamp; GST_BUFFER_OFFSET (buf) = GST_CLOCK_TIME_NONE; GST_BUFFER_OFFSET_END (buf) = GST_CLOCK_TIME_NONE; } diff --git a/plugins/elements/gstmultiqueue.c b/plugins/elements/gstmultiqueue.c index cfa8a24..8afcebb 100644 --- a/plugins/elements/gstmultiqueue.c +++ b/plugins/elements/gstmultiqueue.c @@ -1091,7 +1091,7 @@ gst_single_queue_push_one (GstMultiQueue * mq, GstSingleQueue * sq, g_cond_signal (&sq->query_handled); GST_MULTI_QUEUE_MUTEX_UNLOCK (mq); } else { - g_warning ("Unexpected object in singlequeue %d (refcounting problem?)", + g_warning ("Unexpected object in singlequeue %u (refcounting problem?)", sq->id); } return result; diff --git a/plugins/elements/gsttee.c b/plugins/elements/gsttee.c index a00c1d1..f739505 100644 --- a/plugins/elements/gsttee.c +++ b/plugins/elements/gsttee.c @@ -443,7 +443,7 @@ gst_tee_set_property (GObject * object, guint prop_id, const GValue * value, tee->silent = g_value_get_boolean (value); break; case PROP_PULL_MODE: - tee->pull_mode = g_value_get_enum (value); + tee->pull_mode = (GstTeePullMode) g_value_get_enum (value); break; case PROP_ALLOC_PAD: { diff --git a/plugins/elements/gsttypefindelement.c b/plugins/elements/gsttypefindelement.c index 33e2376..f9a16f5 100644 --- a/plugins/elements/gsttypefindelement.c +++ b/plugins/elements/gsttypefindelement.c @@ -1055,6 +1055,21 @@ gst_type_find_element_loop (GstPad * pad) } else if (typefind->mode == MODE_NORMAL) { GstBuffer *outbuf = NULL; + if (typefind->need_stream_start) { + gchar *stream_id; + + stream_id = + gst_pad_create_stream_id (typefind->src, GST_ELEMENT_CAST (typefind), + NULL); + + GST_DEBUG_OBJECT (typefind, "Pushing STREAM_START"); + gst_pad_push_event (typefind->src, + gst_event_new_stream_start (stream_id)); + + typefind->need_stream_start = FALSE; + g_free (stream_id); + } + if (typefind->need_segment) { typefind->need_segment = FALSE; gst_pad_push_event (typefind->src, @@ -1136,6 +1151,7 @@ gst_type_find_element_activate_sink_mode (GstPad * pad, GstObject * parent, if (active) { gst_segment_init (&typefind->segment, GST_FORMAT_BYTES); typefind->need_segment = TRUE; + typefind->need_stream_start = TRUE; typefind->offset = 0; res = TRUE; } else { diff --git a/plugins/elements/gsttypefindelement.h b/plugins/elements/gsttypefindelement.h index 2ee3325..66607db 100644 --- a/plugins/elements/gsttypefindelement.h +++ b/plugins/elements/gsttypefindelement.h @@ -61,6 +61,7 @@ struct _GstTypeFindElement { /* Only used when driving the pipeline */ gboolean need_segment; + gboolean need_stream_start; GstSegment segment; guint64 offset; }; |