|
|
|
@ -940,13 +940,23 @@ static int wavpack_decode_block(AVCodecContext *avctx, int block_no, |
|
|
|
|
case 3: |
|
|
|
|
chmask = bytestream2_get_le32(&gb); |
|
|
|
|
break; |
|
|
|
|
case 5: |
|
|
|
|
case 4: |
|
|
|
|
size = bytestream2_get_byte(&gb); |
|
|
|
|
if (avctx->channels != size) |
|
|
|
|
chan |= (bytestream2_get_byte(&gb) & 0xF) << 8; |
|
|
|
|
chan += 1; |
|
|
|
|
if (avctx->channels != chan) |
|
|
|
|
av_log(avctx, AV_LOG_WARNING, "%i channels signalled" |
|
|
|
|
" instead of %i.\n", size, avctx->channels); |
|
|
|
|
" instead of %i.\n", chan, avctx->channels); |
|
|
|
|
chmask = bytestream2_get_le24(&gb); |
|
|
|
|
break; |
|
|
|
|
case 5: |
|
|
|
|
size = bytestream2_get_byte(&gb); |
|
|
|
|
chan |= (bytestream2_get_byte(&gb) & 0xF) << 8; |
|
|
|
|
chmask = bytestream2_get_le16(&gb); |
|
|
|
|
chan += 1; |
|
|
|
|
if (avctx->channels != chan) |
|
|
|
|
av_log(avctx, AV_LOG_WARNING, "%i channels signalled" |
|
|
|
|
" instead of %i.\n", chan, avctx->channels); |
|
|
|
|
chmask = bytestream2_get_le32(&gb); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "Invalid channel info size %d\n", |
|
|
|
|