Skip to content

Instantly share code, notes, and snippets.

@faroit
Last active March 19, 2017 16:19
Show Gist options
  • Save faroit/dc103520c1f52e15b7315b9c2654525a to your computer and use it in GitHub Desktop.
Save faroit/dc103520c1f52e15b7315b9c2654525a to your computer and use it in GitHub Desktop.
Add more than 8 channel support to chromium
From 40b2c9fb9e3104f437d9f9d420f48e456c788c92 Mon Sep 17 00:00:00 2001
From: Fabian-Robert Stoeter <mail@faroit.com>
Date: Fri, 17 Mar 2017 12:17:46 +0100
Subject: [PATCH] add support for more than 8channels
---
media/base/channel_layout.cc | 10 ++++++++--
media/base/channel_layout.h | 2 +-
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/media/base/channel_layout.cc b/media/base/channel_layout.cc
index 7d3e754df..eff7157e8 100644
--- a/media/base/channel_layout.cc
+++ b/media/base/channel_layout.cc
@@ -166,6 +166,10 @@ int ChannelLayoutToChannelCount(ChannelLayout layout) {
// Converts a channel count into a channel layout.
ChannelLayout GuessChannelLayout(int channels) {
+ if (channels <= 0) {
+ DVLOG(1) << "Unsupported channel count: " << channels;
+ return CHANNEL_LAYOUT_UNSUPPORTED;
+ }
switch (channels) {
case 1:
return CHANNEL_LAYOUT_MONO;
@@ -184,12 +188,14 @@ ChannelLayout GuessChannelLayout(int channels) {
case 8:
return CHANNEL_LAYOUT_7_1;
default:
- DVLOG(1) << "Unsupported channel count: " << channels;
+ return CHANNEL_LAYOUT_DISCRETE;
}
- return CHANNEL_LAYOUT_UNSUPPORTED;
}
int ChannelOrder(ChannelLayout layout, Channels channel) {
+ if (layout == CHANNEL_LAYOUT_DISCRETE)
+ return -1;
+
DCHECK_LT(static_cast<size_t>(layout), arraysize(kChannelOrderings));
DCHECK_LT(static_cast<size_t>(channel), arraysize(kChannelOrderings[0]));
return kChannelOrderings[layout][channel];
diff --git a/media/base/channel_layout.h b/media/base/channel_layout.h
index aaecf6b9e..de3e892da 100644
--- a/media/base/channel_layout.h
+++ b/media/base/channel_layout.h
@@ -131,7 +131,7 @@ enum Channels {
// The maximum number of concurrently active channels for all possible layouts.
// ChannelLayoutToChannelCount() will never return a value higher than this.
-constexpr int kMaxConcurrentChannels = 8;
+constexpr int kMaxConcurrentChannels = 32;
// Returns the expected channel position in an interleaved stream. Values of -1
// mean the channel at that index is not used for that layout. Values range
--
2.11.0
# Build arguments for release build
is_debug = false
is_component_build = false
is_official_build = true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment