]> git.sesse.net Git - vlc/commitdiff
x264: avoid one memcpy
authorIlkka Ollakka <ileoo@iki.fi>
Sun, 20 Dec 2009 14:51:00 +0000 (16:51 +0200)
committerIlkka Ollakka <ileoo@iki.fi>
Wed, 23 Dec 2009 20:14:42 +0000 (22:14 +0200)
modules/codec/x264.c

index e03bb4f5ee4bdf2956a858d78871fed3c774e061..66892d06a2749982f636a9648357aa6fdc24dc0f 100644 (file)
@@ -1216,15 +1216,20 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pict )
 
     if( !i_nal ) return NULL;
 
+
+    /* Get size of block we need */
     for( i = 0, i_out = 0; i < i_nal; i++ )
-    {
-        memcpy( p_sys->p_buffer + i_out, nal[i].p_payload, nal[i].i_payload );
         i_out += nal[i].i_payload;
-    }
 
     p_block = block_New( p_enc, i_out );
     if( !p_block ) return NULL;
-    memcpy( p_block->p_buffer, p_sys->p_buffer, i_out );
+
+    /* copy encoded data directly to block, instead taking via p_sys->p_buffer */
+    for( i = 0, i_out = 0; i < i_nal; i++ )
+    {
+        memcpy( p_block->p_buffer + i_out, nal[i].p_payload, nal[i].i_payload );
+        i_out += nal[i].i_payload;
+    }
 
     if( pic.i_type == X264_TYPE_IDR || pic.i_type == X264_TYPE_I )
         p_block->i_flags |= BLOCK_FLAG_TYPE_I;