diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2007-12-26 22:28:22 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2007-12-26 22:28:22 +0000 |
commit | 9de0be61bec565c8ad7ea48c169aed4d55144b5c (patch) | |
tree | 03870bffe0dafbe5db4078f4e27c2199fcbfec41 | |
parent | b4abe1d198ac5542b4f87a357134f14c7fbf7baa (diff) | |
download | ffmpeg-9de0be61bec565c8ad7ea48c169aed4d55144b5c.tar.gz |
Do not force fps unless the user actually specified one.
fixes issue309
Originally committed as revision 11322 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | ffmpeg.c | 10 | ||||
-rw-r--r-- | libavformat/raw.c | 5 |
2 files changed, 9 insertions, 6 deletions
@@ -115,7 +115,7 @@ static int frame_bottomBand = 0; static int frame_leftBand = 0; static int frame_rightBand = 0; static int max_frames[4] = {INT_MAX, INT_MAX, INT_MAX, INT_MAX}; -static AVRational frame_rate = (AVRational) {25,1}; +static AVRational frame_rate = (AVRational) {0,0}; static float video_qscale = 0; static int video_qdiff = 3; static uint16_t *intra_matrix = NULL; @@ -2869,6 +2869,7 @@ static void new_video_stream(AVFormatContext *oc) char *p; int i; AVCodec *codec; + AVRational fps= frame_rate.num ? frame_rate : (AVRational){25,1}; codec_id = av_guess_codec(oc->oformat, NULL, oc->filename, NULL, CODEC_TYPE_VIDEO); if (video_codec_name) @@ -2885,15 +2886,14 @@ static void new_video_stream(AVFormatContext *oc) av_set_string(video_enc, opt_names[i], str); } - video_enc->time_base.den = frame_rate.num; - video_enc->time_base.num = frame_rate.den; + video_enc->time_base.den = fps.num; + video_enc->time_base.num = fps.den; if(codec && codec->supported_framerates){ const AVRational *p= codec->supported_framerates; - AVRational req= (AVRational){frame_rate.num, frame_rate.den}; const AVRational *best=NULL; AVRational best_error= (AVRational){INT_MAX, 1}; for(; p->den!=0; p++){ - AVRational error= av_sub_q(req, *p); + AVRational error= av_sub_q(fps, *p); if(error.num <0) error.num *= -1; if(av_cmp_q(error, best_error) < 0){ best_error= error; diff --git a/libavformat/raw.c b/libavformat/raw.c index 08e75c5f59..7efa716a53 100644 --- a/libavformat/raw.c +++ b/libavformat/raw.c @@ -85,7 +85,10 @@ static int raw_read_header(AVFormatContext *s, AVFormatParameters *ap) av_set_pts_info(st, 64, 1, st->codec->sample_rate); break; case CODEC_TYPE_VIDEO: - av_set_pts_info(st, 64, ap->time_base.num, ap->time_base.den); + if(ap->time_base.num) + av_set_pts_info(st, 64, ap->time_base.num, ap->time_base.den); + else + av_set_pts_info(st, 64, 1, 25); st->codec->width = ap->width; st->codec->height = ap->height; st->codec->pix_fmt = ap->pix_fmt; |