From fc9fe42833cb205200fc977fa9014616c70aa4bf Mon Sep 17 00:00:00 2001 From: Ivan Schreter Date: Tue, 24 Feb 2009 20:19:59 +0000 Subject: [PATCH] Correct time_base of H.264 and repeat_pict. Patch by Ivan Schreter, schreter gmx net Originally committed as revision 17571 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/h264.c | 2 +- libavcodec/h264_parser.c | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 89f9978..344cee5 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -3763,7 +3763,7 @@ static int decode_slice_header(H264Context *h, H264Context *h0){ s->avctx->sample_aspect_ratio.den = 1; if(h->sps.timing_info_present_flag){ - s->avctx->time_base= (AVRational){h->sps.num_units_in_tick * 2, h->sps.time_scale}; + s->avctx->time_base= (AVRational){h->sps.num_units_in_tick, h->sps.time_scale}; if(h->x264_build > 0 && h->x264_build < 44) s->avctx->time_base.den *= 2; av_reduce(&s->avctx->time_base.num, &s->avctx->time_base.den, diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c index 4d1d3f3..a0120ac 100644 --- a/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c @@ -196,29 +196,29 @@ static inline int parse_nal_units(AVCodecParserContext *s, switch (h->sei_pic_struct) { case SEI_PIC_STRUCT_TOP_FIELD: case SEI_PIC_STRUCT_BOTTOM_FIELD: - s->repeat_pict = -1; + s->repeat_pict = 0; break; case SEI_PIC_STRUCT_FRAME: case SEI_PIC_STRUCT_TOP_BOTTOM: case SEI_PIC_STRUCT_BOTTOM_TOP: - s->repeat_pict = 0; + s->repeat_pict = 1; break; case SEI_PIC_STRUCT_TOP_BOTTOM_TOP: case SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM: - s->repeat_pict = 1; + s->repeat_pict = 2; break; case SEI_PIC_STRUCT_FRAME_DOUBLING: - s->repeat_pict = 2; + s->repeat_pict = 3; break; case SEI_PIC_STRUCT_FRAME_TRIPLING: - s->repeat_pict = 4; + s->repeat_pict = 5; break; default: - s->repeat_pict = h->s.picture_structure == PICT_FRAME ? 0 : -1; + s->repeat_pict = h->s.picture_structure == PICT_FRAME ? 1 : 0; break; } } else { - s->repeat_pict = h->s.picture_structure == PICT_FRAME ? 0 : -1; + s->repeat_pict = h->s.picture_structure == PICT_FRAME ? 1 : 0; } return 0; /* no need to evaluate the rest */ -- 2.7.4