From 810c451b02404a3a2d43186003a4b2b9cbedd02e Mon Sep 17 00:00:00 2001 From: Ivan Schreter Date: Tue, 24 Feb 2009 20:17:02 +0000 Subject: [PATCH] Change duration computation to use time_base instead of TB/2. Patch by Ivan Schreter, schreter gmx net Originally committed as revision 17570 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/avcodec.h | 5 +---- libavformat/utils.c | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index cfe38c5edb..d4bbe29b82 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -3098,12 +3098,9 @@ typedef struct AVCodecParserContext { * It signals, how much longer the frame duration of the current frame * is compared to normal frame duration. * - * frame_duration = (2 + repeat_pict) / (2*fps) + * frame_duration = (1 + repeat_pict) * time_base * * It is used by codecs like H.264 to display telecined material. - * - * @note This field can also be set to -1 for half-frame duration in case - * of field pictures. */ int repeat_pict; /* XXX: Put it back in AVCodecContext. */ int64_t pts; /* pts of the current frame */ diff --git a/libavformat/utils.c b/libavformat/utils.c index 46a1b5f8bb..61f74c3c18 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -680,10 +680,7 @@ static void compute_frame_duration(int *pnum, int *pden, AVStream *st, *pnum = st->codec->time_base.num; *pden = st->codec->time_base.den; if (pc && pc->repeat_pict) { - // NOTE: repeat_pict can be also -1 for half-frame durations, - // e.g., in H.264 interlaced field picture stream - *pden *= 2; - *pnum = (*pnum) * (2 + pc->repeat_pict); + *pnum = (*pnum) * (1 + pc->repeat_pict); } } break;