aacenc: Implement dummy channel group analysis that just calls the single channel analysis for each channel.
This commit is contained in:
parent
0bc01cc9fe
commit
01344fe409
@ -564,14 +564,17 @@ static int aac_encode_frame(AVCodecContext *avctx,
|
|||||||
memset(chan_el_counter, 0, sizeof(chan_el_counter));
|
memset(chan_el_counter, 0, sizeof(chan_el_counter));
|
||||||
for (i = 0; i < s->chan_map[0]; i++) {
|
for (i = 0; i < s->chan_map[0]; i++) {
|
||||||
FFPsyWindowInfo* wi = windows + start_ch;
|
FFPsyWindowInfo* wi = windows + start_ch;
|
||||||
|
const float *coeffs[2];
|
||||||
tag = s->chan_map[i+1];
|
tag = s->chan_map[i+1];
|
||||||
chans = tag == TYPE_CPE ? 2 : 1;
|
chans = tag == TYPE_CPE ? 2 : 1;
|
||||||
cpe = &s->cpe[i];
|
cpe = &s->cpe[i];
|
||||||
put_bits(&s->pb, 3, tag);
|
put_bits(&s->pb, 3, tag);
|
||||||
put_bits(&s->pb, 4, chan_el_counter[tag]++);
|
put_bits(&s->pb, 4, chan_el_counter[tag]++);
|
||||||
|
for (ch = 0; ch < chans; ch++)
|
||||||
|
coeffs[ch] = cpe->ch[ch].coeffs;
|
||||||
|
s->psy.model->analyze_group(&s->psy, start_ch, coeffs, wi);
|
||||||
for (ch = 0; ch < chans; ch++) {
|
for (ch = 0; ch < chans; ch++) {
|
||||||
s->cur_channel = start_ch * 2 + ch;
|
s->cur_channel = start_ch * 2 + ch;
|
||||||
s->psy.model->analyze(&s->psy, start_ch + ch, cpe->ch[ch].coeffs, &wi[ch]);
|
|
||||||
s->coder->search_for_quantizers(avctx, s, &cpe->ch[ch], s->lambda);
|
s->coder->search_for_quantizers(avctx, s, &cpe->ch[ch], s->lambda);
|
||||||
}
|
}
|
||||||
cpe->common_window = 0;
|
cpe->common_window = 0;
|
||||||
|
@ -741,6 +741,16 @@ static void psy_3gpp_analyze(FFPsyContext *ctx, int channel,
|
|||||||
memcpy(pch->prev_band, pch->band, sizeof(pch->band));
|
memcpy(pch->prev_band, pch->band, sizeof(pch->band));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void psy_3gpp_analyze_group(FFPsyContext *ctx, int channel,
|
||||||
|
const float **coeffs, const FFPsyWindowInfo *wi)
|
||||||
|
{
|
||||||
|
int ch;
|
||||||
|
FFPsyChannelGroup *group = ff_psy_find_group(ctx, channel);
|
||||||
|
|
||||||
|
for (ch = 0; ch < group->num_ch; ch++)
|
||||||
|
psy_3gpp_analyze(ctx, channel + ch, coeffs[ch], &wi[ch]);
|
||||||
|
}
|
||||||
|
|
||||||
static av_cold void psy_3gpp_end(FFPsyContext *apc)
|
static av_cold void psy_3gpp_end(FFPsyContext *apc)
|
||||||
{
|
{
|
||||||
AacPsyContext *pctx = (AacPsyContext*) apc->model_priv_data;
|
AacPsyContext *pctx = (AacPsyContext*) apc->model_priv_data;
|
||||||
@ -921,6 +931,6 @@ const FFPsyModel ff_aac_psy_model =
|
|||||||
.init = psy_3gpp_init,
|
.init = psy_3gpp_init,
|
||||||
.window = psy_lame_window,
|
.window = psy_lame_window,
|
||||||
.analyze = psy_3gpp_analyze,
|
.analyze = psy_3gpp_analyze,
|
||||||
.analyze_group = NULL,
|
.analyze_group = psy_3gpp_analyze_group,
|
||||||
.end = psy_3gpp_end,
|
.end = psy_3gpp_end,
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user