diff dvenc.c @ 3992:36f92f77c85e libavformat

replacing frame_rate and frame_rate_base with an AVRational time_base
author romansh
date Tue, 07 Oct 2008 16:59:18 +0000
parents bf1b4748cd2e
children d5eb96f97305
line wrap: on
line diff
--- a/dvenc.c	Tue Oct 07 16:14:33 2008 +0000
+++ b/dvenc.c	Tue Oct 07 16:59:18 2008 +0000
@@ -77,8 +77,8 @@
     buf[0] = (uint8_t)pack_id;
     switch (pack_id) {
     case dv_timecode:
-        ct = (time_t)(c->frames / ((float)c->sys->frame_rate /
-                                   (float)c->sys->frame_rate_base));
+        ct = (time_t)av_rescale_rnd(c->frames, c->sys->time_base.num, c->sys->time_base.den,
+                                    AV_ROUND_DOWN);
         brktimegm(ct, &tc);
         /*
          * LTC drop-frame frame counter drops two frames (0 and 1) every
@@ -138,8 +138,8 @@
         break;
     case dv_audio_recdate:
     case dv_video_recdate:  /* VAUX recording date */
-        ct = c->start_time + (time_t)(c->frames /
-             ((float)c->sys->frame_rate / (float)c->sys->frame_rate_base));
+        ct = c->start_time + av_rescale_rnd(c->frames, c->sys->time_base.num,
+                                                       c->sys->time_base.den, AV_ROUND_DOWN);
         brktimegm(ct, &tc);
         buf[1] = 0xff; /* ds, tm, tens of time zone, units of time zone */
                        /* 0xff is very likely to be "unknown" */
@@ -154,8 +154,8 @@
         break;
     case dv_audio_rectime:  /* AAUX recording time */
     case dv_video_rectime:  /* VAUX recording time */
-        ct = c->start_time + (time_t)(c->frames /
-             ((float)c->sys->frame_rate / (float)c->sys->frame_rate_base));
+        ct = c->start_time + av_rescale_rnd(c->frames, c->sys->time_base.num,
+                                                       c->sys->time_base.den, AV_ROUND_DOWN);
         brktimegm(ct, &tc);
         buf[1] = (3 << 6) | /* reserved -- always 1 */
                  0x3f; /* tens of frame, units of frame: 0x3f - "unknown" ? */