mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-26 02:00:33 +00:00
oggdemux: keep track of added pads
Keep track of the pads we added and removed. Remove some unused fields. Don't add pads for which we don't have caps.
This commit is contained in:
parent
06e2d2791b
commit
4b9666aedb
2 changed files with 6 additions and 4 deletions
|
@ -1527,7 +1527,7 @@ gst_ogg_demux_deactivate_current_chain (GstOggDemux * ogg)
|
||||||
GstOggPad *pad = g_array_index (chain->streams, GstOggPad *, i);
|
GstOggPad *pad = g_array_index (chain->streams, GstOggPad *, i);
|
||||||
GstEvent *event;
|
GstEvent *event;
|
||||||
|
|
||||||
if (pad->map.is_skeleton)
|
if (!pad->added)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
event = gst_event_new_eos ();
|
event = gst_event_new_eos ();
|
||||||
|
@ -1540,6 +1540,8 @@ gst_ogg_demux_deactivate_current_chain (GstOggDemux * ogg)
|
||||||
gst_pad_set_active (GST_PAD_CAST (pad), FALSE);
|
gst_pad_set_active (GST_PAD_CAST (pad), FALSE);
|
||||||
|
|
||||||
gst_element_remove_pad (GST_ELEMENT (ogg), GST_PAD_CAST (pad));
|
gst_element_remove_pad (GST_ELEMENT (ogg), GST_PAD_CAST (pad));
|
||||||
|
|
||||||
|
pad->added = FALSE;
|
||||||
}
|
}
|
||||||
/* if we cannot seek back to the chain, we can destroy the chain
|
/* if we cannot seek back to the chain, we can destroy the chain
|
||||||
* completely */
|
* completely */
|
||||||
|
@ -1574,7 +1576,7 @@ gst_ogg_demux_activate_chain (GstOggDemux * ogg, GstOggChain * chain,
|
||||||
|
|
||||||
pad = g_array_index (chain->streams, GstOggPad *, i);
|
pad = g_array_index (chain->streams, GstOggPad *, i);
|
||||||
|
|
||||||
if (pad->map.is_skeleton)
|
if (pad->map.is_skeleton || pad->added || GST_PAD_CAPS (pad) == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
GST_DEBUG_OBJECT (ogg, "adding pad %" GST_PTR_FORMAT, pad);
|
GST_DEBUG_OBJECT (ogg, "adding pad %" GST_PTR_FORMAT, pad);
|
||||||
|
@ -1583,6 +1585,7 @@ gst_ogg_demux_activate_chain (GstOggDemux * ogg, GstOggChain * chain,
|
||||||
pad->discont = TRUE;
|
pad->discont = TRUE;
|
||||||
pad->map.last_size = 0;
|
pad->map.last_size = 0;
|
||||||
pad->last_ret = GST_FLOW_OK;
|
pad->last_ret = GST_FLOW_OK;
|
||||||
|
pad->added = TRUE;
|
||||||
|
|
||||||
structure = gst_caps_get_structure (GST_PAD_CAPS (pad), 0);
|
structure = gst_caps_get_structure (GST_PAD_CAPS (pad), 0);
|
||||||
pad->is_sparse =
|
pad->is_sparse =
|
||||||
|
|
|
@ -112,8 +112,7 @@ struct _GstOggPad
|
||||||
gboolean discont;
|
gboolean discont;
|
||||||
GstFlowReturn last_ret; /* last return of _pad_push() */
|
GstFlowReturn last_ret; /* last return of _pad_push() */
|
||||||
|
|
||||||
gboolean dynamic; /* True if the internal element had dynamic pads */
|
gboolean added;
|
||||||
guint padaddedid; /* The signal id for element::pad-added */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GstOggPadClass
|
struct _GstOggPadClass
|
||||||
|
|
Loading…
Reference in a new issue