Mercurial > libavformat.hg
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