diff utils.c @ 85:25062c9b1f86 libavformat

per context frame_rate_base, this should finally fix frame_rate related av sync issues
author michaelni
date Wed, 12 Mar 2003 15:16:19 +0000
parents 78bec272ce3a
children 27d6df9208d4
line wrap: on
line diff
--- a/utils.c	Wed Mar 12 01:35:47 2003 +0000
+++ b/utils.c	Wed Mar 12 15:16:19 2003 +0000
@@ -614,10 +614,12 @@
 #endif
                         /* stop after 40 frames */
                         if (st->codec_info_nb_real_frames >= 40) {
-                            st->r_frame_rate = (st->codec.frame_rate * 
-                                                st->codec_info_nb_real_frames) /
-                                (st->codec_info_nb_real_frames + 
-                                 (st->codec_info_nb_repeat_frames >> 1));
+                            av_reduce(
+                                &st->r_frame_rate,
+                                &st->r_frame_rate_base,
+                                (int64_t)st->codec.frame_rate * st->codec_info_nb_real_frames,
+                                st->codec_info_nb_real_frames + (st->codec_info_nb_repeat_frames >> 1),
+                                1<<30);
                             goto close_codec;
                         }
                     } else {
@@ -645,8 +647,10 @@
     for(i=0;i<ic->nb_streams;i++) {
         st = ic->streams[i];
         if (st->codec.codec_type == CODEC_TYPE_VIDEO) {
-            if (!st->r_frame_rate)
-                st->r_frame_rate = st->codec.frame_rate;
+            if (!st->r_frame_rate){
+                st->r_frame_rate      = st->codec.frame_rate;
+                st->r_frame_rate_base = st->codec.frame_rate_base;
+            }
         }
     }
 
@@ -820,7 +824,7 @@
         break;
     case CODEC_TYPE_VIDEO:
         av_frac_add(&st->pts, 
-                    (int64_t)s->pts_den * FRAME_RATE_BASE);
+                    (int64_t)s->pts_den * st->codec.frame_rate_base);
         break;
     default:
         break;
@@ -1316,11 +1320,6 @@
     f->num = num;
 }
 
-int av_gcd(int a, int b){
-    if(b) return av_gcd(b, a%b);
-    else  return a;
-}
-
 /**
  * register a new image format
  * @param img_fmt Image format descriptor