diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2008-05-23 22:15:13 +0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2008-05-23 22:15:13 +0400 |
commit | abd2256dbe1cd10cc8d58d3225acfd1bb207af2a (patch) | |
tree | 0e218dc6ef2e583e88f206d7fd2b2cfc2c81f970 | |
parent | f6e76ba476939c4b92da5608d33aa5aebdcbeebc (diff) |
Pass time_base as argument to new_chapter() as well.
This fixes the wrong timebase the matroska demuxer had after my previous commits.
Maybe we should reduce new_chapter() to just (AVFormatContext, int id) ?
Originally committed as revision 13266 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavformat/avformat.h | 6 | ||||
-rw-r--r-- | libavformat/matroskadec.c | 5 | ||||
-rw-r--r-- | libavformat/nutdec.c | 5 | ||||
-rw-r--r-- | libavformat/utils.c | 3 |
4 files changed, 9 insertions, 10 deletions
diff --git a/libavformat/avformat.h b/libavformat/avformat.h index fd49442ed5..f8f35ac37d 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -776,13 +776,13 @@ AVProgram *av_new_program(AVFormatContext *s, int id); * * @param s media file handle * @param id unique id for this chapter - * @param start chapter start time in AV_TIME_BASE units - * @param end chapter end time in AV_TIME_BASE units + * @param start chapter start time in time_base units + * @param end chapter end time in time_base units * @param title chapter title * * @return AVChapter or NULL if error. */ -AVChapter *ff_new_chapter(AVFormatContext *s, int id, int64_t start, int64_t end, const char *title); +AVChapter *ff_new_chapter(AVFormatContext *s, int id, AVRational time_base, int64_t start, int64_t end, const char *title); /** * Set the pts for a given stream. diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 7cbf7054f1..6f6caa169d 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -2254,10 +2254,7 @@ matroska_parse_chapters(AVFormatContext *s) } if (start != AV_NOPTS_VALUE && uid != -1) { - start = start * AV_TIME_BASE / 1000000000; - if (end != AV_NOPTS_VALUE) - end = end * AV_TIME_BASE / 1000000000; - if(!ff_new_chapter(s, uid, start, end, title)) + if(!ff_new_chapter(s, uid, (AVRational){1, 1000000000}, start, end, title)) res= AVERROR(ENOMEM); } av_free(title); diff --git a/libavformat/nutdec.c b/libavformat/nutdec.c index 7259a36acc..0655d0fdc7 100644 --- a/libavformat/nutdec.c +++ b/libavformat/nutdec.c @@ -406,8 +406,9 @@ static int decode_info_header(NUTContext *nut){ if(chapter_id && !stream_id_plus1){ int64_t start= chapter_start / nut->time_base_count; - chapter= ff_new_chapter(s, chapter_id, start, start + chapter_len, NULL); - chapter->time_base= nut->time_base[chapter_start % nut->time_base_count]; + chapter= ff_new_chapter(s, chapter_id, + nut->time_base[chapter_start % nut->time_base_count], + start, start + chapter_len, NULL); } for(i=0; i<count; i++){ diff --git a/libavformat/utils.c b/libavformat/utils.c index e37577dbd7..7faedccdcb 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2246,7 +2246,7 @@ void av_set_program_name(AVProgram *program, char *provider_name, char *name) } } -AVChapter *ff_new_chapter(AVFormatContext *s, int id, int64_t start, int64_t end, const char *title) +AVChapter *ff_new_chapter(AVFormatContext *s, int id, AVRational time_base, int64_t start, int64_t end, const char *title) { AVChapter *chapter = NULL; int i; @@ -2265,6 +2265,7 @@ AVChapter *ff_new_chapter(AVFormatContext *s, int id, int64_t start, int64_t end av_free(chapter->title); chapter->title = av_strdup(title); chapter->id = id; + chapter->time_base= time_base; chapter->start = start; chapter->end = end; |