Mercurial > libavformat.hg
changeset 6204:fbc809c24e5b libavformat
Factorize get_duration() out of 4 places of the avi demuxer.
author | michael |
---|---|
date | Thu, 01 Jul 2010 13:50:15 +0000 |
parents | 24d0c5dec55a |
children | 1327f1008940 |
files | avidec.c |
diffstat | 1 files changed, 11 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/avidec.c Thu Jul 01 10:59:44 2010 +0000 +++ b/avidec.c Thu Jul 01 13:50:15 2010 +0000 @@ -89,6 +89,13 @@ } #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 @@ 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 @@ } 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 @@ 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 @@ 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;