*/
typedef struct MP3On4DecodeContext {
int frames; ///< number of mp3 frames per block (number of mp3 decoder instances)
- int chan_cfg; ///< channel config number
int syncword; ///< syncword patch
+ const uint8_t *coff; ///< channels offsets in output buffer
MPADecodeContext *mp3decctx[5]; ///< MPADecodeContext for every decoder instance
} MP3On4DecodeContext;
av_log(avctx, AV_LOG_ERROR, "Invalid channel config number.\n");
return -1;
}
- s->chan_cfg = cfg.chan_config;
- s->frames = mp3Frames[s->chan_cfg];
- avctx->channels = ff_mpeg4audio_channels[s->chan_cfg];
+ s->frames = mp3Frames[cfg.chan_config];
+ s->coff = chan_offset[cfg.chan_config];
+ avctx->channels = ff_mpeg4audio_channels[cfg.chan_config];
if (cfg.sample_rate < 16000)
s->syncword = 0xffe00000;
int fsize;
int fr, i, j, n;
int off = avctx->channels;
- const uint8_t *coff = chan_offset[s->chan_cfg];
len = buf_size;
if(s->frames > 1) {
n = m->avctx->frame_size*m->nb_channels;
/* interleave output data */
- bp = out_samples + coff[fr];
+ bp = out_samples + s->coff[fr];
if(m->nb_channels == 1) {
for(j = 0; j < n; j++) {
*bp = decoded_buf[j];