aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/avidec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2010-07-01 13:50:15 +0000
committerMichael Niedermayer <michaelni@gmx.at>2010-07-01 13:50:15 +0000
commit8a472821a4713dbfd150460fc203190e7c055141 (patch)
tree6520becbb167214b9dd4a117eb93a4a7bd24eef6 /libavformat/avidec.c
parent2cbd734a384377f664945fe43c2d44b79f6020d2 (diff)
downloadffmpeg-8a472821a4713dbfd150460fc203190e7c055141.tar.gz
Factorize get_duration() out of 4 places of the avi demuxer.
Originally committed as revision 23934 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/avidec.c')
-rw-r--r--libavformat/avidec.c25
1 files 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;