mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
flvmux: properly determine final duration
... which can be authoratively obtained from our own written timestamps.
This commit is contained in:
parent
fa5c02b211
commit
b175d1cbc4
1 changed files with 7 additions and 9 deletions
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue