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:
Wim Taymans 2002-05-04 18:52:32 +00:00
parent 223ce42ed6
commit 7f83fbc9fe
3 changed files with 21 additions and 41 deletions

View file

@ -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;
}

View file

@ -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:

View file

@ -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 {