Update of /cvsroot/alsa/alsa-lib/src/pcm
In directory sc8-pr-cvs1:/tmp/cvs-serv15126a/src/pcm

Modified Files:
        Makefile.am pcm.c pcm_dmix.c pcm_hw.c pcm_jack.c pcm_null.c 
        pcm_share.c 
Log Message:
Timestamp update (struct timeval -> struct timespec).


Index: Makefile.am
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/Makefile.am,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- Makefile.am 20 Feb 2003 19:58:36 -0000      1.42
+++ Makefile.am 28 Feb 2003 17:23:31 -0000      1.43
@@ -13,7 +13,7 @@
                    pcm_rate.c pcm_plug.c pcm_misc.c pcm_mmap.c pcm_multi.c \
                    pcm_shm.c pcm_file.c pcm_null.c pcm_share.c \
                    pcm_meter.c pcm_hooks.c pcm_lfloat.c pcm_ladspa.c \
-                   pcm_dmix.c pcm_symbols.c $(JACK_PLUGIN)
+                   pcm_dmix.c $(JACK_PLUGIN) pcm_symbols.c
 noinst_HEADERS = pcm_local.h pcm_plugin.h mask.h mask_inline.h \
                 interval.h interval_inline.h plugin_ops.h ladspa.h
 

Index: pcm.c
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/pcm.c,v
retrieving revision 1.246
retrieving revision 1.247
diff -u -r1.246 -r1.247
--- pcm.c       22 Feb 2003 17:53:02 -0000      1.246
+++ pcm.c       28 Feb 2003 17:23:32 -0000      1.247
@@ -1585,9 +1585,9 @@
        assert(status);
        snd_output_printf(out, "state       : %s\n", 
snd_pcm_state_name((snd_pcm_state_t) status->state));
        snd_output_printf(out, "trigger_time: %ld.%06ld\n",
-               status->trigger_tstamp.tv_sec, status->trigger_tstamp.tv_usec);
+               status->trigger_tstamp.tv_sec, status->trigger_tstamp.tv_nsec);
        snd_output_printf(out, "tstamp      : %ld.%06ld\n",
-               status->tstamp.tv_sec, status->tstamp.tv_usec);
+               status->tstamp.tv_sec, status->tstamp.tv_nsec);
        snd_output_printf(out, "delay       : %ld\n", (long)status->delay);
        snd_output_printf(out, "avail       : %ld\n", (long)status->avail);
        snd_output_printf(out, "avail_max   : %ld\n", (long)status->avail_max);
@@ -5538,7 +5538,8 @@
 void snd_pcm_status_get_trigger_tstamp(const snd_pcm_status_t *obj, snd_timestamp_t 
*ptr)
 {
        assert(obj && ptr);
-       *ptr = obj->trigger_tstamp;
+       ptr->tv_sec = obj->trigger_tstamp.tv_sec;
+       ptr->tv_usec = obj->trigger_tstamp.tv_nsec / 1000L;
 }
 
 /** 
@@ -5548,7 +5549,8 @@
 void snd_pcm_status_get_tstamp(const snd_pcm_status_t *obj, snd_timestamp_t *ptr)
 {
        assert(obj && ptr);
-       *ptr = obj->tstamp;
+       ptr->tv_sec = obj->tstamp.tv_sec;
+       ptr->tv_usec = obj->tstamp.tv_nsec / 1000L;
 }
 
 /** 

Index: pcm_dmix.c
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/pcm_dmix.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- pcm_dmix.c  25 Feb 2003 13:35:40 -0000      1.22
+++ pcm_dmix.c  28 Feb 2003 17:23:33 -0000      1.23
@@ -66,6 +66,7 @@
  */
  
 int snd_timer_async(snd_timer_t *timer, int sig, pid_t pid);
