mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-24 02:31:03 +00:00
Reset the handled number of samples when going to PAUSED
Original commit message from CVS: Reset the handled number of samples when going to PAUSED Some cleanups
This commit is contained in:
parent
223ce42ed6
commit
7f83fbc9fe
3 changed files with 21 additions and 41 deletions
|
@ -116,13 +116,10 @@ gst_oss_clock_get_internal_time (GstClock *clock)
|
|||
if (diff1) {
|
||||
oss_clock->adjust -= diff2 - diff1;
|
||||
}
|
||||
|
||||
/*
|
||||
g_print ("diff %lld %lld %lld %lld %lld %lld\n",
|
||||
diff1, diff2, time1, time2, diff2 - diff1, oss_clock->adjust);
|
||||
*/
|
||||
|
||||
|
||||
return time2 + oss_clock->adjust;
|
||||
}
|
||||
|
||||
|
|
|
@ -710,31 +710,14 @@ gst_osssink_change_state (GstElement *element)
|
|||
case GST_STATE_READY_TO_PAUSED:
|
||||
osssink->offset = 0LL;
|
||||
osssink->have_offset = FALSE;
|
||||
osssink->handled = 0LL;
|
||||
break;
|
||||
case GST_STATE_PAUSED_TO_PLAYING:
|
||||
/* gst_clock_adjust (osssink->clock, osssink->offset - gst_clock_get_time (osssink->clock)); */
|
||||
break;
|
||||
case GST_STATE_PLAYING_TO_PAUSED:
|
||||
{
|
||||
if (GST_FLAG_IS_SET (element, GST_OSSSINK_OPEN)) {
|
||||
if (osssink->bps) {
|
||||
GstClockTime time;
|
||||
audio_buf_info ospace;
|
||||
gint queued;
|
||||
|
||||
ioctl (osssink->fd, SNDCTL_DSP_GETOSPACE, &ospace);
|
||||
ioctl (osssink->fd, SNDCTL_DSP_RESET, 0);
|
||||
|
||||
queued = (ospace.fragstotal * ospace.fragsize) - ospace.bytes;
|
||||
time = osssink->offset + (osssink->handled - queued) * 1000000LL / osssink->bps;
|
||||
|
||||
//gst_clock_adjust (osssink->clock, time - gst_clock_get_time (osssink->clock));
|
||||
}
|
||||
else {
|
||||
ioctl (osssink->fd, SNDCTL_DSP_RESET, 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (GST_FLAG_IS_SET (element, GST_OSSSINK_OPEN))
|
||||
ioctl (osssink->fd, SNDCTL_DSP_RESET, 0);
|
||||
break;
|
||||
}
|
||||
case GST_STATE_PAUSED_TO_READY:
|
||||
|
|
|
@ -56,32 +56,32 @@ typedef struct _GstOssSink GstOssSink;
|
|||
typedef struct _GstOssSinkClass GstOssSinkClass;
|
||||
|
||||
struct _GstOssSink {
|
||||
GstElement element;
|
||||
GstElement element;
|
||||
|
||||
GstPad *sinkpad;
|
||||
GstPad *sinkpad;
|
||||
GstBufferPool *sinkpool;
|
||||
|
||||
GstClock *provided_clock;
|
||||
GstClock *clock;
|
||||
GstClock *provided_clock;
|
||||
GstClock *clock;
|
||||
|
||||
/* device */
|
||||
gchar *device;
|
||||
gchar *device;
|
||||
|
||||
/* soundcard state */
|
||||
int fd;
|
||||
int caps; /* the capabilities */
|
||||
gint format;
|
||||
gint channels;
|
||||
gint frequency;
|
||||
gint fragment;
|
||||
gboolean mute;
|
||||
guint bufsize;
|
||||
guint bps;
|
||||
gboolean have_offset;
|
||||
guint64 offset;
|
||||
guint64 handled;
|
||||
int fd;
|
||||
int caps; /* the capabilities */
|
||||
gint format;
|
||||
gint channels;
|
||||
gint frequency;
|
||||
gint fragment;
|
||||
gboolean mute;
|
||||
guint bufsize;
|
||||
guint bps;
|
||||
gboolean have_offset;
|
||||
guint64 offset;
|
||||
guint64 handled;
|
||||
|
||||
guint64 fragment_time;
|
||||
guint64 fragment_time;
|
||||
};
|
||||
|
||||
struct _GstOssSinkClass {
|
||||
|
|
Loading…
Reference in a new issue