summaryrefslogtreecommitdiff
path: root/libavcodec/aacenc.c
diff options
context:
space:
mode:
authorAlex Converse <alex.converse@gmail.com>2010-07-07 21:48:51 +0000
committerAlex Converse <alex.converse@gmail.com>2010-07-07 21:48:51 +0000
commit03d5d9b90023d447fc451da3ff82d9fb4c118e23 (patch)
treef9f9685c89863543fa42cd4322c97ab11924c493 /libavcodec/aacenc.c
parent0fd0ef7947ad31b2e1b9506cb70d85dcfdf6cba6 (diff)
aacenc: Enforce LFE bitstream restrictions.
Originally committed as revision 24099 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/aacenc.c')
-rw-r--r--libavcodec/aacenc.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
index 387d0c2f9d..7015895e95 100644
--- a/libavcodec/aacenc.c
+++ b/libavcodec/aacenc.c
@@ -209,10 +209,6 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
ff_aac_tableinit();
- if (avctx->channels > 5)
- av_log(avctx, AV_LOG_ERROR, "This encoder does not yet enforce the restrictions on LFEs. "
- "The output will most likely be an illegal bitstream.\n");
-
return 0;
}
@@ -527,14 +523,21 @@ static int aac_encode_frame(AVCodecContext *avctx,
for (j = 0; j < chans; j++) {
IndividualChannelStream *ics = &cpe->ch[j].ics;
int k;
+ if (tag == TYPE_LFE) {
+ wi[j].window_type[0] = ONLY_LONG_SEQUENCE;
+ wi[j].window_shape = 0;
+ wi[j].num_windows = 1;
+ wi[j].grouping[0] = 1;
+ } else {
wi[j] = ff_psy_suggest_window(&s->psy, samples2, la, start_ch + j, ics->window_sequence[0]);
+ }
ics->window_sequence[1] = ics->window_sequence[0];
ics->window_sequence[0] = wi[j].window_type[0];
ics->use_kb_window[1] = ics->use_kb_window[0];
ics->use_kb_window[0] = wi[j].window_shape;
ics->num_windows = wi[j].num_windows;
ics->swb_sizes = s->psy.bands [ics->num_windows == 8];
- ics->num_swb = s->psy.num_bands[ics->num_windows == 8];
+ ics->num_swb = tag == TYPE_LFE ? 12 : s->psy.num_bands[ics->num_windows == 8];
for (k = 0; k < ics->num_windows; k++)
ics->group_len[k] = wi[j].grouping[k];