diff options
Diffstat (limited to 'audio/filter/af_lavcac3enc.c')
-rw-r--r-- | audio/filter/af_lavcac3enc.c | 29 |
1 files changed, 9 insertions, 20 deletions
diff --git a/audio/filter/af_lavcac3enc.c b/audio/filter/af_lavcac3enc.c index 94d59a11ca..7eacc01d81 100644 --- a/audio/filter/af_lavcac3enc.c +++ b/audio/filter/af_lavcac3enc.c @@ -75,16 +75,16 @@ static int control(struct af_instance *af, int cmd, void *arg) if (AF_FORMAT_IS_AC3(data->format) || data->nch < s->min_channel_num) return AF_DETACH; - af->data->format = s->in_sampleformat; - af->data->bps = af_fmt2bits(s->in_sampleformat) / 8; + mp_audio_set_format(af->data, s->in_sampleformat); if (data->rate == 48000 || data->rate == 44100 || data->rate == 32000) af->data->rate = data->rate; else af->data->rate = 48000; if (data->nch > AC3_MAX_CHANNELS) - af->data->nch = AC3_MAX_CHANNELS; + mp_audio_set_num_channels(af->data, AC3_MAX_CHANNELS); else - af->data->nch = data->nch; + mp_audio_set_channels(af->data, &data->channels); + mp_chmap_reorder_to_lavc(&af->data->channels); test_output_res = af_test_output(af, data); s->pending_len = 0; @@ -108,8 +108,7 @@ static int control(struct af_instance *af, int cmd, void *arg) // Put sample parameters s->lavc_actx->channels = af->data->nch; - s->lavc_actx->channel_layout = - av_get_default_channel_layout(af->data->nch); + s->lavc_actx->channel_layout = mp_chmap_to_lavc(&af->data->channels); s->lavc_actx->sample_rate = af->data->rate; s->lavc_actx->bit_rate = bit_rate; @@ -123,9 +122,8 @@ static int control(struct af_instance *af, int cmd, void *arg) "encoder frame size %d\n", s->lavc_actx->frame_size); return AF_ERROR; } - af->data->format = AF_FORMAT_AC3_BE; - af->data->bps = 2; - af->data->nch = 2; + mp_audio_set_format(af->data, AF_FORMAT_AC3_BE); + mp_audio_set_num_channels(af->data, 2); return test_output_res; case AF_CONTROL_COMMAND_LINE: mp_msg(MSGT_AFILTER, MSGL_DBG2, "af_lavcac3enc cmdline: %s.\n", (char*)arg); @@ -235,15 +233,6 @@ static struct mp_audio* play(struct af_instance* af, struct mp_audio* data) src2= s->pending_data; } - if (c->nch >= 5) { - reorder_channel_nch(src2, - AF_CHANNEL_LAYOUT_MPLAYER_DEFAULT, - AF_CHANNEL_LAYOUT_LAVC_DEFAULT, - c->nch, - s->expect_len / samplesize, - samplesize); - } - void *data = (void *) src2; if (s->planarize) { void *data2 = malloc(s->expect_len); @@ -316,8 +305,8 @@ static struct mp_audio* play(struct af_instance* af, struct mp_audio* data) buf += len; } c->audio = l->audio; - c->nch = 2; - c->bps = 2; + mp_audio_set_num_channels(c, 2); + mp_audio_set_format(c, af->data->format); c->len = outsize; mp_msg(MSGT_AFILTER, MSGL_DBG2, "play return size %d, pending %d\n", outsize, s->pending_len); |