GstOggPad *pad = g_array_index (chain->streams, GstOggPad *, i);
GstEvent *event;
- if (pad->map.is_skeleton)
+ if (!pad->added)
continue;
event = gst_event_new_eos ();
gst_pad_set_active (GST_PAD_CAST (pad), FALSE);
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
* completely */
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;
GST_DEBUG_OBJECT (ogg, "adding pad %" GST_PTR_FORMAT, pad);
pad->discont = TRUE;
pad->map.last_size = 0;
pad->last_ret = GST_FLOW_OK;
+ pad->added = TRUE;
structure = gst_caps_get_structure (GST_PAD_CAPS (pad), 0);
pad->is_sparse =
gboolean discont;
GstFlowReturn last_ret; /* last return of _pad_push() */
- gboolean dynamic; /* True if the internal element had dynamic pads */
- guint padaddedid; /* The signal id for element::pad-added */
+ gboolean added;
};
struct _GstOggPadClass