From 8a472821a4713dbfd150460fc203190e7c055141 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Thu, 1 Jul 2010 13:50:15 +0000 Subject: Factorize get_duration() out of 4 places of the avi demuxer. Originally committed as revision 23934 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/avidec.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/libavformat/avidec.c b/libavformat/avidec.c index 7dc528abd1..9037650f1d 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -89,6 +89,13 @@ static void print_tag(const char *str, unsigned int tag, int size) } #endif +static inline int get_duration(AVIStream *ast, int len){ + if(ast->sample_size){ + return len; + }else + return 1; +} + static int get_riff(AVFormatContext *s, ByteIOContext *pb) { AVIContext *avi = s->priv_data; @@ -175,10 +182,7 @@ static int read_braindead_odml_indx(AVFormatContext *s, int frame_num){ if(last_pos != pos && (len || !ast->sample_size)) av_add_index_entry(st, pos, ast->cum_len, len, 0, key ? AVINDEX_KEYFRAME : 0); - if(ast->sample_size) - ast->cum_len += len; - else - ast->cum_len ++; + ast->cum_len += get_duration(ast, len); last_pos= pos; }else{ int64_t offset, pos; @@ -821,10 +825,7 @@ resync: } else { pkt->flags |= AV_PKT_FLAG_KEY; } - if(ast->sample_size) - ast->frame_offset += pkt->size; - else - ast->frame_offset++; + ast->frame_offset += get_duration(ast, pkt->size); } ast->remaining -= size; if(!ast->remaining){ @@ -906,8 +907,7 @@ resync: if( (st->discard >= AVDISCARD_DEFAULT && size==0) /*|| (st->discard >= AVDISCARD_NONKEY && !(pkt->flags & AV_PKT_FLAG_KEY))*/ //FIXME needs a little reordering || st->discard >= AVDISCARD_ALL){ - if(ast->sample_size) ast->frame_offset += size; - else ast->frame_offset++; + ast->frame_offset += get_duration(ast, size); url_fskip(pb, size); goto resync; } @@ -1000,10 +1000,7 @@ static int avi_read_idx1(AVFormatContext *s, int size) avi->non_interleaved= 1; else if(len || !ast->sample_size) av_add_index_entry(st, pos, ast->cum_len, len, 0, (flags&AVIIF_INDEX) ? AVINDEX_KEYFRAME : 0); - if(ast->sample_size) - ast->cum_len += len; - else - ast->cum_len ++; + ast->cum_len += get_duration(ast, len); last_pos= pos; } return 0; -- cgit v1.2.3