flvmux: properly determine final duration

... which can be authoratively obtained from our own written timestamps.
This commit is contained in:
Mark Nauwelaerts 2011-12-16 19:15:38 +01:00
parent fa5c02b211
commit b175d1cbc4

View file

@ -1250,12 +1250,6 @@ gst_flv_mux_determine_duration (GstFlvMux * mux)
}
}
if (duration == GST_CLOCK_TIME_NONE) {
GST_DEBUG_OBJECT (mux, "not able to determine duration "
"from pad timestamps, assuming 0");
return 0;
}
return duration;
}
@ -1269,6 +1263,7 @@ gst_flv_mux_rewrite_header (GstFlvMux * mux)
GList *l;
guint32 index_len, allocate_size;
guint32 i, index_skip;
GstClockTime dur;
if (mux->streamable)
return GST_FLOW_OK;
@ -1281,9 +1276,12 @@ gst_flv_mux_rewrite_header (GstFlvMux * mux)
return GST_FLOW_OK;
}
/* if we were not able to determine the duration before, set it now */
if (mux->duration == GST_CLOCK_TIME_NONE)
mux->duration = gst_flv_mux_determine_duration (mux);
/* determine duration now based on our own timestamping,
* so that it is likely many times better and consistent
* than whatever obtained by some query */
dur = gst_flv_mux_determine_duration (mux);
if (dur != GST_CLOCK_TIME_NONE)
mux->duration = dur;
/* rewrite the duration tag */
d = gst_guint64_to_gdouble (mux->duration);