]> git.alsa-project.org Git - tinycompress.git/commitdiff
compress: fix the timestamp calculation
authorVinod Koul <vinod.koul@linux.intel.com>
Tue, 12 Jun 2012 17:12:17 +0000 (22:42 +0530)
committerVinod Koul <vinod.koul@linux.intel.com>
Wed, 13 Jun 2012 05:39:42 +0000 (11:09 +0530)
use u64 for extended range and also ensure that seconds and nano seconds are
claculated seprately

Signed-off-by: Namarta Kohli <namartax.kohli@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
compress.c

index f4cf05a4e3fc207ddfa9daa49f1fcd54cde6f0d9..2e263a08c161c791cbc539697a55ccc95c359af6 100644 (file)
@@ -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;
 }