mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-11 19:06:33 +00:00
fluidsynth: reset on flush and state change
This commit is contained in:
parent
d09a72029c
commit
87041064f8
1 changed files with 12 additions and 0 deletions
|
@ -294,6 +294,13 @@ gst_fluidsynth_clip_buffer (GstFluidsynth * fluidsynth, GstBuffer * buffer)
|
|||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
gst_fluidsynth_reset (GstFluidsynth * fluidsynth)
|
||||
{
|
||||
fluid_synth_system_reset (fluidsynth->synth);
|
||||
fluidsynth->last_pts = GST_CLOCK_TIME_NONE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gst_fluidsynth_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
|
||||
{
|
||||
|
@ -325,6 +332,10 @@ gst_fluidsynth_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
|
|||
fluidsynth->segment);
|
||||
res = gst_pad_event_default (pad, parent, event);
|
||||
break;
|
||||
case GST_EVENT_FLUSH_STOP:
|
||||
gst_fluidsynth_reset (fluidsynth);
|
||||
res = gst_pad_event_default (pad, parent, event);
|
||||
break;
|
||||
case GST_EVENT_EOS:
|
||||
/* FIXME, push last samples */
|
||||
res = gst_pad_event_default (pad, parent, event);
|
||||
|
@ -583,6 +594,7 @@ gst_fluidsynth_change_state (GstElement * element, GstStateChange transition)
|
|||
goto open_failed;
|
||||
break;
|
||||
case GST_STATE_CHANGE_READY_TO_PAUSED:
|
||||
gst_fluidsynth_reset (fluidsynth);
|
||||
break;
|
||||
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue