Mercurial > libavcodec.hg
comparison xvidff.c @ 2637:ef44d24680d1 libavcodec
switch to native time bases
author | michael |
---|---|
date | Sat, 30 Apr 2005 21:43:59 +0000 |
parents | 9973475ccf1e |
children | 0f428b024677 |
comparison
equal
deleted
inserted
replaced
2636:2344c6713011 | 2637:ef44d24680d1 |
---|---|
281 xvid_enc_create.num_plugins++; | 281 xvid_enc_create.num_plugins++; |
282 } | 282 } |
283 | 283 |
284 /* Frame Rate and Key Frames */ | 284 /* Frame Rate and Key Frames */ |
285 xvid_correct_framerate(avctx); | 285 xvid_correct_framerate(avctx); |
286 xvid_enc_create.fincr = avctx->frame_rate_base; | 286 xvid_enc_create.fincr = avctx->time_base.num; |
287 xvid_enc_create.fbase = avctx->frame_rate; | 287 xvid_enc_create.fbase = avctx->time_base.den; |
288 if( avctx->gop_size > 0 ) | 288 if( avctx->gop_size > 0 ) |
289 xvid_enc_create.max_key_interval = avctx->gop_size; | 289 xvid_enc_create.max_key_interval = avctx->gop_size; |
290 else | 290 else |
291 xvid_enc_create.max_key_interval = 240; /* XviD's best default */ | 291 xvid_enc_create.max_key_interval = 240; /* XviD's best default */ |
292 | 292 |
549 int frate, fbase; | 549 int frate, fbase; |
550 int est_frate, est_fbase; | 550 int est_frate, est_fbase; |
551 int gcd; | 551 int gcd; |
552 float est_fps, fps; | 552 float est_fps, fps; |
553 | 553 |
554 frate = avctx->frame_rate; | 554 frate = avctx->time_base.den; |
555 fbase = avctx->frame_rate_base; | 555 fbase = avctx->time_base.num; |
556 | 556 |
557 gcd = ff_gcd(frate, fbase); | 557 gcd = ff_gcd(frate, fbase); |
558 if( gcd > 1 ) { | 558 if( gcd > 1 ) { |
559 frate /= gcd; | 559 frate /= gcd; |
560 fbase /= gcd; | 560 fbase /= gcd; |
561 } | 561 } |
562 | 562 |
563 if( frate <= 65000 && fbase <= 65000 ) { | 563 if( frate <= 65000 && fbase <= 65000 ) { |
564 avctx->frame_rate = frate; | 564 avctx->time_base.den = frate; |
565 avctx->frame_rate_base = fbase; | 565 avctx->time_base.num = fbase; |
566 return; | 566 return; |
567 } | 567 } |
568 | 568 |
569 fps = (float)frate / (float)fbase; | 569 fps = (float)frate / (float)fbase; |
570 est_fps = roundf(fps * 1000.0) / 1000.0; | 570 est_fps = roundf(fps * 1000.0) / 1000.0; |
581 est_frate /= gcd; | 581 est_frate /= gcd; |
582 est_fbase /= gcd; | 582 est_fbase /= gcd; |
583 } | 583 } |
584 | 584 |
585 if( fbase > est_fbase ) { | 585 if( fbase > est_fbase ) { |
586 avctx->frame_rate = est_frate; | 586 avctx->time_base.den = est_frate; |
587 avctx->frame_rate_base = est_fbase; | 587 avctx->time_base.num = est_fbase; |
588 av_log(avctx, AV_LOG_DEBUG, | 588 av_log(avctx, AV_LOG_DEBUG, |
589 "XviD: framerate re-estimated: %.2f, %.3f%% correction\n", | 589 "XviD: framerate re-estimated: %.2f, %.3f%% correction\n", |
590 est_fps, (((est_fps - fps)/fps) * 100.0)); | 590 est_fps, (((est_fps - fps)/fps) * 100.0)); |
591 } else { | 591 } else { |
592 avctx->frame_rate = frate; | 592 avctx->time_base.den = frate; |
593 avctx->frame_rate_base = fbase; | 593 avctx->time_base.num = fbase; |
594 } | 594 } |
595 } | 595 } |
596 | 596 |
597 /* | 597 /* |
598 * XviD 2-Pass Kludge Section | 598 * XviD 2-Pass Kludge Section |