XBMC surround channel mix up (only xbmc)
#31
Cause that commit did not tell AE the updated channel map back. So it does not really know about that.

Please do a git pull followed by another make and see if it is still working, please.
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Reply
#32
Code:
commit 33267589ba0cba9aa9b888295e5d8c61a9c00bc0
Author: fritsch <[email protected]>
Date:   Thu Aug 21 07:45:59 2014 +0200

    AESinkPULSE: Add LFE and FC pairwise to avoid wrong pulse mapping

diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp b/xbmc/cores/AudioEngi
index 4626f16..00c5380 100644
--- a/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkPULSE.cpp
@@ -321,13 +321,29 @@ static pa_channel_map AEChannelMapToPAChannel(CAEChannelIn
   pa_channel_map map;
   pa_channel_map_init(&map);
   pa_channel_position_t pos;
+
+  // make sure we map center and lfe pairwise
+  bool has_lfe_center = info.HasChannel(AE_CH_LFE) && info.HasChannel(AE_CH_FC)
+
   for (unsigned int i = 0; i < info.Count(); ++i)
   {
     pos = AEChannelToPAChannel(info[i]);
     if(pos != PA_CHANNEL_POSITION_INVALID)
     {
-      // remember channel name and increase channel count
-      map.map[map.channels++] = pos;
+      if (pos == PA_CHANNEL_POSITION_FRONT_CENTER && has_lfe_center)
+      {
+         // add center channel
+         map.map[map.channels++] = pos;
+         // add lfe channel
+         map.map[map.channels++] = PA_CHANNEL_POSITION_LFE;
+      }
+      else if (pos == PA_CHANNEL_POSITION_LFE && has_lfe_center) // lfe was alr
+        continue;
+      else
+      {
+        // remember channel name and increase channel count
+        map.map[map.channels++] = pos;
+      }
     }
   }
   return map;

(2014-08-21, 09:34)fritsch Wrote: Cause that commit did not tell AE the updated channel map back. So it does not really know about that.

Please do a git pull followed by another make and see if it is still working, please.

Will test after work (probably closer to 2000 CET) since I'm no longer at the equipment.
Reply
#33
Code:
git fetch origin
git reset --hard origin/master
make clean
make -j5
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Reply
#34
Let's meet in the #xbmc channel then - this is easier to test. Will be there at 8 pm cet.
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Reply
#35
Nice I have reproduced. With a null sink and 6 channels. The channel layout does not really matter - whenever you don't add the speakers "pairwise" the controls will get mixed up.

Reproduced by (the mapping here does not matter):
Code:
pactl load-module module-null-sink channels=6 channel_map=front-left,front-right,rear-left,rear-right,front-center,lfe

Now open xbmc, change output device to this null sink and play the Sample file with the speaker test and mute the subwoofer in pavucontrol. You will magically see, that rear left is muted, but subwoofer produces sound (watch the volume bar in pavucontrol). (Fixed 96 khz)

Adding the channels pairwise works around this issue.
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Reply
#36
Yay! Reproduction by someone else makes me feel I'm not going completely insane. Smile
Reply
#37
Nope you are not. You found a bug deep down in (as of current state: pulseaudio)

Ford_Prefect is currently compiling xbmc to reproduce it.

Sad thing is, that xbmc's code was never wrong, but we now need to search for a workaround to get that going correctly. The above patch helps for:

[FL, FR, LFE, BL, BR, FC] to map it to [FL, FR, FC, LFE, BL, BR]

but what happens with:
[FL, FR, BL, LFE, BR, FC] ? or with a sink that has another standard layout, e.g. [FL, FR, BL, BR, FC, LFE]

These questions we currently discuss ...
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Reply
#38
Still there?

Short meetup in irc? #xbmc?
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Reply
#39
FernetMenta found a better workaround, which also explained why it was not working in "Fixed" Mode, but in all other modes.

The 5.1 and 7.1 standard maps were in no way standard and pulse could not map them correctly (which is a pulseaudio bug), but with that change here: https://github.com/xbmc/xbmc/pull/5265 it should be usable again.

I pushed that patch into my master and resetted the others, so you need to fetch and reset to try.
Code:
git fetch origin
git reset --hard origin/master
make clean
make -j5

Good luck.
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Reply
#40
Sorry, got too busy. Will try tomorrow.
Reply
#41
No hurry :-)
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Reply
#42
14.0-ALPHA3 Git:2014-08-21-87aca0c works
14.0-ALPHA3 Git:2014-08-21-ac92530 works

Want debug log?
Reply
#43
Let me find out the revisions :-) as I force pushed.
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Reply
#44
Nice - yeah - so everything we need is that simple patch, here: https://github.com/fritsch/xbmc/commit/a...c9406d5337

Thanks much for testing. Mainline should work the moment the above mentioned PR goes in.
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Reply
#45
Fix was merged some minutes ago - the nightly of tomorrow should have it working for you.
First decide what functions / features you expect from a system. Then decide for the hardware. Don't waste your money on crap.
Reply

Logout Mark Read Team Forum Stats Members Help
XBMC surround channel mix up (only xbmc)0