--- a/dom/media/CubebUtils.cpp
+++ b/dom/media/CubebUtils.cpp
@@ -34,32 +34,33 @@
#define PREF_CUBEB_LATENCY_PLAYBACK "media.cubeb_latency_playback_ms"
#define PREF_CUBEB_LATENCY_MSG "media.cubeb_latency_msg_frames"
// Allows to get something non-default for the preferred sample-rate, to allow
// troubleshooting in the field and testing.
#define PREF_CUBEB_FORCE_SAMPLE_RATE "media.cubeb.force_sample_rate"
#define PREF_CUBEB_LOGGING_LEVEL "media.cubeb.logging_level"
#define PREF_CUBEB_SANDBOX "media.cubeb.sandbox"
-#define MASK_MONO (1 << AudioConfig::CHANNEL_MONO)
-#define MASK_MONO_LFE (MASK_MONO | (1 << AudioConfig::CHANNEL_LFE))
-#define MASK_STEREO ((1 << AudioConfig::CHANNEL_LEFT) | (1 << AudioConfig::CHANNEL_RIGHT))
-#define MASK_STEREO_LFE (MASK_STEREO | (1 << AudioConfig::CHANNEL_LFE))
-#define MASK_3F (MASK_STEREO | (1 << AudioConfig::CHANNEL_CENTER))
-#define MASK_3F_LFE (MASK_3F | (1 << AudioConfig::CHANNEL_LFE))
-#define MASK_2F1 (MASK_STEREO | (1 << AudioConfig::CHANNEL_RCENTER))
-#define MASK_2F1_LFE (MASK_2F1 | (1 << AudioConfig::CHANNEL_LFE))
-#define MASK_3F1 (MASK_3F | (1 < AudioConfig::CHANNEL_RCENTER))
-#define MASK_3F1_LFE (MASK_3F1 | (1 << AudioConfig::CHANNEL_LFE))
-#define MASK_2F2 (MASK_STEREO | (1 << AudioConfig::CHANNEL_LS) | (1 << AudioConfig::CHANNEL_RS))
-#define MASK_2F2_LFE (MASK_2F2 | (1 << AudioConfig::CHANNEL_LFE))
-#define MASK_3F2 (MASK_3F | (1 << AudioConfig::CHANNEL_LS) | (1 << AudioConfig::CHANNEL_RS))
-#define MASK_3F2_LFE (MASK_3F2 | (1 << AudioConfig::CHANNEL_LFE))
-#define MASK_3F3R_LFE (MASK_3F2_LFE | (1 << AudioConfig::CHANNEL_RCENTER))
-#define MASK_3F4_LFE (MASK_3F2_LFE | (1 << AudioConfig::CHANNEL_RLS) | (1 << AudioConfig::CHANNEL_RRS))
+#define MASK_MONO (AudioConfig::ChannelLayout::LMONO_MAP)
+#define MASK_MONO_LFE (AudioConfig::ChannelLayout::LMONO_LFE_MAP)
+#define MASK_STEREO (AudioConfig::ChannelLayout::LSTEREO_MAP)
+#define MASK_STEREO_LFE (AudioConfig::ChannelLayout::LSTEREO_LFE_MAP)
+#define MASK_3F (AudioConfig::ChannelLayout::L3F_MAP)
+#define MASK_3F_LFE (AudioConfig::ChannelLayout::L3F_LFE_MAP)
+#define MASK_2F1 (AudioConfig::ChannelLayout::L2F1_MAP)
+#define MASK_2F1_LFE (AudioConfig::ChannelLayout::L2F1_LFE_MAP)
+#define MASK_3F1 (AudioConfig::ChannelLayout::L3F1_MAP)
+#define MASK_3F1_LFE (AudioConfig::ChannelLayout::L3F1_LFE_MAP)
+#define MASK_2F2 (AudioConfig::ChannelLayout::L2F2_MAP)
+#define MASK_QUAD (AudioConfig::ChannelLayout::LQUAD_MAP)
+#define MASK_2F2_LFE (AudioConfig::ChannelLayout::L2F2_LFE_MAP)
+#define MASK_3F2 (AudioConfig::ChannelLayout::L3F2_MAP)
+#define MASK_3F2_LFE (AudioConfig::ChannelLayout::L3F2_LFE_MAP)
+#define MASK_3F3R_LFE (AudioConfig::ChannelLayout::L3F3R_LFE_MAP)
+#define MASK_3F4_LFE (AudioConfig::ChannelLayout::L3F4_LFE_MAP)
#if (defined(XP_LINUX) && !defined(MOZ_WIDGET_ANDROID)) || defined(XP_MACOSX)
#define MOZ_CUBEB_REMOTING
#endif
extern "C" {
// These functions are provided by audioipc-server crate
extern void* audioipc_server_start();
--- a/dom/media/MediaInfo.cpp
+++ b/dom/media/MediaInfo.cpp
@@ -48,78 +48,85 @@ typedef AudioConfig::ChannelLayout Chann
2F2 L R LS RS
2F2-LFE L R LFE LS RS
3F2 L R C LS RS
3F2-LFE L R C LFE LS RS
3F3R-LFE L R C LFE BC LS RS
3F4-LFE L R C LFE Rls Rrs LS RS
*/
-ChannelLayout ChannelLayout::LMONO{ AudioConfig::CHANNEL_MONO };
-ChannelLayout ChannelLayout::LMONO_LFE{ AudioConfig::CHANNEL_MONO,
- AudioConfig::CHANNEL_LFE };
-ChannelLayout ChannelLayout::LSTEREO{ AudioConfig::CHANNEL_LEFT,
- AudioConfig::CHANNEL_RIGHT };
-ChannelLayout ChannelLayout::LSTEREO_LFE{ AudioConfig::CHANNEL_LEFT,
- AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_LFE };
-ChannelLayout ChannelLayout::L3F{ AudioConfig::CHANNEL_LEFT,
- AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_CENTER };
-ChannelLayout ChannelLayout::L3F_LFE{ AudioConfig::CHANNEL_LEFT,
- AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_CENTER,
- AudioConfig::CHANNEL_LFE };
-ChannelLayout ChannelLayout::L2F1{ AudioConfig::CHANNEL_LEFT,
- AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_RCENTER };
-ChannelLayout ChannelLayout::L2F1_LFE{ AudioConfig::CHANNEL_LEFT,
- AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_LFE,
- AudioConfig::CHANNEL_RCENTER };
-ChannelLayout ChannelLayout::L3F1{ AudioConfig::CHANNEL_LEFT,
- AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_CENTER,
- AudioConfig::CHANNEL_RCENTER };
-ChannelLayout ChannelLayout::L3F1_LFE{ AudioConfig::CHANNEL_LEFT,
- AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_CENTER,
- AudioConfig::CHANNEL_LFE,
- AudioConfig::CHANNEL_RCENTER };
-ChannelLayout ChannelLayout::L2F2{ AudioConfig::CHANNEL_LEFT,
- AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_LS,
- AudioConfig::CHANNEL_RS };
-ChannelLayout ChannelLayout::L2F2_LFE{ AudioConfig::CHANNEL_LEFT,
- AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_LFE,
- AudioConfig::CHANNEL_LS,
- AudioConfig::CHANNEL_RS };
-ChannelLayout ChannelLayout::L3F2{ AudioConfig::CHANNEL_LEFT,
- AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_CENTER,
- AudioConfig::CHANNEL_LS,
- AudioConfig::CHANNEL_RS };
+ChannelLayout ChannelLayout::LMONO{ CHANNEL_FRONT_CENTER };
+ChannelLayout ChannelLayout::LMONO_LFE{ CHANNEL_FRONT_CENTER, CHANNEL_LFE };
+ChannelLayout ChannelLayout::LSTEREO{ CHANNEL_FRONT_LEFT, CHANNEL_FRONT_RIGHT };
+ChannelLayout ChannelLayout::LSTEREO_LFE{ CHANNEL_FRONT_LEFT,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_LFE };
+ChannelLayout ChannelLayout::L3F{ CHANNEL_FRONT_LEFT,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_FRONT_CENTER };
+ChannelLayout ChannelLayout::L3F_LFE{ CHANNEL_FRONT_LEFT,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_FRONT_CENTER,
+ CHANNEL_LFE };
+ChannelLayout ChannelLayout::L2F1{ CHANNEL_FRONT_LEFT,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_BACK_CENTER };
+ChannelLayout ChannelLayout::L2F1_LFE{ CHANNEL_FRONT_LEFT,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_LFE,
+ CHANNEL_BACK_CENTER };
+ChannelLayout ChannelLayout::L3F1{ CHANNEL_FRONT_LEFT,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_FRONT_CENTER,
+ CHANNEL_BACK_CENTER };
+ChannelLayout ChannelLayout::LSURROUND = ChannelLayout::L3F1;
+ChannelLayout ChannelLayout::L3F1_LFE{ CHANNEL_FRONT_LEFT,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_FRONT_CENTER,
+ CHANNEL_LFE,
+ CHANNEL_BACK_CENTER };
+ChannelLayout ChannelLayout::L2F2{ CHANNEL_FRONT_LEFT,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_SIDE_LEFT,
+ CHANNEL_SIDE_RIGHT };
+ChannelLayout ChannelLayout::L2F2_LFE{ CHANNEL_FRONT_LEFT,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_LFE,
+ CHANNEL_SIDE_LEFT,
+ CHANNEL_SIDE_RIGHT };
+ChannelLayout ChannelLayout::LQUAD{ CHANNEL_FRONT_LEFT,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_BACK_LEFT,
+ CHANNEL_BACK_RIGHT };
+ChannelLayout ChannelLayout::LQUAD_LFE{ CHANNEL_FRONT_LEFT,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_LFE,
+ CHANNEL_BACK_LEFT,
+ CHANNEL_BACK_RIGHT };
+ChannelLayout ChannelLayout::L3F2{ CHANNEL_FRONT_LEFT,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_FRONT_CENTER,
+ CHANNEL_SIDE_LEFT,
+ CHANNEL_SIDE_RIGHT };
ChannelLayout ChannelLayout::L3F2_LFE{
- AudioConfig::CHANNEL_LEFT, AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_CENTER, AudioConfig::CHANNEL_LFE,
- AudioConfig::CHANNEL_LS, AudioConfig::CHANNEL_RS
+ CHANNEL_FRONT_LEFT, CHANNEL_FRONT_RIGHT, CHANNEL_FRONT_CENTER,
+ CHANNEL_LFE, CHANNEL_SIDE_LEFT, CHANNEL_SIDE_RIGHT
};
+ChannelLayout ChannelLayout::L5POINT1_SURROUND = ChannelLayout::L3F2_LFE;
+
ChannelLayout ChannelLayout::L3F3R_LFE{
- AudioConfig::CHANNEL_LEFT, AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_CENTER, AudioConfig::CHANNEL_LFE,
- AudioConfig::CHANNEL_RCENTER, AudioConfig::CHANNEL_LS,
- AudioConfig::CHANNEL_RS
+ CHANNEL_FRONT_LEFT, CHANNEL_FRONT_RIGHT, CHANNEL_FRONT_CENTER, CHANNEL_LFE,
+ CHANNEL_BACK_CENTER, CHANNEL_SIDE_LEFT, CHANNEL_SIDE_RIGHT
};
ChannelLayout ChannelLayout::L3F4_LFE{
- AudioConfig::CHANNEL_LEFT, AudioConfig::CHANNEL_RIGHT,
- AudioConfig::CHANNEL_CENTER, AudioConfig::CHANNEL_LFE,
- AudioConfig::CHANNEL_RLS, AudioConfig::CHANNEL_RRS,
- AudioConfig::CHANNEL_LS, AudioConfig::CHANNEL_RS
+ CHANNEL_FRONT_LEFT, CHANNEL_FRONT_RIGHT, CHANNEL_FRONT_CENTER,
+ CHANNEL_LFE, CHANNEL_BACK_LEFT, CHANNEL_BACK_RIGHT,
+ CHANNEL_SIDE_LEFT, CHANNEL_SIDE_RIGHT
};
+ChannelLayout ChannelLayout::L7POINT1_SURROUND = ChannelLayout::L3F4_LFE;
void
AudioConfig::ChannelLayout::UpdateChannelMap()
{
mValid = mChannels.Length() <= MAX_AUDIO_CHANNELS;
mChannelMap = 0;
if (mValid) {
mChannelMap = Map();
@@ -146,52 +153,52 @@ AudioConfig::ChannelLayout::Map() const
}
/* static */ const AudioConfig::Channel*
AudioConfig::ChannelLayout::SMPTEDefault(uint32_t aChannels) const
{
switch (aChannels) {
case 1: // MONO
{
- static const Channel config[] = { CHANNEL_MONO };
+ static const Channel config[] = { CHANNEL_FRONT_CENTER };
return config;
}
case 2: // STEREO
{
- static const Channel config[] = { CHANNEL_LEFT, CHANNEL_RIGHT };
+ static const Channel config[] = { CHANNEL_FRONT_LEFT, CHANNEL_FRONT_RIGHT };
return config;
}
case 3: // 3F
{
- static const Channel config[] = { CHANNEL_LEFT, CHANNEL_RIGHT, CHANNEL_CENTER };
+ static const Channel config[] = { CHANNEL_FRONT_LEFT, CHANNEL_FRONT_RIGHT, CHANNEL_FRONT_CENTER };
return config;
}
case 4: // 2F2
{
- static const Channel config[] = { CHANNEL_LEFT, CHANNEL_RIGHT, CHANNEL_LS, CHANNEL_RS };
+ static const Channel config[] = { CHANNEL_FRONT_LEFT, CHANNEL_FRONT_RIGHT, CHANNEL_BACK_LEFT, CHANNEL_BACK_RIGHT };
return config;
}
case 5: // 3F2
{
- static const Channel config[] = { CHANNEL_LEFT, CHANNEL_RIGHT, CHANNEL_CENTER, CHANNEL_LS, CHANNEL_RS };
+ static const Channel config[] = { CHANNEL_FRONT_LEFT, CHANNEL_FRONT_RIGHT, CHANNEL_FRONT_CENTER, CHANNEL_SIDE_LEFT, CHANNEL_SIDE_RIGHT };
return config;
}
case 6: // 3F2-LFE
{
- static const Channel config[] = { CHANNEL_LEFT, CHANNEL_RIGHT, CHANNEL_CENTER, CHANNEL_LFE, CHANNEL_LS, CHANNEL_RS };
+ static const Channel config[] = { CHANNEL_FRONT_LEFT, CHANNEL_FRONT_RIGHT, CHANNEL_FRONT_CENTER, CHANNEL_LFE, CHANNEL_SIDE_LEFT, CHANNEL_SIDE_RIGHT };
return config;
}
case 7: // 3F3R-LFE
{
- static const Channel config[] = { CHANNEL_LEFT, CHANNEL_RIGHT, CHANNEL_CENTER, CHANNEL_LFE, CHANNEL_RCENTER, CHANNEL_LS, CHANNEL_RS };
+ static const Channel config[] = { CHANNEL_FRONT_LEFT, CHANNEL_FRONT_RIGHT, CHANNEL_FRONT_CENTER, CHANNEL_LFE, CHANNEL_BACK_CENTER, CHANNEL_SIDE_LEFT, CHANNEL_SIDE_RIGHT };
return config;
}
case 8: // 3F4-LFE
{
- static const Channel config[] = { CHANNEL_LEFT, CHANNEL_RIGHT, CHANNEL_CENTER, CHANNEL_LFE, CHANNEL_RLS, CHANNEL_RRS, CHANNEL_LS, CHANNEL_RS };
+ static const Channel config[] = { CHANNEL_FRONT_LEFT, CHANNEL_FRONT_RIGHT, CHANNEL_FRONT_CENTER, CHANNEL_LFE, CHANNEL_BACK_LEFT, CHANNEL_BACK_RIGHT, CHANNEL_SIDE_LEFT, CHANNEL_SIDE_RIGHT };
return config;
}
default:
return nullptr;
}
}
/* static */ const AudioConfig::ChannelLayout&
@@ -205,16 +212,17 @@ AudioConfig::ChannelLayout::SMPTEDefault
MOZ_ASSERT(L3F_MAP == L3F.Map());
MOZ_ASSERT(L3F_LFE_MAP == L3F_LFE.Map());
MOZ_ASSERT(L2F1_MAP == L2F1.Map());
MOZ_ASSERT(L2F1_LFE_MAP == L2F1_LFE.Map());
MOZ_ASSERT(L3F1_MAP == L3F1.Map());
MOZ_ASSERT(L3F1_LFE_MAP == L3F1_LFE.Map());
MOZ_ASSERT(L2F2_MAP == L2F2.Map());
MOZ_ASSERT(L2F2_LFE_MAP == L2F2_LFE.Map());
+ MOZ_ASSERT(LQUAD_MAP == LQUAD.Map());
MOZ_ASSERT(L3F2_MAP == L3F2.Map());
MOZ_ASSERT(L3F2_LFE_MAP == L3F2_LFE.Map());
MOZ_ASSERT(L3F3R_LFE_MAP == L3F3R_LFE.Map());
MOZ_ASSERT(L3F4_LFE_MAP == L3F4_LFE.Map());
if (!aChannelLayout.IsValid()) {
return aChannelLayout;
}
@@ -227,16 +235,17 @@ AudioConfig::ChannelLayout::SMPTEDefault
case L3F_MAP: return L3F;
case L3F_LFE_MAP: return L3F_LFE;
case L2F1_MAP: return L2F1;
case L2F1_LFE_MAP: return L2F1_LFE;
case L3F1_MAP: return L3F1;
case L3F1_LFE_MAP: return L3F1_LFE;
case L2F2_MAP: return L2F2;
case L2F2_LFE_MAP: return L2F2_LFE;
+ case LQUAD_MAP: return LQUAD;
case L3F2_MAP: return L3F2;
case L3F2_LFE_MAP: return L3F2_LFE;
case L3F3R_LFE_MAP: return L3F3R_LFE;
case L3F4_LFE_MAP: return L3F4_LFE;
default:
// unknown return identical.
return aChannelLayout;
}
--- a/dom/media/MediaInfo.h
+++ b/dom/media/MediaInfo.h
@@ -616,26 +616,35 @@ public:
class AudioConfig
{
public:
// Channel definition is conveniently defined to be in the same order as
// WAVEFORMAT && SMPTE, even though this is unused for now.
enum Channel
{
CHANNEL_INVALID = -1,
- CHANNEL_MONO = 0,
- CHANNEL_LEFT,
- CHANNEL_RIGHT,
- CHANNEL_CENTER,
+ CHANNEL_FRONT_LEFT = 0,
+ CHANNEL_FRONT_RIGHT,
+ CHANNEL_FRONT_CENTER,
CHANNEL_LFE,
- CHANNEL_RCENTER,
- CHANNEL_LS,
- CHANNEL_RS,
- CHANNEL_RLS,
- CHANNEL_RRS,
+ CHANNEL_BACK_LEFT,
+ CHANNEL_BACK_RIGHT,
+ CHANNEL_FRONT_LEFT_OF_CENTER,
+ CHANNEL_FRONT_RIGHT_OF_CENTER,
+ CHANNEL_BACK_CENTER,
+ CHANNEL_SIDE_LEFT,
+ CHANNEL_SIDE_RIGHT,
+ // From WAVEFORMAT definition.
+ CHANNEL_TOP_CENTER,
+ CHANNEL_TOP_FRONT_LEFT,
+ CHANNEL_TOP_FRONT_CENTER,
+ CHANNEL_TOP_FRONT_RIGHT,
+ CHANNEL_TOP_BACK_LEFT,
+ CHANNEL_TOP_BACK_CENTER,
+ CHANNEL_TOP_BACK_RIGHT
};
class ChannelLayout
{
public:
ChannelLayout() : mChannelMap(0), mValid(false) { }
explicit ChannelLayout(uint32_t aChannels)
: ChannelLayout(aChannels, SMPTEDefault(aChannels))
@@ -689,74 +698,95 @@ public:
return mChannelMap & (1 << aChannel);
}
static const ChannelLayout& SMPTEDefault(
const ChannelLayout& aChannelLayout);
// Common channel layout definitions.
static ChannelLayout LMONO;
- static constexpr uint32_t LMONO_MAP = 1 << CHANNEL_MONO;
+ static constexpr uint32_t LMONO_MAP = 1 << CHANNEL_FRONT_CENTER;
static ChannelLayout LMONO_LFE;
static constexpr uint32_t LMONO_LFE_MAP =
- 1 << CHANNEL_MONO | 1 << CHANNEL_LFE;
+ 1 << CHANNEL_FRONT_CENTER | 1 << CHANNEL_LFE;
static ChannelLayout LSTEREO;
static constexpr uint32_t LSTEREO_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT;
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT;
static ChannelLayout LSTEREO_LFE;
static constexpr uint32_t LSTEREO_LFE_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT | 1 << CHANNEL_LFE;
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT | 1 << CHANNEL_LFE;
static ChannelLayout L3F;
- static constexpr uint32_t L3F_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT | 1 << CHANNEL_CENTER;
+ static constexpr uint32_t L3F_MAP = 1 << CHANNEL_FRONT_LEFT |
+ 1 << CHANNEL_FRONT_RIGHT |
+ 1 << CHANNEL_FRONT_CENTER;
static ChannelLayout L3F_LFE;
static constexpr uint32_t L3F_LFE_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT | 1 << CHANNEL_CENTER |
- 1 << CHANNEL_LFE;
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT |
+ 1 << CHANNEL_FRONT_CENTER | 1 << CHANNEL_LFE;
static ChannelLayout L2F1;
- static constexpr uint32_t L2F1_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT | 1 << CHANNEL_RCENTER;
+ static constexpr uint32_t L2F1_MAP = 1 << CHANNEL_FRONT_LEFT |
+ 1 << CHANNEL_FRONT_RIGHT |
+ 1 << CHANNEL_BACK_CENTER;
static ChannelLayout L2F1_LFE;
static constexpr uint32_t L2F1_LFE_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT | 1 << CHANNEL_LFE |
- 1 << CHANNEL_RCENTER;
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT | 1 << CHANNEL_LFE |
+ 1 << CHANNEL_BACK_CENTER;
static ChannelLayout L3F1;
static constexpr uint32_t L3F1_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT | 1 << CHANNEL_CENTER |
- 1 << CHANNEL_RCENTER;
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT |
+ 1 << CHANNEL_FRONT_CENTER | 1 << CHANNEL_BACK_CENTER;
+ static ChannelLayout LSURROUND; // Same as 3F1
+ static constexpr uint32_t LSURROUND_MAP = L3F1_MAP;
static ChannelLayout L3F1_LFE;
static constexpr uint32_t L3F1_LFE_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT | 1 << CHANNEL_CENTER |
- 1 << CHANNEL_LFE | 1 << CHANNEL_RCENTER;
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT |
+ 1 << CHANNEL_FRONT_CENTER | 1 << CHANNEL_LFE | 1 << CHANNEL_BACK_CENTER;
static ChannelLayout L2F2;
- static constexpr uint32_t L2F2_MAP = 1 << CHANNEL_LEFT |
- 1 << CHANNEL_RIGHT | 1 << CHANNEL_LS |
- 1 << CHANNEL_RS;
+ static constexpr uint32_t L2F2_MAP =
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT |
+ 1 << CHANNEL_SIDE_LEFT | 1 << CHANNEL_SIDE_RIGHT;
static ChannelLayout L2F2_LFE;
static constexpr uint32_t L2F2_LFE_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT | 1 << CHANNEL_LFE |
- 1 << CHANNEL_LS | 1 << CHANNEL_RS;
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT | 1 << CHANNEL_LFE |
+ 1 << CHANNEL_SIDE_LEFT | 1 << CHANNEL_SIDE_RIGHT;
+ static ChannelLayout LQUAD;
+ static constexpr uint32_t LQUAD_MAP =
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT |
+ 1 << CHANNEL_BACK_LEFT | 1 << CHANNEL_BACK_RIGHT;
+ static ChannelLayout LQUAD_LFE;
+ static constexpr uint32_t LQUAD_MAP_LFE =
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT | 1 << CHANNEL_LFE |
+ 1 << CHANNEL_BACK_LEFT | 1 << CHANNEL_BACK_RIGHT;
static ChannelLayout L3F2;
static constexpr uint32_t L3F2_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT | 1 << CHANNEL_CENTER |
- 1 << CHANNEL_LS | 1 << CHANNEL_RS;
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT |
+ 1 << CHANNEL_FRONT_CENTER | 1 << CHANNEL_SIDE_LEFT |
+ 1 << CHANNEL_SIDE_RIGHT;
static ChannelLayout L3F2_LFE;
static constexpr uint32_t L3F2_LFE_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT | 1 << CHANNEL_CENTER |
- 1 << CHANNEL_LFE | 1 << CHANNEL_LS | 1 << CHANNEL_RS;
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT |
+ 1 << CHANNEL_FRONT_CENTER | 1 << CHANNEL_LFE | 1 << CHANNEL_SIDE_LEFT |
+ 1 << CHANNEL_SIDE_RIGHT;
+ // 3F2_LFE Alias
+ static ChannelLayout L5POINT1_SURROUND;
+ static constexpr uint32_t L5POINT1_SURROUND_MAP = L3F2_LFE_MAP;
static ChannelLayout L3F3R_LFE;
static constexpr uint32_t L3F3R_LFE_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT | 1 << CHANNEL_CENTER |
- 1 << CHANNEL_LFE | 1 << CHANNEL_RCENTER | 1 << CHANNEL_LS |
- 1 << CHANNEL_RS;
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT |
+ 1 << CHANNEL_FRONT_CENTER | 1 << CHANNEL_LFE | 1 << CHANNEL_BACK_CENTER |
+ 1 << CHANNEL_SIDE_LEFT | 1 << CHANNEL_SIDE_RIGHT;
static ChannelLayout L3F4_LFE;
static constexpr uint32_t L3F4_LFE_MAP =
- 1 << CHANNEL_LEFT | 1 << CHANNEL_RIGHT | 1 << CHANNEL_CENTER |
- 1 << CHANNEL_LFE | 1 << CHANNEL_RLS | 1 << CHANNEL_RRS | 1 << CHANNEL_LS |
- 1 << CHANNEL_RS;
+ 1 << CHANNEL_FRONT_LEFT | 1 << CHANNEL_FRONT_RIGHT |
+ 1 << CHANNEL_FRONT_CENTER | 1 << CHANNEL_LFE | 1 << CHANNEL_BACK_LEFT |
+ 1 << CHANNEL_BACK_RIGHT | 1 << CHANNEL_SIDE_LEFT |
+ 1 << CHANNEL_SIDE_RIGHT;
+ // 3F4_LFE Alias
+ static ChannelLayout L7POINT1_SURROUND;
+ static constexpr uint32_t L7POINT1_SURROUND_MAP = L3F4_LFE_MAP;
private:
void UpdateChannelMap();
const Channel* SMPTEDefault(uint32_t aChannels) const;
AutoTArray<Channel, MAX_AUDIO_CHANNELS> mChannels;
uint32_t mChannelMap;
bool mValid;
};
--- a/dom/media/platforms/agnostic/VorbisDecoder.cpp
+++ b/dom/media/platforms/agnostic/VorbisDecoder.cpp
@@ -298,52 +298,82 @@ VorbisDataDecoder::VorbisLayout(uint32_t
{
// From https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html
// Section 4.3.9.
typedef AudioConfig::Channel Channel;
switch (aChannels) {
case 1: // the stream is monophonic
{
- static const Channel config[] = { AudioConfig::CHANNEL_MONO };
+ static const Channel config[] = { AudioConfig::CHANNEL_FRONT_CENTER };
return config;
}
case 2: // the stream is stereo. channel order: left, right
{
- static const Channel config[] = { AudioConfig::CHANNEL_LEFT, AudioConfig::CHANNEL_RIGHT };
+ static const Channel config[] = { AudioConfig::CHANNEL_FRONT_LEFT,
+ AudioConfig::CHANNEL_FRONT_RIGHT };
+ return config;
+ }
+ case 3: // the stream is a 1d-surround encoding. channel order: left,
+ // center, right
+ {
+ static const Channel config[] = { AudioConfig::CHANNEL_FRONT_LEFT,
+ AudioConfig::CHANNEL_FRONT_CENTER,
+ AudioConfig::CHANNEL_FRONT_RIGHT };
return config;
}
- case 3: // the stream is a 1d-surround encoding. channel order: left, center, right
+ case 4: // the stream is quadraphonic surround. channel order: front left,
+ // front right, rear left, rear right
{
- static const Channel config[] = { AudioConfig::CHANNEL_LEFT, AudioConfig::CHANNEL_CENTER, AudioConfig::CHANNEL_RIGHT };
+ static const Channel config[] = { AudioConfig::CHANNEL_FRONT_LEFT,
+ AudioConfig::CHANNEL_FRONT_RIGHT,
+ AudioConfig::CHANNEL_BACK_LEFT,
+ AudioConfig::CHANNEL_BACK_RIGHT };
return config;
}
- case 4: // the stream is quadraphonic surround. channel order: front left, front right, rear left, rear right
+ case 5: // the stream is five-channel surround. channel order: front left,
+ // center, front right, rear left, rear right
{
- static const Channel config[] = { AudioConfig::CHANNEL_LEFT, AudioConfig::CHANNEL_RIGHT, AudioConfig::CHANNEL_LS, AudioConfig::CHANNEL_RS };
+ static const Channel config[] = { AudioConfig::CHANNEL_FRONT_LEFT,
+ AudioConfig::CHANNEL_FRONT_CENTER,
+ AudioConfig::CHANNEL_FRONT_RIGHT,
+ AudioConfig::CHANNEL_BACK_LEFT,
+ AudioConfig::CHANNEL_BACK_RIGHT };
return config;
}
- case 5: // the stream is five-channel surround. channel order: front left, center, front right, rear left, rear right
+ case 6: // the stream is 5.1 surround. channel order: front left, center,
+ // front right, rear left, rear right, LFE
{
- static const Channel config[] = { AudioConfig::CHANNEL_LEFT, AudioConfig::CHANNEL_CENTER, AudioConfig::CHANNEL_RIGHT, AudioConfig::CHANNEL_LS, AudioConfig::CHANNEL_RS };
+ static const Channel config[] = {
+ AudioConfig::CHANNEL_FRONT_LEFT, AudioConfig::CHANNEL_FRONT_CENTER,
+ AudioConfig::CHANNEL_FRONT_RIGHT, AudioConfig::CHANNEL_BACK_LEFT,
+ AudioConfig::CHANNEL_BACK_RIGHT, AudioConfig::CHANNEL_LFE
+ };
return config;
}
- case 6: // the stream is 5.1 surround. channel order: front left, center, front right, rear left, rear right, LFE
+ case 7: // surround. channel order: front left, center, front right, side
+ // left, side right, rear center, LFE
{
- static const Channel config[] = { AudioConfig::CHANNEL_LEFT, AudioConfig::CHANNEL_CENTER, AudioConfig::CHANNEL_RIGHT, AudioConfig::CHANNEL_LS, AudioConfig::CHANNEL_RS, AudioConfig::CHANNEL_LFE };
+ static const Channel config[] = {
+ AudioConfig::CHANNEL_FRONT_LEFT, AudioConfig::CHANNEL_FRONT_CENTER,
+ AudioConfig::CHANNEL_FRONT_RIGHT, AudioConfig::CHANNEL_SIDE_LEFT,
+ AudioConfig::CHANNEL_SIDE_RIGHT, AudioConfig::CHANNEL_BACK_CENTER,
+ AudioConfig::CHANNEL_LFE
+ };
return config;
}
- case 7: // surround. channel order: front left, center, front right, side left, side right, rear center, LFE
+ case 8: // the stream is 7.1 surround. channel order: front left, center,
+ // front right, side left, side right, rear left, rear right, LFE
{
- static const Channel config[] = { AudioConfig::CHANNEL_LEFT, AudioConfig::CHANNEL_CENTER, AudioConfig::CHANNEL_RIGHT, AudioConfig::CHANNEL_LS, AudioConfig::CHANNEL_RS, AudioConfig::CHANNEL_RCENTER, AudioConfig::CHANNEL_LFE };
- return config;
- }
- case 8: // the stream is 7.1 surround. channel order: front left, center, front right, side left, side right, rear left, rear right, LFE
- {
- static const Channel config[] = { AudioConfig::CHANNEL_LEFT, AudioConfig::CHANNEL_CENTER, AudioConfig::CHANNEL_RIGHT, AudioConfig::CHANNEL_LS, AudioConfig::CHANNEL_RS, AudioConfig::CHANNEL_RLS, AudioConfig::CHANNEL_RRS, AudioConfig::CHANNEL_LFE };
+ static const Channel config[] = {
+ AudioConfig::CHANNEL_FRONT_LEFT, AudioConfig::CHANNEL_FRONT_CENTER,
+ AudioConfig::CHANNEL_FRONT_RIGHT, AudioConfig::CHANNEL_SIDE_LEFT,
+ AudioConfig::CHANNEL_SIDE_RIGHT, AudioConfig::CHANNEL_BACK_LEFT,
+ AudioConfig::CHANNEL_BACK_RIGHT, AudioConfig::CHANNEL_LFE
+ };
return config;
}
default:
return nullptr;
}
}
} // namespace mozilla
--- a/dom/media/platforms/apple/AppleATDecoder.cpp
+++ b/dom/media/platforms/apple/AppleATDecoder.cpp
@@ -414,36 +414,35 @@ AppleATDecoder::GetInputAudioDescription
return NS_OK;
}
AudioConfig::Channel
ConvertChannelLabel(AudioChannelLabel id)
{
switch (id) {
+ case kAudioChannelLabel_Left:
+ return AudioConfig::CHANNEL_FRONT_LEFT;
+ case kAudioChannelLabel_Right:
+ return AudioConfig::CHANNEL_FRONT_RIGHT;
case kAudioChannelLabel_Mono:
- return AudioConfig::CHANNEL_MONO;
- case kAudioChannelLabel_Left:
- return AudioConfig::CHANNEL_LEFT;
- case kAudioChannelLabel_Right:
- return AudioConfig::CHANNEL_RIGHT;
case kAudioChannelLabel_Center:
- return AudioConfig::CHANNEL_CENTER;
+ return AudioConfig::CHANNEL_FRONT_CENTER;
case kAudioChannelLabel_LFEScreen:
return AudioConfig::CHANNEL_LFE;
case kAudioChannelLabel_LeftSurround:
- return AudioConfig::CHANNEL_LS;
+ return AudioConfig::CHANNEL_SIDE_LEFT;
case kAudioChannelLabel_RightSurround:
- return AudioConfig::CHANNEL_RS;
+ return AudioConfig::CHANNEL_SIDE_RIGHT;
case kAudioChannelLabel_CenterSurround:
- return AudioConfig::CHANNEL_RCENTER;
+ return AudioConfig::CHANNEL_BACK_CENTER;
case kAudioChannelLabel_RearSurroundLeft:
- return AudioConfig::CHANNEL_RLS;
+ return AudioConfig::CHANNEL_BACK_LEFT;
case kAudioChannelLabel_RearSurroundRight:
- return AudioConfig::CHANNEL_RRS;
+ return AudioConfig::CHANNEL_BACK_RIGHT;
default:
return AudioConfig::CHANNEL_INVALID;
}
}
// Will set mChannelLayout if a channel layout could properly be identified
// and is supported.
nsresult