s->avctx = avctx;
- if(avctx->channels > MAX_CHANNELS)
- return -1;
+ if(avctx->channels > MAX_CHANNELS) {
+ av_log(avctx, AV_LOG_ERROR, "too many channels: got %i, need %i or fewer",
+ avctx->channels, MAX_CHANNELS);
+ return AVERROR(EINVAL);
+ }
- if(avctx->bit_rate < 24*1000)
- return -1;
+ if(avctx->bit_rate < 24*1000) {
+ av_log(avctx, AV_LOG_ERROR, "bitrate too low: got %i, need 24000 or higher\n",
+ avctx->bit_rate);
+ return AVERROR(EINVAL);
+ }
/* extract flag infos */
flags1 = 0;
static void apply_window_and_mdct(AVCodecContext * avctx, const signed short * audio, int len) {
WMACodecContext *s = avctx->priv_data;
int window_index= s->frame_len_bits - s->block_len_bits;
+ FFTContext *mdct = &s->mdct_ctx[window_index];
int i, j, channel;
const float * win = s->windows[window_index];
int window_len = 1 << s->block_len_bits;
s->output[i+window_len] = audio[j] / n * win[window_len - i - 1];
s->frame_out[channel][i] = audio[j] / n * win[i];
}
- ff_mdct_calc(&s->mdct_ctx[window_index], s->coefs[channel], s->output);
+ mdct->mdct_calc(mdct, s->coefs[channel], s->output);
}
}
return put_bits_ptr(&s->pb) - s->pb.buf;
}
-AVCodec ff_wmav1_encoder =
-{
- "wmav1",
- AVMEDIA_TYPE_AUDIO,
- CODEC_ID_WMAV1,
- sizeof(WMACodecContext),
- encode_init,
- encode_superframe,
- ff_wma_end,
- .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE},
- .long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio 1"),
+AVCodec ff_wmav1_encoder = {
+ .name = "wmav1",
+ .type = AVMEDIA_TYPE_AUDIO,
+ .id = CODEC_ID_WMAV1,
+ .priv_data_size = sizeof(WMACodecContext),
+ .init = encode_init,
+ .encode = encode_superframe,
+ .close = ff_wma_end,
+ .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE},
+ .long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio 1"),
};
-AVCodec ff_wmav2_encoder =
-{
- "wmav2",
- AVMEDIA_TYPE_AUDIO,
- CODEC_ID_WMAV2,
- sizeof(WMACodecContext),
- encode_init,
- encode_superframe,
- ff_wma_end,
- .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE},
- .long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio 2"),
+AVCodec ff_wmav2_encoder = {
+ .name = "wmav2",
+ .type = AVMEDIA_TYPE_AUDIO,
+ .id = CODEC_ID_WMAV2,
+ .priv_data_size = sizeof(WMACodecContext),
+ .init = encode_init,
+ .encode = encode_superframe,
+ .close = ff_wma_end,
+ .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE},
+ .long_name = NULL_IF_CONFIG_SMALL("Windows Media Audio 2"),
};