From: Vinod Koul Date: Tue, 12 Jun 2012 17:12:17 +0000 (+0530) Subject: compress: fix the timestamp calculation X-Git-Tag: v0.1.0~25 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=5d5a57315054e8fd4c0c8f800a45540275d90512;p=tinycompress.git compress: fix the timestamp calculation use u64 for extended range and also ensure that seconds and nano seconds are claculated seprately Signed-off-by: Namarta Kohli Signed-off-by: Vinod Koul --- diff --git a/compress.c b/compress.c index f4cf05a..2e263a0 100644 --- a/compress.c +++ b/compress.c @@ -272,7 +272,7 @@ int compress_get_hpointer(struct compress *compress, unsigned int *avail, struct timespec *tstamp) { struct snd_compr_avail kavail; - size_t time; + __u64 time; if (!is_compress_ready(compress)) return oops(compress, -ENODEV, "device not ready"); @@ -280,11 +280,10 @@ int compress_get_hpointer(struct compress *compress, if (ioctl(compress->fd, SNDRV_COMPRESS_AVAIL, &kavail)) return oops(compress, errno, "cannot get avail"); *avail = (unsigned int)kavail.avail; - - time = (kavail.tstamp.pcm_io_frames) / kavail.tstamp.sampling_rate; + time = kavail.tstamp.pcm_io_frames / kavail.tstamp.sampling_rate; tstamp->tv_sec = time; - time = (kavail.tstamp.pcm_io_frames * 1000000000) / kavail.tstamp.sampling_rate; - tstamp->tv_nsec = time; + time = kavail.tstamp.pcm_io_frames % kavail.tstamp.sampling_rate; + tstamp->tv_nsec = time * 1000000000 / kavail.tstamp.sampling_rate; return 0; }