dashdemux: switch pads and send header file when a newsegment event is sent

This commit is contained in:
Louis-Francis Ratté-Boulianne 2013-01-23 13:19:21 -05:00 committed by Thiago Santos
parent 04004cdf65
commit 489d7a174c

View file

@ -934,7 +934,8 @@ needs_pad_switch (GstDashDemux * demux, GList * fragment)
if (G_LIKELY (demux->srcpad[i])) if (G_LIKELY (demux->srcpad[i]))
srccaps = gst_pad_get_negotiated_caps (demux->srcpad[i]); srccaps = gst_pad_get_negotiated_caps (demux->srcpad[i]);
if (G_UNLIKELY (!srccaps if (G_UNLIKELY (!srccaps
|| (!gst_caps_is_equal_fixed (demux->output_caps[i], srccaps)))) { || (!gst_caps_is_equal_fixed (demux->output_caps[i], srccaps)))
|| demux->need_segment) {
switch_pad = TRUE; switch_pad = TRUE;
} }
if (G_LIKELY (srccaps)) if (G_LIKELY (srccaps))
@ -1003,6 +1004,7 @@ gst_dash_demux_stream_loop (GstDashDemux * demux)
/* Figure out if we need to create/switch pads */ /* Figure out if we need to create/switch pads */
gboolean switch_pad = needs_pad_switch (demux, listfragment); gboolean switch_pad = needs_pad_switch (demux, listfragment);
if (switch_pad) { if (switch_pad) {
GST_WARNING ("Switching pads");
switch_pads (demux, nb_adaptation_set); switch_pads (demux, nb_adaptation_set);
demux->need_segment = TRUE; demux->need_segment = TRUE;
} }
@ -1636,7 +1638,8 @@ need_add_header (GstDashDemux * demux)
return FALSE; return FALSE;
caps = gst_dash_demux_get_input_caps (demux, stream); caps = gst_dash_demux_get_input_caps (demux, stream);
if (!demux->input_caps[stream_idx] if (!demux->input_caps[stream_idx]
|| !gst_caps_is_equal (caps, demux->input_caps[stream_idx])) { || !gst_caps_is_equal (caps, demux->input_caps[stream_idx])
|| demux->need_segment) {
switch_caps = TRUE; switch_caps = TRUE;
gst_caps_unref (caps); gst_caps_unref (caps);
break; break;