diff --git a/libavformat/utils.c b/libavformat/utils.c
index 86bae7b35765970b6109cd1aefe907b02166f10f..2b579ca67d09d116bc3be445f986ab638a02a116 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -1305,6 +1305,10 @@ int av_index_search_timestamp(AVStream *st, int64_t wanted_timestamp,
     a = - 1;
     b = nb_entries;
 
+    //optimize appending index entries at the end
+    if(b && entries[b-1].timestamp < wanted_timestamp)
+        a= b-1;
+
     while (b - a > 1) {
         m = (a + b) >> 1;
         timestamp = entries[m].timestamp;