|
|
|
@ -309,10 +309,6 @@ static av_cold int decode_init(AVCodecContext *avctx) |
|
|
|
|
s->samples_per_frame = 1 << ff_wma_get_frame_len_bits(avctx->sample_rate, |
|
|
|
|
3, s->decode_flags); |
|
|
|
|
|
|
|
|
|
/** init previous block len */ |
|
|
|
|
for (i = 0; i < avctx->channels; i++) |
|
|
|
|
s->channel[i].prev_block_len = s->samples_per_frame; |
|
|
|
|
|
|
|
|
|
/** subframe info */ |
|
|
|
|
log2_max_num_subframes = ((s->decode_flags & 0x38) >> 3); |
|
|
|
|
s->max_num_subframes = 1 << log2_max_num_subframes; |
|
|
|
@ -332,6 +328,18 @@ static av_cold int decode_init(AVCodecContext *avctx) |
|
|
|
|
|
|
|
|
|
s->num_channels = avctx->channels; |
|
|
|
|
|
|
|
|
|
if (s->num_channels < 0) { |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "invalid number of channels %d\n", s->num_channels); |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
} else if (s->num_channels > WMAPRO_MAX_CHANNELS) { |
|
|
|
|
av_log_ask_for_sample(avctx, "unsupported number of channels\n"); |
|
|
|
|
return AVERROR_PATCHWELCOME; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** init previous block len */ |
|
|
|
|
for (i = 0; i < s->num_channels; i++) |
|
|
|
|
s->channel[i].prev_block_len = s->samples_per_frame; |
|
|
|
|
|
|
|
|
|
/** extract lfe channel position */ |
|
|
|
|
s->lfe_channel = -1; |
|
|
|
|
|
|
|
|
@ -343,14 +351,6 @@ static av_cold int decode_init(AVCodecContext *avctx) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (s->num_channels < 0) { |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "invalid number of channels %d\n", s->num_channels); |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
} else if (s->num_channels > WMAPRO_MAX_CHANNELS) { |
|
|
|
|
av_log_ask_for_sample(avctx, "unsupported number of channels\n"); |
|
|
|
|
return AVERROR_PATCHWELCOME; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
INIT_VLC_STATIC(&sf_vlc, SCALEVLCBITS, HUFF_SCALE_SIZE, |
|
|
|
|
scale_huffbits, 1, 1, |
|
|
|
|
scale_huffcodes, 2, 2, 616); |
|
|
|
|