diff --git a/libavcodec/imc.c b/libavcodec/imc.c index 07d6cadcfdfd9065ca7aa5d4b0d6ead9ebcb67d7..1a3eeaa1ee6a7c8fd2f0999450fcb45808da5b8d 100644 --- a/libavcodec/imc.c +++ b/libavcodec/imc.c @@ -655,14 +655,14 @@ static int imc_decode_frame(AVCodecContext * avctx, int flag; int bits, summer; int counter, bitscount; - uint16_t buf16[IMC_BLOCK_SIZE / 2]; + LOCAL_ALIGNED_16(uint16_t, buf16, [IMC_BLOCK_SIZE / 2]); if (buf_size < IMC_BLOCK_SIZE) { av_log(avctx, AV_LOG_ERROR, "imc frame too small!\n"); return -1; } - for(i = 0; i < IMC_BLOCK_SIZE / 2; i++) - buf16[i] = av_bswap16(((const uint16_t*)buf)[i]); + + q->dsp.bswap16_buf(buf16, (const uint16_t*)buf, IMC_BLOCK_SIZE / 2); q->out_samples = data; init_get_bits(&q->gb, (const uint8_t*)buf16, IMC_BLOCK_SIZE * 8);