Hi, * Michael Niedermayer <michaelni at gmx.at> [2007-01-30 01:34:19 +0100]: > Hi > > On Tue, Jan 23, 2007 at 11:06:53AM +0800, Limin Wang wrote: > > Hi, > > > > > this looks better but it still has problems > > > first it overrides the demuxer timebase blindly, which breaks some > > > h264 in avi/mov, also it breaks user specified timebases > > > (ffmpeg -r 12 myfile.h264 out.abc) > > > > > > so the check should not be for CODEC_ID_H264 but rather for the lack of > > > a set timebase (this needs some change to libavformat/raw.c more specifically > > > the hardcoded 1/25 timebase there should be changed to 0/0) then utils.c > > > somewhere should check for this and set it to the codec timebase > > > st->codec->time_base with av_set_pts_info or if that also is 0/0 then > > > use some random default like 1/25 > > > > I have fixed by your suggestion, please review the attached patch. One problem > > is it'll cause av_rescale_q() in utils.c floating point exception, I don't know > > what's the background. After comment it out, I can pass the test without > > av_rescale_q cant work with 0/0 timebase > a if(timebase.den != 0) around that should fix it OK, fix by this way instead of comment out. Please review regenerated patch in attached file. > also do the regresion tests pass with your patch (make test) ? > and video grabing should also be tested (by someone) if all works fine then > this patch (with the av_rescale_q if fix) should be ok How to do the regresion tests? Any automatic test script? I have pass the test with (h264->yuv, mov->yuv, > mp4->yuv). Who can do the video grabing testing? I don't know how to test it. Thanks, Limin > [...] > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > Democracy is the form of government in which you can choose your dictator > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel at mplayerhq.hu > http://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel -------------- next part -------------- Index: ffmpeg.c =================================================================== --- ffmpeg.c (revision 7763) +++ ffmpeg.c (working copy) @@ -107,8 +107,8 @@ static int frame_leftBand = 0; static int frame_rightBand = 0; static int max_frames[4] = {INT_MAX, INT_MAX, INT_MAX, INT_MAX}; -static int frame_rate = 25; -static int frame_rate_base = 1; +static int frame_rate = 0; +static int frame_rate_base = 0; static float video_qscale = 0; static int video_qdiff = 3; static uint16_t *intra_matrix = NULL; Index: libavformat/utils.c =================================================================== --- libavformat/utils.c (revision 7763) +++ libavformat/utils.c (working copy) @@ -1939,8 +1939,8 @@ st->codec->codec_id == CODEC_ID_SHORTEN || (st->codec->codec_id == CODEC_ID_MPEG4 && !st->need_parsing))*/) try_decode_frame(st, pkt->data, pkt->size); - - if (av_rescale_q(st->codec_info_duration, st->time_base, AV_TIME_BASE_Q) >= ic->max_analyze_duration) { + if (st->time_base.den != 0 && + av_rescale_q(st->codec_info_duration, st->time_base, AV_TIME_BASE_Q) >= ic->max_analyze_duration) { break; } count++; @@ -1986,6 +1986,12 @@ st->r_frame_rate.den = st->time_base.num; } } + + /* update with real frame rate if user didn't force it */ + if( !st->time_base.num ) + av_set_pts_info(st, 64, st->r_frame_rate.num, st->r_frame_rate.den); + else + av_set_pts_info(st, 64, 1, 25); } } Index: libavformat/raw.c =================================================================== --- libavformat/raw.c (revision 7763) +++ libavformat/raw.c (working copy) @@ -304,11 +304,13 @@ /* for mjpeg, specify frame rate */ /* for mpeg4 specify it too (most mpeg4 streams dont have the fixed_vop_rate set ...)*/ if (ap->time_base.num) { + /* user force fps */ av_set_pts_info(st, 64, ap->time_base.num, ap->time_base.den); } else if ( st->codec->codec_id == CODEC_ID_MJPEG || st->codec->codec_id == CODEC_ID_MPEG4 || st->codec->codec_id == CODEC_ID_H264) { - av_set_pts_info(st, 64, 1, 25); + /* default is 0/0 */ + av_set_pts_info(st, 64, 0, 0); } return 0; -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 481 bytes Desc: not available URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070130/9ff5064a/attachment.pgp>
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4