#include "libavutil/opt.h"
#include "apedsp.h"
#include "avcodec.h"
-#include "dsputil.h"
+#include "bswapdsp.h"
#include "bytestream.h"
#include "internal.h"
#include "get_bits.h"
typedef struct APEContext {
AVClass *class; ///< class for AVOptions
AVCodecContext *avctx;
- DSPContext dsp;
+ BswapDSPContext bdsp;
APEDSPContext adsp;
int channels;
int samples; ///< samples left to decode in current frame
if (ARCH_X86)
ff_apedsp_init_x86(&s->adsp);
- ff_dsputil_init(&s->dsp, avctx);
+ ff_bswapdsp_init(&s->bdsp);
avctx->channel_layout = (avctx->channels==2) ? AV_CH_LAYOUT_STEREO : AV_CH_LAYOUT_MONO;
return 0;
int ksummax, ksummin;
rice->ksum = 0;
- for (i = 0; i < 5; i++) {
+ for (i = 0; i < FFMIN(blockstodecode, 5); i++) {
out[i] = get_rice_ook(&ctx->gb, 10);
rice->ksum += out[i];
}
rice->k = av_log2(rice->ksum / 10) + 1;
- for (; i < 64; i++) {
+ for (; i < FFMIN(blockstodecode, 64); i++) {
out[i] = get_rice_ook(&ctx->gb, rice->k);
rice->ksum += out[i];
rice->k = av_log2(rice->ksum / ((i + 1) * 2)) + 1;
{
int i, j;
int32_t dotprod, sign;
- int32_t coeffs[8], delay[8];
+ int32_t coeffs[8] = { 0 }, delay[8] = { 0 };
- memset(coeffs, 0, sizeof(coeffs));
- memset(delay, 0, sizeof(delay));
for (i = 0; i < length; i++) {
dotprod = 0;
sign = APESIGN(buffer[i]);
av_fast_malloc(&s->data, &s->data_size, buf_size);
if (!s->data)
return AVERROR(ENOMEM);
- s->dsp.bswap_buf((uint32_t*)s->data, (const uint32_t*)buf, buf_size >> 2);
+ s->bdsp.bswap_buf((uint32_t *) s->data, (const uint32_t *) buf,
+ buf_size >> 2);
memset(s->data + (buf_size & ~3), 0, buf_size & 3);
s->ptr = s->data;
s->data_end = s->data + buf_size;