static int AEChannelMapToAUDIOTRACKChannelMask(CAEChannelInfo info) { info.ResolveChannels(CAEChannelInfo(KnownChannels)); // Detect layouts with 6 channels including one LFE channel // We currently support the following layouts: // 5.1 FL+FR+FC+LFE+BL+BR // 5.1(side) FL+FR+FC+LFE+SL+SR // According to CEA-861-D only RR and RL are defined // Therefore we let Android decide about the 5.1 mapping // For 8 channel layouts including one LFE channel // we leave the same decision to Android if (info.Count() == 6 && info.HasChannel(AE_CH_LFE)) return CJNIAudioFormat::CHANNEL_OUT_5POINT1; if (info.Count() == 8 && info.HasChannel(AE_CH_LFE)) return CJNIAudioFormat::CHANNEL_OUT_7POINT1_SURROUND; int atMask = 0; for (unsigned int i = 0; i < info.Count(); i++) atMask |= AEChannelToAUDIOTRACKChannel(info[i]); return atMask; }
static int AEChannelMapToAUDIOTRACKChannelMask(CAEChannelInfo info) { #ifdef LIMIT_TO_STEREO_AND_5POINT1 if (info.Count() > 2 && info[0] != AE_CH_RAW) return CJNIAudioFormat::CHANNEL_OUT_5POINT1; else return CJNIAudioFormat::CHANNEL_OUT_STEREO; #endif info.ResolveChannels(KnownChannels); int atMask = 0; for (unsigned int i = 0; i < info.Count(); i++) atMask |= AEChannelToAUDIOTRACKChannel(info[i]); return atMask; }
static int AEChannelMapToAUDIOTRACKChannelMask(CAEChannelInfo info) { #ifdef LIMIT_TO_STEREO_AND_5POINT1_AND_7POINT1 if (info.Count() > 6 && Has71Support()) return CJNIAudioFormat::CHANNEL_OUT_5POINT1 | CJNIAudioFormat::CHANNEL_OUT_SIDE_LEFT | CJNIAudioFormat::CHANNEL_OUT_SIDE_RIGHT; else if (info.Count() > 2) return CJNIAudioFormat::CHANNEL_OUT_5POINT1; else return CJNIAudioFormat::CHANNEL_OUT_STEREO; #endif info.ResolveChannels(KnownChannels); int atMask = 0; for (unsigned int i = 0; i < info.Count(); i++) atMask |= AEChannelToAUDIOTRACKChannel(info[i]); return atMask; }