aacenc: reset marked IS and M/S bands upon frame encoding
authorRostislav Pehlivanov <atomnuker@gmail.com>
Thu, 2 Jul 2015 18:13:03 +0000 (19:13 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 3 Jul 2015 14:17:16 +0000 (16:17 +0200)
This commit resets any bands marked as M/S or IS upon encoding a frame.
This is needed because the arrays may contain some residual information
upon allocation on startup and because there isn't any mechanism to
reset the arrays once the frame has been encoded.

Reviewed-by: Claudio Freire <klaussfreire@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/aacenc.c

index 3a512ff..05a8162 100644 (file)
@@ -617,6 +617,8 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
             tag      = s->chan_map[i+1];
             chans    = tag == TYPE_CPE ? 2 : 1;
             cpe      = &s->cpe[i];
+            memset(cpe->is_mask, 0, sizeof(cpe->is_mask));
+            memset(cpe->ms_mask, 0, sizeof(cpe->ms_mask));
             put_bits(&s->pb, 3, tag);
             put_bits(&s->pb, 4, chan_el_counter[tag]++);
             for (ch = 0; ch < chans; ch++)