avformat/avidec: skip len=0 entries from the index
authorDon Moir <donmoir@comcast.net>
Fri, 25 Apr 2014 15:57:49 +0000 (17:57 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 25 Apr 2014 16:56:05 +0000 (18:56 +0200)
Reduces cpu & memory requirements for the index
See Ticket 3531

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/avidec.c

index 562a255..f5c4f0b 100644 (file)
@@ -224,7 +224,7 @@ static int read_braindead_odml_indx(AVFormatContext *s, int frame_num)
 
             if (last_pos == pos || pos == base - 8)
                 avi->non_interleaved = 1;
-            if (last_pos != pos && (len || !ast->sample_size))
+            if (last_pos != pos && len)
                 av_add_index_entry(st, pos, ast->cum_len, len, 0,
                                    key ? AVINDEX_KEYFRAME : 0);
 
@@ -1226,7 +1226,7 @@ start_sync:
                 ast->packet_size  = size + 8;
                 ast->remaining    = size;
 
-                if (size || !ast->sample_size) {
+                if (size) {
                     uint64_t pos = avio_tell(pb) - 8;
                     if (!st->index_entries || !st->nb_index_entries ||
                         st->index_entries[st->nb_index_entries - 1].pos < pos) {