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