if (s->bitshift != 0)
for (i = 0; i < s->blocksize; i++)
- buffer[s->nwrap + i] <<= s->bitshift;
+ buffer[i] <<= s->bitshift;
}
case FN_BITSHIFT:
s->bitshift = get_ur_golomb_shorten(&s->gb, BITSHIFTSIZE);
break;
- case FN_BLOCKSIZE:
- s->blocksize = get_uint(s, av_log2(s->blocksize));
+ case FN_BLOCKSIZE: {
+ int blocksize = get_uint(s, av_log2(s->blocksize));
+ if (blocksize > s->blocksize) {
+ av_log(avctx, AV_LOG_ERROR, "Increasing block size is not supported\n");
+ return AVERROR_PATCHWELCOME;
+ }
+ s->blocksize = blocksize;
break;
+ }
case FN_QUIT:
*data_size = 0;
return buf_size;
}
AVCodec ff_shorten_decoder = {
- "shorten",
- AVMEDIA_TYPE_AUDIO,
- CODEC_ID_SHORTEN,
- sizeof(ShortenContext),
- shorten_decode_init,
- NULL,
- shorten_decode_close,
- shorten_decode_frame,
+ .name = "shorten",
+ .type = AVMEDIA_TYPE_AUDIO,
+ .id = CODEC_ID_SHORTEN,
+ .priv_data_size = sizeof(ShortenContext),
+ .init = shorten_decode_init,
+ .close = shorten_decode_close,
+ .decode = shorten_decode_frame,
.flush= shorten_flush,
.long_name= NULL_IF_CONFIG_SMALL("Shorten"),
};