contribs: faad2: fix 4 channels groups handling
authorFrancois Cartegnie <fcvlcdev@free.fr>
Wed, 23 Aug 2017 10:34:12 +0000 (12:34 +0200)
committerFrancois Cartegnie <fcvlcdev@free.fr>
Wed, 23 Aug 2017 10:51:46 +0000 (12:51 +0200)
fixes output when channels are declared as 4 back or side chans

refs #18719

contrib/src/faad2/faad2-fix-4channels-groups.patch [new file with mode: 0644]
contrib/src/faad2/rules.mak

diff --git a/contrib/src/faad2/faad2-fix-4channels-groups.patch b/contrib/src/faad2/faad2-fix-4channels-groups.patch
new file mode 100644 (file)
index 0000000..3ac27c7
--- /dev/null
@@ -0,0 +1,25 @@
+diff -Naur faad2/libfaad/decoder.c faad2_patched/libfaad/decoder.c
+--- faad2/libfaad/decoder.c    2017-08-23 12:31:12.495650331 +0200
++++ faad2_patched/libfaad/decoder.c    2017-08-23 12:30:44.755816954 +0200
+@@ -600,6 +601,21 @@
+         hInfo->num_lfe_channels = hDecoder->pce.num_lfe_channels;
+         total += hInfo->num_lfe_channels;
++        /* Patch when channels are declared as 1 + 4 */
++      if(total <= 8)
++      {
++              if(hInfo->num_front_channels < 2 && hInfo->num_side_channels > 3)
++              {
++                      hInfo->num_front_channels += 2;
++                      hInfo->num_side_channels -= 2;
++              }
++              if(hInfo->num_side_channels < 2 && hInfo->num_back_channels > 3)
++              {
++                      hInfo->num_side_channels += 2;
++                      hInfo->num_back_channels -= 2;
++              }
++      }
++
+         chdir = hInfo->num_front_channels;
+         if (chdir & 1)
+         {
index 4a4467b..48bd86d 100644 (file)
@@ -24,6 +24,7 @@ endif
        $(APPLY) $(SRC)/faad2/faad2-fix-71wPCEmapping.patch
        $(APPLY) $(SRC)/faad2/faad2-fix-cpe-reconstruction.patch
        $(APPLY) $(SRC)/faad2/faad2-add-define.patch
+       $(APPLY) $(SRC)/faad2/faad2-fix-4channels-groups.patch
        cd $(UNPACK_DIR) && $(CC) -iquote . -E - </dev/null || sed -i 's/-iquote /-I/' libfaad/Makefile.am
        $(MOVE)