comparison utils.c @ 1126:77ccf7fe3bd0 libavcodec

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 1e39f273ecd6
children e10e841c9bf0
comparison
equal deleted inserted replaced
1125:0980ae063f4e 1126:77ccf7fe3bd0
234 s->i_quant_factor=-0.8; 234 s->i_quant_factor=-0.8;
235 s->i_quant_offset=0.0; 235 s->i_quant_offset=0.0;
236 s->error_concealment= 3; 236 s->error_concealment= 3;
237 s->error_resilience= 1; 237 s->error_resilience= 1;
238 s->workaround_bugs= FF_BUG_AUTODETECT; 238 s->workaround_bugs= FF_BUG_AUTODETECT;
239 s->frame_rate = 25 * FRAME_RATE_BASE; 239 s->frame_rate_base= 1;
240 s->frame_rate = 25;
240 s->gop_size= 50; 241 s->gop_size= 50;
241 s->me_method= ME_EPZS; 242 s->me_method= ME_EPZS;
242 s->get_buffer= avcodec_default_get_buffer; 243 s->get_buffer= avcodec_default_get_buffer;
243 s->release_buffer= avcodec_default_release_buffer; 244 s->release_buffer= avcodec_default_release_buffer;
244 s->get_format= avcodec_default_get_format; 245 s->get_format= avcodec_default_get_format;
461 } 462 }
462 if (enc->width) { 463 if (enc->width) {
463 snprintf(buf + strlen(buf), buf_size - strlen(buf), 464 snprintf(buf + strlen(buf), buf_size - strlen(buf),
464 ", %dx%d, %0.2f fps", 465 ", %dx%d, %0.2f fps",
465 enc->width, enc->height, 466 enc->width, enc->height,
466 (float)enc->frame_rate / FRAME_RATE_BASE); 467 (float)enc->frame_rate / enc->frame_rate_base);
467 } 468 }
468 if (encode) { 469 if (encode) {
469 snprintf(buf + strlen(buf), buf_size - strlen(buf), 470 snprintf(buf + strlen(buf), buf_size - strlen(buf),
470 ", q=%d-%d", enc->qmin, enc->qmax); 471 ", q=%d-%d", enc->qmin, enc->qmax);
471 } 472 }
586 //FIXME 587 //FIXME
587 break; 588 break;
588 } 589 }
589 } 590 }
590 591
592 int av_reduce(int *dst_nom, int *dst_den, int64_t nom, int64_t den, int64_t max){
593 int exact=1, sign=0;
594 int64_t gcd, larger;
595
596 assert(den != 0);
597
598 if(den < 0){
599 den= -den;
600 nom= -nom;
601 }
602
603 if(nom < 0){
604 nom= -nom;
605 sign= 1;
606 }
607
608 for(;;){ //note is executed 1 or 2 times
609 gcd = ff_gcd(nom, den);
610 nom /= gcd;
611 den /= gcd;
612
613 larger= FFMAX(nom, den);
614
615 if(larger > max){
616 int64_t div= (larger + max - 1) / max;
617 nom = (nom + div/2)/div;
618 den = (den + div/2)/div;
619 exact=0;
620 }else
621 break;
622 }
623
624 if(sign) nom= -nom;
625
626 *dst_nom = nom;
627 *dst_den = den;
628
629 return exact;
630 }
631
632 int64_t av_rescale(int64_t a, int b, int c){
633 uint64_t h, l;
634 assert(c > 0);
635 assert(b >=0);
636
637 if(a<0) return -av_rescale(-a, b, c);
638
639 h= a>>32;
640 if(h==0) return a*b/c;
641
642 l= a&0xFFFFFFFF;
643 l *= b;
644 h *= b;
645
646 l += (h%c)<<32;
647
648 return ((h/c)<<32) + l/c;
649 }
650
591 static int raw_encode_init(AVCodecContext *s) 651 static int raw_encode_init(AVCodecContext *s)
592 { 652 {
593 return 0; 653 return 0;
594 } 654 }
595 655