a[0] = 4096;
for (i = 5; i > 0; i--) {
- tmp = f[0][6 - i] + (unsigned)f[1][6 - i];
- a[6 - i] = (tmp + 4096) >> 13;
+ tmp = f[0][6 - i] + (unsigned)f[1][6 - i] + 4096;
+ a[6 - i] = tmp >> 13;
- tmp = f[0][6 - i] - (unsigned)f[1][6 - i];
- a[5 + i] = (tmp + 4096) >> 13;
+ tmp = f[0][6 - i] - (unsigned)f[1][6 - i] + 4096;
+ a[5 + i] = tmp >> 13;
}
}
int16_t cbvec0[SUBL];
int16_t cbvec1[SUBL];
int16_t cbvec2[SUBL];
- int32_t a32;
+ unsigned a32;
int16_t *gainPtr;
int j;
a32 += SPL_MUL_16_16(*gainPtr++, cbvec1[j]);
a32 += SPL_MUL_16_16(*gainPtr, cbvec2[j]);
gainPtr -= 2;
- decvector[j] = (a32 + 8192) >> 14;
+ decvector[j] = (int)(a32 + 8192) >> 14;
}
}
pos += step;
/* Do a +/- to get the next energy */
- energy += step * ((*rp_end * *rp_end - *rp_beg * *rp_beg) >> shifts);
+ energy += (unsigned)step * ((*rp_end * *rp_end - *rp_beg * *rp_beg) >> shifts);
+
rp_beg += step;
rp_end += step;
}
if (unpack_frame(s))
mode = 0;
- if (s->frame.start < 1)
+ if (s->frame.start < 1 || s->frame.start > 5)
mode = 0;
if (mode) {
return 0;
}
-AVCodec ff_ilbc_decoder = {
+const AVCodec ff_ilbc_decoder = {
.name = "ilbc",
.long_name = NULL_IF_CONFIG_SMALL("iLBC (Internet Low Bitrate Codec)"),
.type = AVMEDIA_TYPE_AUDIO,
.id = AV_CODEC_ID_ILBC,
.init = ilbc_decode_init,
.decode = ilbc_decode_frame,
- .capabilities = AV_CODEC_CAP_DR1,
+ .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF,
.priv_data_size = sizeof(ILBCContext),
};