Browse code

aacenc: Fix determination of Mid/Side Mode.

In adjust_frame_information(), msc is incremented for each sfb in each
sub-window then compared against max_sfb which is for a single sub-window.

This resulted in frames using EIGHT_SHORT_SEQUENCE where the first few
sub-windows increment msc to a value that results in ms_mode == 2. Even
though only some of the bands are actually using Mid/Side.

Nathan Caldwell authored on 2011/06/29 12:11:39
Showing 1 changed files
... ...
@@ -364,7 +364,7 @@ static void adjust_frame_information(AACEncContext *apc, ChannelElement *cpe, in
364 364
         if (msc == 0 || ics0->max_sfb == 0)
365 365
             cpe->ms_mode = 0;
366 366
         else
367
-            cpe->ms_mode = msc < ics0->max_sfb ? 1 : 2;
367
+            cpe->ms_mode = msc < ics0->max_sfb * ics0->num_windows ? 1 : 2;
368 368
     }
369 369
 }
370 370