typedef struct AMRWBContext {
void *state;
int mode;
+ int last_bitrate;
int allow_dtx;
} AMRWBContext;
return AVERROR(ENOSYS);
}
- s->mode = get_wb_bitrate_mode(avctx->bit_rate, avctx);
+ s->mode = get_wb_bitrate_mode(avctx->bit_rate, avctx);
+ s->last_bitrate = avctx->bit_rate;
avctx->frame_size = 320;
avctx->coded_frame = avcodec_alloc_frame();
AMRWBContext *s = avctx->priv_data;
int size;
- s->mode = get_wb_bitrate_mode(avctx->bit_rate, avctx);
+ if (s->last_bitrate != avctx->bit_rate) {
+ s->mode = get_wb_bitrate_mode(avctx->bit_rate, avctx);
+ s->last_bitrate = avctx->bit_rate;
+ }
size = E_IF_encode(s->state, s->mode, data, frame, s->allow_dtx);
return size;
}