On 06/20/2011 12:29 AM, Nathan Caldwell wrote:
> ---
> libavcodec/aacenc.c | 16 ++++++++--------
> libavcodec/aacenc.h | 1 +
> 2 files changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
> index e8942a1..8c7ed87 100644
> --- a/libavcodec/aacenc.c
> +++ b/libavcodec/aacenc.c
> @@ -199,8 +199,9 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
> ff_init_ff_sine_windows(10);
> ff_init_ff_sine_windows(7);
>
> + s->chan_map = aac_chan_configs[avctx->channels-1];
> s->samples = av_malloc(2 * 1024 * avctx->channels *
> sizeof(s->samples[0]));
> - s->cpe = av_mallocz(sizeof(ChannelElement) *
> aac_chan_configs[avctx->channels-1][0]);
> + s->cpe = av_mallocz(sizeof(ChannelElement) *
> s->chan_map[0]);
> avctx->extradata = av_mallocz(5 + FF_INPUT_BUFFER_PADDING_SIZE);
> avctx->extradata_size = 5;
> put_audio_specific_config(avctx);
> @@ -491,7 +492,6 @@ static int aac_encode_frame(AVCodecContext *avctx,
> int16_t *samples = s->samples, *samples2, *la;
> ChannelElement *cpe;
> int i, ch, w, g, chans, tag, start_ch;
> - const uint8_t *chan_map = aac_chan_configs[avctx->channels-1];
> int chan_el_counter[4];
> FFPsyWindowInfo windows[AAC_MAX_CHANNELS];
>
> @@ -504,8 +504,8 @@ static int aac_encode_frame(AVCodecContext *avctx,
> } else {
> start_ch = 0;
> samples2 = s->samples + 1024 * avctx->channels;
> - for (i = 0; i < chan_map[0]; i++) {
> - tag = chan_map[i+1];
> + for (i = 0; i < s->chan_map[0]; i++) {
> + tag = s->chan_map[i+1];
> chans = tag == TYPE_CPE ? 2 : 1;
> ff_psy_preprocess(s->psypp, (uint16_t*)data + start_ch,
> samples2 + start_ch, start_ch, chans);
> @@ -520,9 +520,9 @@ static int aac_encode_frame(AVCodecContext *avctx,
> }
>
> start_ch = 0;
> - for (i = 0; i < chan_map[0]; i++) {
> + for (i = 0; i < s->chan_map[0]; i++) {
> FFPsyWindowInfo* wi = windows + start_ch;
> - tag = chan_map[i+1];
> + tag = s->chan_map[i+1];
> chans = tag == TYPE_CPE ? 2 : 1;
> cpe = &s->cpe[i];
> for (ch = 0; ch < chans; ch++) {
> @@ -562,9 +562,9 @@ static int aac_encode_frame(AVCodecContext *avctx,
> put_bitstream_info(avctx, s, LIBAVCODEC_IDENT);
> start_ch = 0;
> memset(chan_el_counter, 0, sizeof(chan_el_counter));
> - for (i = 0; i < chan_map[0]; i++) {
> + for (i = 0; i < s->chan_map[0]; i++) {
> FFPsyWindowInfo* wi = windows + start_ch;
> - tag = chan_map[i+1];
> + tag = s->chan_map[i+1];
> chans = tag == TYPE_CPE ? 2 : 1;
> cpe = &s->cpe[i];
> put_bits(&s->pb, 3, tag);
> diff --git a/libavcodec/aacenc.h b/libavcodec/aacenc.h
> index 067a9b0..3f590fe 100644
> --- a/libavcodec/aacenc.h
> +++ b/libavcodec/aacenc.h
> @@ -61,6 +61,7 @@ typedef struct AACEncContext {
> int16_t *samples; ///< saved preprocessed
> input
>
> int samplerate_index; ///< MPEG-4 samplerate index
> + uint8_t *chan_map; ///< channel configuration
> map
>
> ChannelElement *cpe; ///< channel elements
> FFPsyContext psy;
Looks ok.
-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel