mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-08 09:04:17 +00:00
mpegtsmux: don't leak force key unit events
This commit is contained in:
parent
045e8bb506
commit
34cf1a1bbc
2 changed files with 14 additions and 10 deletions
|
@ -292,6 +292,7 @@ mpegtsmux_dispose (GObject * object)
|
|||
g_list_free (mux->streamheader);
|
||||
mux->streamheader = NULL;
|
||||
}
|
||||
gst_event_replace (&mux->force_key_unit_event, NULL);
|
||||
GST_CALL_PARENT (G_OBJECT_CLASS, dispose, (object));
|
||||
}
|
||||
|
||||
|
@ -714,6 +715,8 @@ mpegtsmux_sink_event (GstPad * pad, GstEvent * event)
|
|||
out:
|
||||
if (forward)
|
||||
res = ts_data->eventfunc (pad, event);
|
||||
else
|
||||
gst_event_unref (event);
|
||||
|
||||
gst_object_unref (mux);
|
||||
return res;
|
||||
|
@ -723,7 +726,7 @@ static gboolean
|
|||
mpegtsmux_src_event (GstPad * pad, GstEvent * event)
|
||||
{
|
||||
MpegTsMux *mux = GST_MPEG_TSMUX (gst_pad_get_parent (pad));
|
||||
gboolean res = TRUE;
|
||||
gboolean res = TRUE, forward = TRUE;
|
||||
|
||||
switch (GST_EVENT_TYPE (event)) {
|
||||
case GST_EVENT_CUSTOM_UPSTREAM:
|
||||
|
@ -738,6 +741,8 @@ mpegtsmux_src_event (GstPad * pad, GstEvent * event)
|
|||
if (!gst_video_event_is_force_key_unit (event))
|
||||
break;
|
||||
|
||||
forward = FALSE;
|
||||
|
||||
gst_video_event_parse_upstream_force_key_unit (event,
|
||||
&running_time, &all_headers, &count);
|
||||
|
||||
|
@ -783,10 +788,14 @@ mpegtsmux_src_event (GstPad * pad, GstEvent * event)
|
|||
break;
|
||||
}
|
||||
default:
|
||||
res = gst_pad_event_default (pad, event);
|
||||
break;
|
||||
}
|
||||
|
||||
if (forward)
|
||||
res = gst_pad_event_default (pad, event);
|
||||
else
|
||||
gst_event_unref (event);
|
||||
|
||||
gst_object_unref (mux);
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -42,8 +42,6 @@ static GstStaticPadTemplate audio_src_template = GST_STATIC_PAD_TEMPLATE ("src",
|
|||
typedef struct _TestData
|
||||
{
|
||||
GstEvent *sink_event;
|
||||
GstEvent *src_event1;
|
||||
GstEvent *src_event2;
|
||||
gint src_events;
|
||||
} TestData;
|
||||
|
||||
|
@ -60,14 +58,10 @@ src_event (GstPad * pad, GstObject * parent, GstEvent * event)
|
|||
{
|
||||
TestData *data = (TestData *) gst_pad_get_element_private (pad);
|
||||
|
||||
if (event->type == GST_EVENT_CUSTOM_UPSTREAM) {
|
||||
if (event->type == GST_EVENT_CUSTOM_UPSTREAM)
|
||||
data->src_events += 1;
|
||||
if (data->src_event1 != NULL)
|
||||
data->src_event2 = event;
|
||||
else
|
||||
data->src_event1 = event;
|
||||
}
|
||||
|
||||
gst_event_unref (event);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -79,6 +73,7 @@ sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
|
|||
if (event->type == GST_EVENT_CUSTOM_DOWNSTREAM)
|
||||
data->sink_event = event;
|
||||
|
||||
gst_event_unref (event);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue