[FFmpeg-cvslog] asfenc: realloc index_ptr fewer times

Ramiro Polla git at videolan.org
Wed Sep 12 16:50:36 CEST 2012


ffmpeg | branch: release/0.10 | Ramiro Polla <ramiro.polla at gmail.com> | Wed Apr  4 02:48:27 2012 -0300| [de1591b167e44e2cc00dc416f2aaa30126ac2013] | committer: Michael Niedermayer

asfenc: realloc index_ptr fewer times

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
(cherry picked from commit 97d36a1898dabd6fd85d0f2295bdac911d607b8e)

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=de1591b167e44e2cc00dc416f2aaa30126ac2013
---

 libavformat/asfenc.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/libavformat/asfenc.c b/libavformat/asfenc.c
index a287ac5..136ddb3 100644
--- a/libavformat/asfenc.c
+++ b/libavformat/asfenc.c
@@ -30,7 +30,7 @@
 
 
 #define ASF_INDEXED_INTERVAL    10000000
-#define ASF_INDEX_BLOCK         600
+#define ASF_INDEX_BLOCK         (1<<9)
 
 #define ASF_PACKET_ERROR_CORRECTION_DATA_SIZE 0x2
 #define ASF_PACKET_ERROR_CORRECTION_FLAGS (\
@@ -810,11 +810,11 @@ static int asf_write_packet(AVFormatContext *s, AVPacket *pkt)
     if ((!asf->is_streamed) && (flags & AV_PKT_FLAG_KEY)) {
         start_sec = (int)(duration / INT64_C(10000000));
         if (start_sec != (int)(asf->last_indexed_pts / INT64_C(10000000))) {
+            if (start_sec > asf->nb_index_memory_alloc) {
+                asf->nb_index_memory_alloc = (start_sec + ASF_INDEX_BLOCK) & ~(ASF_INDEX_BLOCK - 1);
+                asf->index_ptr = (ASFIndex*)av_realloc( asf->index_ptr, sizeof(ASFIndex) * asf->nb_index_memory_alloc );
+            }
             for(i=asf->nb_index_count;i<start_sec;i++) {
-                if (i>=asf->nb_index_memory_alloc) {
-                    asf->nb_index_memory_alloc += ASF_INDEX_BLOCK;
-                    asf->index_ptr = (ASFIndex*)av_realloc( asf->index_ptr, sizeof(ASFIndex) * asf->nb_index_memory_alloc );
-                }
                 // store
                 asf->index_ptr[i].packet_number = (uint32_t)packet_st;
                 asf->index_ptr[i].packet_count  = (uint16_t)(asf->nb_packets-packet_st);



More information about the ffmpeg-cvslog mailing list