]> git.sesse.net Git - vlc/commitdiff
Fix lpcm decoding on little endian
authorRafaël Carré <funman@videolan.org>
Mon, 6 May 2013 14:41:19 +0000 (16:41 +0200)
committerRafaël Carré <funman@videolan.org>
Mon, 6 May 2013 14:41:19 +0000 (16:41 +0200)
Close #8529

modules/codec/lpcm.c

index 18c1f5bee11af694ff67a64ec18415beccc82a1e..402cd738fb64304a2feb7ee0b47872f85ea71213 100644 (file)
@@ -1054,7 +1054,11 @@ static void BdExtract( block_t *p_aout_buffer, block_t *p_block,
         uint8_t *p_dst = p_aout_buffer->p_buffer;
         while( i_frame_length > 0 )
         {
+#ifdef WORDS_BIGENDIAN
             memcpy( p_dst, p_src, i_channels * i_bits / 8 );
+#else
+            swab( p_dst, p_src, i_channels * i_bits / 8 );
+#endif
             p_src += (i_channels + i_channels_padding) * i_bits / 8;
             p_dst += (i_channels +                  0) * i_bits / 8;
             i_frame_length--;
@@ -1062,7 +1066,11 @@ static void BdExtract( block_t *p_aout_buffer, block_t *p_block,
     }
     else
     {
+#ifdef WORDS_BIGENDIAN
         memcpy( p_aout_buffer->p_buffer, p_block->p_buffer, p_block->i_buffer );
+#else
+        swab( p_block->p_buffer, p_aout_buffer->p_buffer, p_block->i_buffer );
+#endif
     }
 }