]> git.sesse.net Git - vlc/commitdiff
faad: always drop byte of padding (fixes #5257)
authorTristan Matthews <tmatth@videolan.org>
Mon, 15 Dec 2014 03:33:57 +0000 (22:33 -0500)
committerTristan Matthews <tmatth@videolan.org>
Mon, 15 Dec 2014 14:56:13 +0000 (09:56 -0500)
Also covers #2575 and #11514

modules/codec/faad.c

index 9aaaed63e9977324bdccdbe1d6588f5a90e9637f..54191bc87e7683060b82cce3989f71c736f44503 100644 (file)
@@ -313,7 +313,7 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
     }
 
     /* Decode all data */
-    if( p_sys->i_buffer )
+    if( p_sys->i_buffer > 1)
     {
         void *samples;
         faacDecFrameInfo frame;
@@ -395,11 +395,16 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
 
             /* Flush the buffer */
             p_sys->i_buffer -= frame.bytesconsumed;
-            if( p_sys->i_buffer > 0 )
+            if( p_sys->i_buffer > 1 )
             {
                 memmove( p_sys->p_buffer,&p_sys->p_buffer[frame.bytesconsumed],
                          p_sys->i_buffer );
             }
+            else
+            {
+                /* Drop byte of padding */
+                p_sys->i_buffer = 0;
+            }
             block_Release( p_block );
             return NULL;
         }
@@ -508,6 +513,11 @@ static block_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
 
         return p_out;
     }
+    else
+    {
+        /* Drop byte of padding */
+        p_sys->i_buffer = 0;
+    }
 
     block_Release( p_block );
     return NULL;