if( i_bits == 24 )
{
- uint8_t *p_out = p_aout_buffer->p_buffer;
+ uint32_t *p_out = (uint32_t *)p_aout_buffer->p_buffer;
while( p_block->i_buffer / 7 )
{
- p_out[0] = reverse[p_block->p_buffer[0]];
- p_out[1] = reverse[p_block->p_buffer[1]];
- p_out[2] = reverse[p_block->p_buffer[2]];
-
- p_out[3] = (reverse[p_block->p_buffer[3]] >> 4)
- | ((reverse[p_block->p_buffer[4]] << 4) & 0xf0);
- p_out[4] = (reverse[p_block->p_buffer[4]] >> 4)
- | ((reverse[p_block->p_buffer[5]] << 4) & 0xf0);
- p_out[5] = (reverse[p_block->p_buffer[5]] >> 4)
- | ((reverse[p_block->p_buffer[6]] << 4) & 0xf0);
+ *(p_out++) = (reverse[p_block->p_buffer[0]] << 8)
+ | (reverse[p_block->p_buffer[1]] << 16)
+ | (reverse[p_block->p_buffer[2]] << 24);
+ *(p_out++) = ((reverse[p_block->p_buffer[3]] << 4)
+ | (reverse[p_block->p_buffer[4]] << 12)
+ | (reverse[p_block->p_buffer[5]] << 20)
+ | (reverse[p_block->p_buffer[6]] << 28)) & 0xFFFFFF00;
p_block->i_buffer -= 7;
p_block->p_buffer += 7;
- p_out += 6;
}
}
else if( i_bits == 20 )
{
- uint8_t *p_out = p_aout_buffer->p_buffer;
+ uint32_t *p_out = (uint32_t *)p_aout_buffer->p_buffer;
while( p_block->i_buffer / 6 )
{
- p_out[0] = ((reverse[p_block->p_buffer[0]] << 4) & 0xf0);
- p_out[1] = (reverse[p_block->p_buffer[0]] >> 4)
- | ((reverse[p_block->p_buffer[1]] << 4) & 0xf0);
- p_out[2] = (reverse[p_block->p_buffer[1]] >> 4)
- | ((reverse[p_block->p_buffer[2]] << 4) & 0xf0);
-
- p_out[3] = ((reverse[p_block->p_buffer[3]] << 4) & 0xf0);
- p_out[4] = (reverse[p_block->p_buffer[3]] >> 4)
- | ((reverse[p_block->p_buffer[4]] << 4) & 0xf0);
- p_out[5] = (reverse[p_block->p_buffer[4]] >> 4)
- | ((reverse[p_block->p_buffer[5]] << 4) & 0xf0);
+ *(p_out++) = (reverse[p_block->p_buffer[0]] << 12)
+ | (reverse[p_block->p_buffer[1]] << 20)
+ | (reverse[p_block->p_buffer[2]] << 28);
+ *(p_out++) = (reverse[p_block->p_buffer[3]] << 12)
+ | (reverse[p_block->p_buffer[4]] << 20)
+ | (reverse[p_block->p_buffer[5]] << 28);
p_block->i_buffer -= 6;
p_block->p_buffer += 6;
- p_out += 6;
}
}
else
{
- uint8_t *p_out = p_aout_buffer->p_buffer;
+ uint16_t *p_out = (uint16_t *)p_aout_buffer->p_buffer;
assert( i_bits == 16 );
while( p_block->i_buffer / 5 )
{
- p_out[0] = reverse[p_block->p_buffer[0]];
- p_out[1] = reverse[p_block->p_buffer[1]];
-
- p_out[2] = (reverse[p_block->p_buffer[2]] >> 4)
- | ((reverse[p_block->p_buffer[3]] << 4) & 0xf0);
- p_out[3] = (reverse[p_block->p_buffer[3]] >> 4)
- | ((reverse[p_block->p_buffer[4]] << 4) & 0xf0);
+ *(p_out++) = reverse[p_block->p_buffer[0]]
+ | reverse[p_block->p_buffer[1]];
+ *(p_out++) = (reverse[p_block->p_buffer[2]] >> 4)
+ | (reverse[p_block->p_buffer[3]] << 4)
+ | (reverse[p_block->p_buffer[4]] << 12);
p_block->i_buffer -= 5;
p_block->p_buffer += 5;
- p_out += 4;
}
}
}
else
{
- p_dec->fmt_out.i_codec = i_bits == 16 ? VLC_CODEC_S16L : VLC_CODEC_S24L;
- p_dec->fmt_out.audio.i_bitspersample = i_bits == 16 ? 16 : 24;
+ p_dec->fmt_out.i_codec = i_bits == 16 ? VLC_CODEC_S16N : VLC_CODEC_S32N;
+ p_dec->fmt_out.audio.i_bitspersample = i_bits == 16 ? 16 : 32;
}
p_dec->fmt_out.audio.i_channels = i_channels;