AAC encoder: don't apply MS on special bands
authorClaudio Freire <klaussfreire@gmail.com>
Fri, 8 Jan 2016 08:04:37 +0000 (05:04 -0300)
committerClaudio Freire <klaussfreire@gmail.com>
Wed, 13 Jan 2016 08:28:34 +0000 (05:28 -0300)
Change the condition for application of the M/S transform to match
that of the decoder. Namely, that no special coding books must be
in use in either channel. While the condition ought to be
equivalent to the current one when the invariant of is_mask is
kept, matching the decoder's condition is safer and easier to
maintain.

libavcodec/aacenc.c

index 20a8f5a..4b94f98 100644 (file)
@@ -300,8 +300,8 @@ static void apply_mid_side_stereo(ChannelElement *cpe)
                  * ms_mask is set.
                  */
                 if (!cpe->ms_mask[w*16 + g] || cpe->is_mask[w*16 + g]
-                    || cpe->ch[0].band_type[w*16 + g] == NOISE_BT
-                    || cpe->ch[1].band_type[w*16 + g] == NOISE_BT) {
+                    || cpe->ch[0].band_type[w*16 + g] >= NOISE_BT
+                    || cpe->ch[1].band_type[w*16 + g] >= NOISE_BT) {
                     start += ics->swb_sizes[g];
                     continue;
                 }