diff --git a/gst/gstevent.c b/gst/gstevent.c index 9daa7de90f..cd563498aa 100644 --- a/gst/gstevent.c +++ b/gst/gstevent.c @@ -109,6 +109,7 @@ static GstEventQuarks event_quarks[] = { {GST_EVENT_NAVIGATION, "navigation", 0}, {GST_EVENT_LATENCY, "latency", 0}, {GST_EVENT_STEP, "step", 0}, + {GST_EVENT_RENEGOTIATE, "renegotiate", 0}, {GST_EVENT_CUSTOM_UPSTREAM, "custom-upstream", 0}, {GST_EVENT_CUSTOM_DOWNSTREAM, "custom-downstream", 0}, {GST_EVENT_CUSTOM_DOWNSTREAM_OOB, "custom-downstream-oob", 0}, @@ -1281,6 +1282,29 @@ gst_event_parse_step (GstEvent * event, GstFormat * format, guint64 * amount, GST_QUARK (INTERMEDIATE))); } +/** + * gst_event_new_renegotiate: + + * Create a new renegotiate event. The purpose of the step event is to travel + * upstream and make elements renegotiate its caps. This is useful when changing + * properties or elements on the pipeline. + * + * Returns: (transfer full): a new #GstEvent + * + * Since: 0.10.33 + */ +GstEvent * +gst_event_new_renegotiate (void) +{ + GstEvent *event; + + GST_CAT_INFO (GST_CAT_EVENT, "creating renegotiate event"); + + event = gst_event_new_custom (GST_EVENT_RENEGOTIATE, NULL); + + return event; +} + /** * gst_event_new_sink_message: * @msg: (transfer none): the #GstMessage to be posted diff --git a/gst/gstevent.h b/gst/gstevent.h index 74a20175ad..0b76589c8f 100644 --- a/gst/gstevent.h +++ b/gst/gstevent.h @@ -115,6 +115,8 @@ typedef enum { * Since: 0.10.12 * @GST_EVENT_STEP: A request for stepping through the media. Sinks will usually * execute the step operation. Since: 0.10.24 + * @GST_EVENT_RENEGOTIATE: A request for upstream renegotiating caps. + * Since: 0.10.33 * @GST_EVENT_CUSTOM_UPSTREAM: Upstream custom event * @GST_EVENT_CUSTOM_DOWNSTREAM: Downstream custom event that travels in the * data flow. @@ -150,6 +152,7 @@ typedef enum { GST_EVENT_NAVIGATION = GST_EVENT_MAKE_TYPE (17, 0, FLAG(UPSTREAM)), GST_EVENT_LATENCY = GST_EVENT_MAKE_TYPE (18, 0, FLAG(UPSTREAM)), GST_EVENT_STEP = GST_EVENT_MAKE_TYPE (19, 0, FLAG(UPSTREAM)), + GST_EVENT_RENEGOTIATE = GST_EVENT_MAKE_TYPE (20, 0, FLAG(UPSTREAM)), /* custom events start here */ GST_EVENT_CUSTOM_UPSTREAM = GST_EVENT_MAKE_TYPE (32, 0, FLAG(UPSTREAM)), @@ -523,6 +526,9 @@ GstEvent* gst_event_new_step (GstFormat format, guint64 amoun void gst_event_parse_step (GstEvent *event, GstFormat *format, guint64 *amount, gdouble *rate, gboolean *flush, gboolean *intermediate); +/* renegotiate event */ +GstEvent* gst_event_new_renegotiate (void); + G_END_DECLS #endif /* __GST_EVENT_H__ */ diff --git a/gst/gstquark.c b/gst/gstquark.c index 8e71801fa3..8d46be9eb0 100644 --- a/gst/gstquark.c +++ b/gst/gstquark.c @@ -52,7 +52,7 @@ static const gchar *_quark_strings[] = { "quality", "processed", "dropped", "buffering-ranges", "GstMessageProgress", "code", "text", "percent", "timeout", "GstBufferPoolConfig", "caps", "size", "min-buffers", "max-buffers", "prefix", "postfix", "align", "time", - "GstQueryAllocation", "need-pool", "meta", "pool", "GstEventCaps" + "GstQueryAllocation", "need-pool", "meta", "pool", "GstEventCaps", "GstEventRenegotiate" }; GQuark _priv_gst_quark_table[GST_QUARK_MAX]; diff --git a/gst/gstquark.h b/gst/gstquark.h index 87c0f3eb14..ecf080e6a4 100644 --- a/gst/gstquark.h +++ b/gst/gstquark.h @@ -146,8 +146,9 @@ typedef enum _GstQuarkId GST_QUARK_META = 117, GST_QUARK_POOL = 118, GST_QUARK_EVENT_CAPS = 119, + GST_QUARK_EVENT_RENEGOTIATE = 120, - GST_QUARK_MAX = 120 + GST_QUARK_MAX = 121 } GstQuarkId; extern GQuark _priv_gst_quark_table[GST_QUARK_MAX]; diff --git a/win32/common/libgstreamer.def b/win32/common/libgstreamer.def index 6c1cc12242..9dcc4a6430 100644 --- a/win32/common/libgstreamer.def +++ b/win32/common/libgstreamer.def @@ -404,6 +404,7 @@ EXPORTS gst_event_new_new_segment_full gst_event_new_qos gst_event_new_qos_full + gst_event_new_renegotiate gst_event_new_seek gst_event_new_sink_message gst_event_new_step