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