for( unsigned i = 0; i < 256; i++ )
{
#ifdef LIBA52_FIXED
- p_out[i * i_nb_channels + pi_chan_table[j]] = ((uint32_t)p_in[j * 256 + i]) << 4;
+ union { uint32_t u; int32_t i; } spl;
+
+ spl.u = ((uint32_t)p_in[j * 256 + i]) << 4;
+ p_out[i * i_nb_channels + pi_chan_table[j]] = spl.i;
#else
p_out[i * i_nb_channels + pi_chan_table[j]] = p_in[j * 256 + i];
#endif
for( unsigned i = 256; i--; )
{
#ifdef LIBA52_FIXED
- sample_t s = ((uint32_t)*(p_in++)) << 4;
+ union { uint32_t u; int32_t i; } spl;
+
+ spl.u = ((uint32_t)*(p_in++)) << 4;
+ *p_out++ = spl.i;
+ *p_out++ = spl.i;
#else
sample_t s = *(p_in++);
-#endif
+
*p_out++ = s;
*p_out++ = s;
+#endif
}
}
for( unsigned i = 0; i < 256; i++ )
{
#ifdef LIBA52_FIXED
- *p_out++ = ((uint32_t)*p_first++) << 4;
- *p_out++ = ((uint32_t)*p_second++) << 4;
+ uint32_t spl[2];
+
+ spl[0] = ((uint32_t)*p_first++) << 4;
+ spl[1] = ((uint32_t)*p_second++) << 4;
+ memcpy( p_out, spl, sizeof(spl) );
+ p_out += 2;
#else
*p_out++ = *p_first++;
*p_out++ = *p_second++;