8 Aug 2012 09:12
lavf/movenc: add frame rate heuristic for timecode frame rate.
Clément Bœsch <git <at> videolan.org>
2012-08-08 07:12:24 GMT
2012-08-08 07:12:24 GMT
ffmpeg | branch: master | Clément Bœsch <clement.boesch <at> smartjog.com> | Fri Aug 3 15:40:48 2012 +0200| [aca0f78114a4f74e1b59d706c11c1bd5ff6f92d9] | committer: Clément Bœsch lavf/movenc: add frame rate heuristic for timecode frame rate. Fixes ticket 1576. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=aca0f78114a4f74e1b59d706c11c1bd5ff6f92d9 --- libavformat/movenc.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 023b2ca..89a181a 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c <at> <at> -3292,6 +3292,7 <at> <at> static void mov_create_chapter_track(AVFormatContext *s, int tracknum) static int mov_create_timecode_track(AVFormatContext *s, int index, int src_index, const char *tcstr) { + int ret; MOVMuxContext *mov = s->priv_data; MOVTrack *track = &mov->tracks[index]; AVStream *src_st = s->streams[src_index]; <at> <at> -3299,8 +3300,15 <at> <at> static int mov_create_timecode_track(AVFormatContext *s, int index, int src_inde AVPacket pkt = {.stream_index = index, .flags = AV_PKT_FLAG_KEY, .size = 4}; AVRational rate = {src_st->codec->time_base.den, src_st->codec->time_base.num}; + /* if the codec time base makes no sense, try to fallback on stream frame rate */ + if (av_timecode_check_frame_rate(rate) < 0) { + av_log(s, AV_LOG_DEBUG, "timecode: tbc=%d/%d invalid, fallback on %d/%d\n", + rate.num, rate.den, src_st->avg_frame_rate.num, src_st->avg_frame_rate.den); + rate = src_st->avg_frame_rate; + } + /* compute the frame number */ - int ret = av_timecode_init_from_string(&tc, rate, tcstr, s); + ret = av_timecode_init_from_string(&tc, rate, tcstr, s); if (ret < 0) return ret; _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog <at> ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
RSS Feed