// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "media/audio/android/opensles_util.h"

#include "base/logging.h"

namespace media {

#define SL_ANDROID_SPEAKER_QUAD                                            \
  (SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT | SL_SPEAKER_BACK_LEFT | \
   SL_SPEAKER_BACK_RIGHT)
#define SL_ANDROID_SPEAKER_5DOT1                                              \
  (SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT | SL_SPEAKER_FRONT_CENTER | \
   SL_SPEAKER_LOW_FREQUENCY | SL_SPEAKER_BACK_LEFT | SL_SPEAKER_BACK_RIGHT)
#define SL_ANDROID_SPEAKER_7DOT1 \
  (SL_ANDROID_SPEAKER_5DOT1 | SL_SPEAKER_SIDE_LEFT | SL_SPEAKER_SIDE_RIGHT)

// Ported from:
// https://android.googlesource.com/platform/frameworks/wilhelm/+/refs/heads/master/src/android/channels.h
// https://android.googlesource.com/platform/frameworks/wilhelm/+/refs/heads/master/src/android/channels.c
SLuint32 ChannelCountToSLESChannelMask(int channel_count) {
  if (channel_count > 2) {
    LOG(WARNING) << "Guessing channel layout for " << channel_count
                 << " channels; speaker order may be incorrect.";
  }

  switch (channel_count) {
    case 1:
      return SL_SPEAKER_FRONT_LEFT;
    case 2:
      return SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT;
    case 3:
      return SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT |
             SL_SPEAKER_FRONT_CENTER;
    case 4:
      return SL_ANDROID_SPEAKER_QUAD;
    case 5:
      return SL_ANDROID_SPEAKER_QUAD | SL_SPEAKER_FRONT_CENTER;
    case 6:
      return SL_ANDROID_SPEAKER_5DOT1;
    case 7:
      return SL_ANDROID_SPEAKER_5DOT1 | SL_SPEAKER_BACK_CENTER;
    case 8:
      return SL_ANDROID_SPEAKER_7DOT1;
  }

  return 0;
}

}  // namespace media
