diff options
author | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-01-13 19:36:11 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-01-25 19:04:56 -0200 |
commit | dfd8c04ec14b88bc2849e62d6ff9e36f31352b60 (patch) | |
tree | 896b74bee1a5c24b9854e32f3966aa9cc2aef8d0 /drivers/media/video/vivi.c | |
parent | c8793b035df7b18997d1cf34254064dac166f009 (diff) | |
download | linux-dfd8c04ec14b88bc2849e62d6ff9e36f31352b60.tar.gz linux-dfd8c04ec14b88bc2849e62d6ff9e36f31352b60.tar.bz2 linux-dfd8c04ec14b88bc2849e62d6ff9e36f31352b60.zip |
V4L/DVB (7022): Fix timestamp presentation on vivi driver
Due to date overflow, vivi were not working fine anymore.
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/vivi.c')
-rw-r--r-- | drivers/media/video/vivi.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/media/video/vivi.c b/drivers/media/video/vivi.c index c9d23633fe42..1db067c02815 100644 --- a/drivers/media/video/vivi.c +++ b/drivers/media/video/vivi.c @@ -173,7 +173,8 @@ struct vivi_dev { struct vivi_dmaqueue vidq; /* Several counters */ - int h, m, s, us, jiffies; + int h, m, s, ms; + unsigned long jiffies; char timestr[13]; int mv_count; /* Controls bars movement */ @@ -348,10 +349,10 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf) /* Updates stream time */ - dev->us += jiffies_to_usecs(jiffies-dev->jiffies); + dev->ms += jiffies_to_msecs(jiffies-dev->jiffies); dev->jiffies = jiffies; - if (dev->us >= 1000000) { - dev->us -= 1000000; + if (dev->ms >= 1000) { + dev->ms -= 1000; dev->s++; if (dev->s >= 60) { dev->s -= 60; @@ -365,7 +366,7 @@ static void vivi_fillbuff(struct vivi_dev *dev, struct vivi_buffer *buf) } } sprintf(dev->timestr, "%02d:%02d:%02d:%03d", - dev->h, dev->m, dev->s, (dev->us + 500) / 1000); + dev->h, dev->m, dev->s, dev->ms); dprintk(dev, 2, "vivifill at %s: Buffer 0x%08lx size= %d\n", dev->timestr, (unsigned long)tmpbuf, pos); @@ -1073,11 +1074,11 @@ found: dev->h = 0; dev->m = 0; dev->s = 0; - dev->us = 0; + dev->ms = 0; dev->mv_count = 0; dev->jiffies = jiffies; sprintf(dev->timestr, "%02d:%02d:%02d:%03d", - dev->h, dev->m, dev->s, (dev->us + 500) / 1000); + dev->h, dev->m, dev->s, dev->ms); videobuf_queue_vmalloc_init(&fh->vb_vidq, &vivi_video_qops, NULL, &dev->slock, fh->type, V4L2_FIELD_INTERLACED, |