#include "config.h"
#endif
+/* FIXME 0.11: suppress warnings for deprecated API such as GStaticRecMutex
+ * with newer GLib versions (>= 2.31.0) */
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
#include "gststreamsynchronizer.h"
+#include "gst/glib-compat-private.h"
GST_DEBUG_CATEGORY_STATIC (stream_synchronizer_debug);
#define GST_CAT_DEFAULT stream_synchronizer_debug
g_mutex_unlock (GST_STREAM_SYNCHRONIZER_CAST(obj)->lock); \
} G_STMT_END
-static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src_%d",
+static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src_%u",
GST_PAD_SRC,
GST_PAD_SOMETIMES,
GST_STATIC_CAPS_ANY);
-static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink_%d",
+static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink_%u",
GST_PAD_SINK,
GST_PAD_REQUEST,
GST_STATIC_CAPS_ANY);
/* Generic pad functions */
static GstIterator *
-gst_stream_synchronizer_iterate_internal_links (GstPad * pad)
+gst_stream_synchronizer_iterate_internal_links (GstPad * pad,
+ GstObject * parent)
{
GstIterator *it = NULL;
GstPad *opad;
}
static gboolean
-gst_stream_synchronizer_query (GstPad * pad, GstQuery ** query)
+gst_stream_synchronizer_query (GstPad * pad, GstObject * parent,
+ GstQuery * query)
{
GstPad *opad;
gboolean ret = FALSE;
- GST_LOG_OBJECT (pad, "Handling query %s", GST_QUERY_TYPE_NAME (*query));
+ GST_LOG_OBJECT (pad, "Handling query %s", GST_QUERY_TYPE_NAME (query));
opad = gst_stream_get_other_pad_from_pad (pad);
if (opad) {
return ret;
}
-static GstCaps *
-gst_stream_synchronizer_getcaps (GstPad * pad)
-{
- GstPad *opad;
- GstCaps *ret = NULL;
-
- opad = gst_stream_get_other_pad_from_pad (pad);
- if (opad) {
- ret = gst_pad_peer_get_caps (opad);
- gst_object_unref (opad);
- }
-
- if (ret == NULL)
- ret = gst_caps_new_any ();
-
- GST_LOG_OBJECT (pad, "Returning caps: %" GST_PTR_FORMAT, ret);
-
- return ret;
-}
-
-static gboolean
-gst_stream_synchronizer_acceptcaps (GstPad * pad, GstCaps * caps)
-{
- GstPad *opad;
- gboolean ret = FALSE;
-
- opad = gst_stream_get_other_pad_from_pad (pad);
- if (opad) {
- ret = gst_pad_peer_accept_caps (opad, caps);
- gst_object_unref (opad);
- }
-
- GST_LOG_OBJECT (pad, "Caps%s accepted: %" GST_PTR_FORMAT, (ret ? "" : " not"),
- caps);
-
- return ret;
-}
-
/* srcpad functions */
static gboolean
-gst_stream_synchronizer_src_event (GstPad * pad, GstEvent * event)
+gst_stream_synchronizer_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
- GstStreamSynchronizer *self =
- GST_STREAM_SYNCHRONIZER (gst_pad_get_parent (pad));
+ GstStreamSynchronizer *self = GST_STREAM_SYNCHRONIZER (parent);
GstPad *opad;
gboolean ret = FALSE;
}
out:
- gst_object_unref (self);
-
return ret;
}
/* sinkpad functions */
static gboolean
-gst_stream_synchronizer_sink_event (GstPad * pad, GstEvent * event)
+gst_stream_synchronizer_sink_event (GstPad * pad, GstObject * parent,
+ GstEvent * event)
{
- GstStreamSynchronizer *self =
- GST_STREAM_SYNCHRONIZER (gst_pad_get_parent (pad));
+ GstStreamSynchronizer *self = GST_STREAM_SYNCHRONIZER (parent);
GstPad *opad;
gboolean ret = FALSE;
GstMessage *message;
gst_event_parse_sink_message (event, &message);
- if (gst_message_has_name (message, "playbin2-stream-changed")) {
+ if (gst_message_has_name (message, "playbin-stream-changed")) {
GstStream *stream;
GST_STREAM_SYNCHRONIZER_LOCK (self);
GstStream *stream;
GstSegment segment;
- gst_event_parse_segment (event, &segment);
+ gst_event_copy_segment (event, &segment);
GST_STREAM_SYNCHRONIZER_LOCK (self);
stream = gst_pad_get_element_private (pad);
if (!seen_data) {
GstBuffer *buf = gst_buffer_new ();
- GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_PREROLL);
gst_pad_push (srcpad, buf);
}
}
}
done:
- gst_object_unref (self);
-
return ret;
}
static GstFlowReturn
-gst_stream_synchronizer_sink_chain (GstPad * pad, GstBuffer * buffer)
+gst_stream_synchronizer_sink_chain (GstPad * pad, GstObject * parent,
+ GstBuffer * buffer)
{
- GstStreamSynchronizer *self =
- GST_STREAM_SYNCHRONIZER (gst_pad_get_parent (pad));
+ GstStreamSynchronizer *self = GST_STREAM_SYNCHRONIZER (parent);
GstPad *opad;
GstFlowReturn ret = GST_FLOW_ERROR;
GstStream *stream;
goto done;
}
- GST_LOG_OBJECT (pad, "Handling buffer %p: size=%u, timestamp=%"
- GST_TIME_FORMAT " duration=%" GST_TIME_FORMAT
+ GST_LOG_OBJECT (pad, "Handling buffer %p: size=%" G_GSIZE_FORMAT
+ ", timestamp=%" GST_TIME_FORMAT " duration=%" GST_TIME_FORMAT
" offset=%" G_GUINT64_FORMAT " offset_end=%" G_GUINT64_FORMAT,
buffer, gst_buffer_get_size (buffer),
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)),
}
done:
-
- gst_object_unref (self);
-
return ret;
}
stream->transform = self;
stream->stream_number = self->current_stream_number;
- tmp = g_strdup_printf ("sink_%d", self->current_stream_number);
+ tmp = g_strdup_printf ("sink_%u", self->current_stream_number);
stream->sinkpad = gst_pad_new_from_static_template (&sinktemplate, tmp);
g_free (tmp);
gst_pad_set_element_private (stream->sinkpad, stream);
GST_DEBUG_FUNCPTR (gst_stream_synchronizer_iterate_internal_links));
gst_pad_set_query_function (stream->sinkpad,
GST_DEBUG_FUNCPTR (gst_stream_synchronizer_query));
- gst_pad_set_getcaps_function (stream->sinkpad,
- GST_DEBUG_FUNCPTR (gst_stream_synchronizer_getcaps));
- gst_pad_set_acceptcaps_function (stream->sinkpad,
- GST_DEBUG_FUNCPTR (gst_stream_synchronizer_acceptcaps));
gst_pad_set_event_function (stream->sinkpad,
GST_DEBUG_FUNCPTR (gst_stream_synchronizer_sink_event));
gst_pad_set_chain_function (stream->sinkpad,
GST_DEBUG_FUNCPTR (gst_stream_synchronizer_sink_chain));
- tmp = g_strdup_printf ("src_%d", self->current_stream_number);
+ tmp = g_strdup_printf ("src_%u", self->current_stream_number);
stream->srcpad = gst_pad_new_from_static_template (&srctemplate, tmp);
g_free (tmp);
gst_pad_set_element_private (stream->srcpad, stream);
GST_DEBUG_FUNCPTR (gst_stream_synchronizer_iterate_internal_links));
gst_pad_set_query_function (stream->srcpad,
GST_DEBUG_FUNCPTR (gst_stream_synchronizer_query));
- gst_pad_set_getcaps_function (stream->srcpad,
- GST_DEBUG_FUNCPTR (gst_stream_synchronizer_getcaps));
- gst_pad_set_acceptcaps_function (stream->srcpad,
- GST_DEBUG_FUNCPTR (gst_stream_synchronizer_acceptcaps));
gst_pad_set_event_function (stream->srcpad,
GST_DEBUG_FUNCPTR (gst_stream_synchronizer_src_event));