2013-12-01, 22:03
and please update to this pull request: https://github.com/xbmc/xbmc/pull/3744 the commit I mentioned earlier is outdated.
(2013-12-01, 21:55)FernetMenta Wrote: please post full debug log (xbmclogs.com or pastebin)
(2013-12-01, 22:03)FernetMenta Wrote: and please update to this pull request: https://github.com/xbmc/xbmc/pull/3744 the commit I mentioned earlier is outdated.
// mix back center if not available in destination layout
if (srcHasBC && !dstHasBC)
{
if (!newInfo.HasChannel(AE_CH_BL) && !newInfo.HasChannel(AE_CH_BR))
newInfo += AE_CH_BL;
newInfo += AE_CH_BR;
}
diff --git "a/xbmc/cores/AudioEngine/Utils/AEChannelInfo.cpp" "b/xbmc/cores/AudioEngine/Utils/AEChannelInfo.cpp"
index c0963c9..7df0a00 100644
--- "a/xbmc/cores/AudioEngine/Utils/AEChannelInfo.cpp"
+++ "b/xbmc/cores/AudioEngine/Utils/AEChannelInfo.cpp"
@@ -56,6 +56,7 @@ void CAEChannelInfo::ResolveChannels(const CAEChannelInfo& rhs, bool mix)
bool srcHasRL = false;
bool srcHasRR = false;
bool srcHasBC = false;
+ bool srcHasFC = false;
bool dstHasSL = false;
bool dstHasSR = false;
@@ -85,6 +86,7 @@ void CAEChannelInfo::ResolveChannels(const CAEChannelInfo& rhs, bool mix)
case AE_CH_BL: srcHasRL = true; break;
case AE_CH_BR: srcHasRR = true; break;
case AE_CH_BC: srcHasBC = true; break;
+ case AE_CH_FC: srcHasFC = true; break;
default:
break;
}
@@ -136,6 +138,10 @@ void CAEChannelInfo::ResolveChannels(const CAEChannelInfo& rhs, bool mix)
newInfo += AE_CH_SR;
}
+ // Add LFE to 3.0/5.0/7.0 formats
+ if (srcHasFC && !newInfo.HasChannel(AE_CH_LFE))
+ newInfo += AE_CH_LFE;
+
*this = newInfo;
}
Quote:If I figured this out correctly, when using your commit, I might end up with 4.1 (Quad+LFE) as a replacement for my unsupported 5.0, although 5.1 should be the preferred layout in this case.
(2013-12-06, 10:40)FernetMenta Wrote: Could you test this: https://github.com/FernetMenta/xbmc/comm...1db493f2bd
It tries standard layouts if requested one is not supported. As a last resort it opens stereo which is much better than silence.
commit 290c5e597a061514cc771d2388efb87731dfe549
Author: fritsch <[email protected]>
Date: Fri Dec 6 22:36:20 2013 +0100
AESinkWasapi: Workaround 5.0 and 7.0 speaker layouts by adding LFE chan
diff --git a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp
index 847359d..a1de198 100644
--- a/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp
+++ b/xbmc/cores/AudioEngine/Sinks/AESinkWASAPI.cpp
@@ -156,6 +156,16 @@ DWORD ChLayoutToChMask(const enum AEChannel * layout, unsigned int * numberOfCha
unsigned int i;
for (i = 0; layout[i] != AE_CH_NULL; i++)
mask |= WASAPIChannelOrder[layout[i]];
+
+ //workaround 7.0 and 5.0 layout
+ if (mask == (KSAUDIO_SPEAKER_5POINT1 & ~SPEAKER_LOW_FREQUENCY)
+ || mask == (KSAUDIO_SPEAKER_5POINT1_SURROUND & ~SPEAKER_LOW_FREQUENCY)
+ || mask == (KSAUDIO_SPEAKER_7POINT1 & ~SPEAKER_LOW_FREQUENCY)
+ || mask == (KSAUDIO_SPEAKER_7POINT1_SURROUND & ~SPEAKER_LOW_FREQUENCY))
+ {
+ ++i;
+ mask |= SPEAKER_LOW_FREQUENCY;
+ }
if (numberOfChannels)
*numberOfChannels = i;
static enum AEChannel layouts[AE_CH_LAYOUT_MAX][9] = {
{AE_CH_FC, AE_CH_NULL},
{AE_CH_FL, AE_CH_FR, AE_CH_NULL},
{AE_CH_FL, AE_CH_FR, AE_CH_LFE, AE_CH_NULL},
{AE_CH_FL, AE_CH_FR, AE_CH_FC , AE_CH_NULL},
{AE_CH_FL, AE_CH_FR, AE_CH_FC , AE_CH_LFE, AE_CH_NULL},
{AE_CH_FL, AE_CH_FR, AE_CH_BL , AE_CH_BR , AE_CH_NULL},
{AE_CH_FL, AE_CH_FR, AE_CH_BL , AE_CH_BR , AE_CH_LFE, AE_CH_NULL},
{AE_CH_FL, AE_CH_FR, AE_CH_FC , AE_CH_BL , AE_CH_BR , AE_CH_NULL},
{AE_CH_FL, AE_CH_FR, AE_CH_FC , AE_CH_BL , AE_CH_BR , AE_CH_LFE, AE_CH_NULL},
{AE_CH_FL, AE_CH_FR, AE_CH_FC , AE_CH_BL , AE_CH_BR , AE_CH_SL , AE_CH_SR, AE_CH_NULL},
{AE_CH_FL, AE_CH_FR, AE_CH_FC , AE_CH_BL , AE_CH_BR , AE_CH_SL , AE_CH_SR, AE_CH_LFE, AE_CH_NULL}
};