diff --git a/libavformat/avidec.c b/libavformat/avidec.c
index 1004c172ef8e2144d7081cb16af3ee5b8f406a88..f49187818976fb78cfbd8ca46ce40d8d53e38f8e 100644
--- a/libavformat/avidec.c
+++ b/libavformat/avidec.c
@@ -35,7 +35,6 @@ typedef struct AVIStream {
     int scale;
     int rate;
     int sample_size; /* size of one sample (or packet) (in the rate/scale sense) in bytes */
-    int start;
 
     int64_t cum_len; /* temporary storage (used during seek) */
 
@@ -313,7 +312,7 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
             }
             av_set_pts_info(st, 64, ast->scale, ast->rate);
 
-            ast->start= get_le32(pb); /* start */
+            ast->cum_len=get_le32(pb); /* start */
             nb_frames = get_le32(pb);
 
             st->start_time = 0;
@@ -344,6 +343,7 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
                 av_log(s, AV_LOG_ERROR, "unknown stream type %X\n", tag1);
                 goto fail;
             }
+            ast->frame_offset= ast->cum_len * FFMAX(ast->sample_size, 1);
             url_fskip(pb, size - 12 * 4);
             break;
         case MKTAG('s', 't', 'r', 'f'):