[Bug 765072] splitmuxsink: Sometimes creates a small one-frame file after EOS
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Fri Apr 15 13:55:14 UTC 2016
https://bugzilla.gnome.org/show_bug.cgi?id=765072
Xavier Claessens <xclaesse at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEEDINFO |NEW
--- Comment #2 from Xavier Claessens <xclaesse at gmail.com> ---
I'm waiting to get EOS event on the bin's bus.
Here is what I think happens:
- EOS is catched on all streams in handle_mq_input().
- In handle_gathered_gop() at_eos is TRUE, it sets state to
SPLITMUX_STATE_ENDING_FILE, but max_out_running_time is not set to
GST_CLOCK_TIME_NONE in that case. So it could still have a possibly incomplete
GOP in the mq that won't be allowed to leave.
- complete_or_wait_on_out() will call send_eos() on every streams. Note that
those EOS are not the EOS queued in the mq, since they are queued behind the
last GOP. It generates eos events because state is SPLITMUX_STATE_ENDING_FILE
just like if we reached file size limit.
- bus_handler() catch EOS. It change state to
SPLITMUX_STATE_START_NEXT_FRAGMENT, and won't let that EOS propagate to
application, so my app won't change state to NULL yet.
- start_next_fragment() goes in the case when reference EOS has in_eos set to
TRUE. It sets state to SPLITMUX_STATE_WAITING_GOP_COMPLETE and
max_out_running_time to GST_CLOCK_TIME_NONE. Note that it also uselessly set
splitmux->have_muxed_something = FALSE; since that value is changed the line
just after.
- The last GOP goes out in a new file, then queued EOS pop out of the mq. This
time the EOS event is propagated up to the pipeline.
- My app catch EOS, change state of splitmuxsink to NULL and it teardown
everything.
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list