+struct timespec snd_pcm_hw_fast_tstamp(snd_pcm_t *pcm);
 
 typedef void (mix_areas1_t)(unsigned int size,
                        volatile signed short *dst, signed short *src,
@@ -117,7 +118,7 @@
        snd_pcm_uframes_t slave_appl_ptr;
        snd_pcm_uframes_t slave_hw_ptr;
        snd_pcm_state_t state;
-       snd_timestamp_t trigger_tstamp;
+       snd_htimestamp_t trigger_tstamp;
        int server, client;
        int comm_fd;    /* communication file descriptor (socket) */
        int hw_fd;      /* hardware file descriptor */
@@ -748,7 +749,10 @@
        if (pcm->stop_threshold >= pcm->boundary)       /* don't care */
                return 0;
        if ((avail = snd_pcm_mmap_playback_avail(pcm)) >= pcm->stop_threshold) {
-               gettimeofday(&dmix->trigger_tstamp, 0);
+               struct timeval tv;
+               gettimeofday(&tv, 0);
+               dmix->trigger_tstamp.tv_sec = tv.tv_sec;
+               dmix->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
                dmix->state = SND_PCM_STATE_XRUN;
                dmix->avail_max = avail;
                return -EPIPE;
@@ -936,7 +940,7 @@
        memset(status, 0, sizeof(*status));
        status->state = dmix->state;
        status->trigger_tstamp = dmix->trigger_tstamp;
-       gettimeofday(&status->tstamp, 0);
+       status->tstamp = snd_pcm_hw_fast_tstamp(dmix->spcm);
        status->avail = snd_pcm_mmap_playback_avail(pcm);
        status->avail_max = status->avail > dmix->avail_max ? status->avail : 
dmix->avail_max;
        dmix->avail_max = 0;
@@ -1013,6 +1017,7 @@
 {
        snd_pcm_dmix_t *dmix = pcm->private_data;
        snd_pcm_sframes_t avail;
+       struct timeval tv;
        int err;
        
        if (dmix->state != SND_PCM_STATE_PREPARED)
@@ -1028,7 +1033,9 @@
        if (avail > (snd_pcm_sframes_t)pcm->buffer_size)
                avail = pcm->buffer_size;
        snd_pcm_dmix_sync_area(pcm, avail);
-       gettimeofday(&dmix->trigger_tstamp, 0);
+       gettimeofday(&tv, 0);
+       dmix->trigger_tstamp.tv_sec = tv.tv_sec;
+       dmix->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
        return 0;
 }
 

Index: pcm_hw.c
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/pcm_hw.c,v
retrieving revision 1.116
retrieving revision 1.117
diff -u -r1.116 -r1.117
--- pcm_hw.c    23 Feb 2003 20:00:07 -0000      1.116
+++ pcm_hw.c    28 Feb 2003 17:23:33 -0000      1.117
@@ -112,8 +112,16 @@
               hw->appl_ptr = hw->mmap_control->appl_ptr; } while (0)
 #define FAST_PCM_STATE(hw) \
        ((enum sndrv_pcm_state) (hw)->mmap_status->state)
+#define FAST_PCM_TSTAMP(hw) \
+       ((hw)->mmap_status->tstamp)
 
 #endif /* DOC_HIDDEN */
+
+struct timespec snd_pcm_hw_fast_tstamp(snd_pcm_t *pcm)
+{
+       snd_pcm_hw_t *hw = pcm->private_data;
+       return FAST_PCM_TSTAMP(hw);
+}
 
 static int snd_pcm_hw_nonblock(snd_pcm_t *pcm, int nonblock)
 {

Index: pcm_jack.c
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/pcm_jack.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- pcm_jack.c  22 Feb 2003 17:19:06 -0000      1.7
+++ pcm_jack.c  28 Feb 2003 17:23:34 -0000      1.8
@@ -51,7 +51,7 @@
 typedef struct {
        int fd;
        int activated;          /* jack is activated? */
-       snd_timestamp_t trigger_tstamp;
+       snd_htimestamp_t trigger_tstamp;
        snd_pcm_uframes_t avail_max;
        snd_pcm_state_t state;
        snd_pcm_uframes_t appl_ptr;
@@ -162,7 +162,7 @@
        memset(status, 0, sizeof(*status));
        status->state = jack->state;
        status->trigger_tstamp = jack->trigger_tstamp;
-       gettimeofday(&status->tstamp, 0);
+       // gettimeofday(&status->tstamp, 0);
        status->avail = pcm->buffer_size;
        status->avail_max = jack->avail_max;
        return 0;
@@ -255,7 +255,10 @@
        if (pcm->stop_threshold < pcm->boundary) {
                samples = snd_pcm_mmap_avail(pcm);
                if (samples >= pcm->stop_threshold) {
-                       gettimeofday(&jack->trigger_tstamp, 0);
+                       struct timeval tv;
+                       gettimeofday(&tv, 0);
+                       jack->trigger_tstamp.tv_sec = tv.tv_sec;
+                       jack->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
                        jack->state = SND_PCM_STATE_XRUN;
                        jack->avail_max = samples;
                }
@@ -319,6 +322,7 @@
 {
        snd_pcm_jack_t *jack = pcm->private_data;
        unsigned int i;
+       struct timeval tv;
        
        assert(jack->state == SND_PCM_STATE_PREPARED);
 
@@ -374,6 +378,9 @@
                }
        }
        
+       gettimeofday(&tv, 0);
+       jack->trigger_tstamp.tv_sec = tv.tv_sec;
+       jack->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
        jack->state = SND_PCM_STATE_RUNNING;
 
        return 0;

Index: pcm_null.c
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/pcm_null.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- pcm_null.c  22 Feb 2003 17:19:14 -0000      1.46
+++ pcm_null.c  28 Feb 2003 17:23:34 -0000      1.47
@@ -39,7 +39,7 @@
 
 #ifndef DOC_HIDDEN
 typedef struct {
-       snd_timestamp_t trigger_tstamp;
+       snd_htimestamp_t trigger_tstamp;
        snd_pcm_state_t state;
        snd_pcm_uframes_t appl_ptr;
        snd_pcm_uframes_t hw_ptr;
@@ -85,10 +85,13 @@
 static int snd_pcm_null_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
 {
        snd_pcm_null_t *null = pcm->private_data;
+       struct timeval tv;
        memset(status, 0, sizeof(*status));
        status->state = null->state;
        status->trigger_tstamp = null->trigger_tstamp;
-       gettimeofday(&status->tstamp, 0);
+       gettimeofday(&tv, 0);
+       status->tstamp.tv_sec = tv.tv_sec;
+       status->tstamp.tv_nsec = tv.tv_usec * 1000L;
        status->avail = pcm->buffer_size;
        status->avail_max = status->avail;
        return 0;

Index: pcm_share.c
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/pcm_share.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -r1.72 -r1.73
--- pcm_share.c 22 Feb 2003 17:19:14 -0000      1.72
+++ pcm_share.c 28 Feb 2003 17:23:35 -0000      1.73
@@ -106,7 +106,7 @@
        unsigned int channels;
        unsigned int *slave_channels;
        int drain_silenced;
-       struct timeval trigger_tstamp;
+       snd_htimestamp_t trigger_tstamp;
        snd_pcm_state_t state;
        snd_pcm_uframes_t hw_ptr;
        snd_pcm_uframes_t appl_ptr;
@@ -890,6 +890,7 @@
        snd_pcm_share_t *share = pcm->private_data;
        snd_pcm_share_slave_t *slave = share->slave;
        snd_pcm_t *spcm = slave->pcm;
+       struct timeval tv;
        int err = 0;
        if (share->state != SND_PCM_STATE_PREPARED)
                return -EBADFD;
@@ -945,7 +946,9 @@
        }
        slave->running_count++;
        _snd_pcm_share_update(pcm);
-       gettimeofday(&share->trigger_tstamp, 0);
+       gettimeofday(&tv, 0);
+       share->trigger_tstamp.tv_sec = tv.tv_sec;
+       share->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
  _end:
        Pthread_mutex_unlock(&slave->mutex);
        return err;
@@ -1072,13 +1075,16 @@
 {
        snd_pcm_share_t *share = pcm->private_data;
        snd_pcm_share_slave_t *slave = share->slave;
+       struct timeval tv;
 #if 0
        if (!pcm->mmap_channels) {
                /* PCM closing already begun in the main thread */
                return;
        }
 #endif
-       gettimeofday(&share->trigger_tstamp, 0);
+       gettimeofday(&tv, 0);
+       share->trigger_tstamp.tv_sec = tv.tv_sec;
+       share->trigger_tstamp.tv_nsec = tv.tv_usec * 1000L;
        if (pcm->stream == SND_PCM_STREAM_CAPTURE) {
                snd_pcm_areas_copy(pcm->stopped_areas, 0,
                                   pcm->running_areas, 0,



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to