1*38e8c45fSAndroid Build Coastguard Worker /* 2*38e8c45fSAndroid Build Coastguard Worker * Copyright (C) 2016 The Android Open Source Project 3*38e8c45fSAndroid Build Coastguard Worker * 4*38e8c45fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*38e8c45fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*38e8c45fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*38e8c45fSAndroid Build Coastguard Worker * 8*38e8c45fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*38e8c45fSAndroid Build Coastguard Worker * 10*38e8c45fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*38e8c45fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*38e8c45fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*38e8c45fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*38e8c45fSAndroid Build Coastguard Worker * limitations under the License. 15*38e8c45fSAndroid Build Coastguard Worker */ 16*38e8c45fSAndroid Build Coastguard Worker 17*38e8c45fSAndroid Build Coastguard Worker #ifndef ANDROID_AUDIOMANAGER_H 18*38e8c45fSAndroid Build Coastguard Worker #define ANDROID_AUDIOMANAGER_H 19*38e8c45fSAndroid Build Coastguard Worker 20*38e8c45fSAndroid Build Coastguard Worker namespace android { 21*38e8c45fSAndroid Build Coastguard Worker 22*38e8c45fSAndroid Build Coastguard Worker // must be kept in sync with definitions in AudioPlaybackConfiguration.java 23*38e8c45fSAndroid Build Coastguard Worker #define PLAYER_PIID_INVALID -1 24*38e8c45fSAndroid Build Coastguard Worker 25*38e8c45fSAndroid Build Coastguard Worker // TODO (b/309532236) remove manual IAudioManager impl in favor of AIDL. 26*38e8c45fSAndroid Build Coastguard Worker typedef enum { 27*38e8c45fSAndroid Build Coastguard Worker PLAYER_TYPE_SLES_AUDIOPLAYER_BUFFERQUEUE = 11, 28*38e8c45fSAndroid Build Coastguard Worker PLAYER_TYPE_SLES_AUDIOPLAYER_URI_FD = 12, 29*38e8c45fSAndroid Build Coastguard Worker PLAYER_TYPE_AAUDIO = 13, 30*38e8c45fSAndroid Build Coastguard Worker PLAYER_TYPE_HW_SOURCE = 14, 31*38e8c45fSAndroid Build Coastguard Worker PLAYER_TYPE_EXTERNAL_PROXY = 15, 32*38e8c45fSAndroid Build Coastguard Worker } player_type_t; 33*38e8c45fSAndroid Build Coastguard Worker 34*38e8c45fSAndroid Build Coastguard Worker typedef enum { 35*38e8c45fSAndroid Build Coastguard Worker PLAYER_STATE_UNKNOWN = -1, 36*38e8c45fSAndroid Build Coastguard Worker PLAYER_STATE_RELEASED = 0, 37*38e8c45fSAndroid Build Coastguard Worker PLAYER_STATE_IDLE = 1, 38*38e8c45fSAndroid Build Coastguard Worker PLAYER_STATE_STARTED = 2, 39*38e8c45fSAndroid Build Coastguard Worker PLAYER_STATE_PAUSED = 3, 40*38e8c45fSAndroid Build Coastguard Worker PLAYER_STATE_STOPPED = 4, 41*38e8c45fSAndroid Build Coastguard Worker PLAYER_UPDATE_DEVICE_ID = 5, 42*38e8c45fSAndroid Build Coastguard Worker PLAYER_UPDATE_PORT_ID = 6, 43*38e8c45fSAndroid Build Coastguard Worker PLAYER_UPDATE_MUTED = 7, 44*38e8c45fSAndroid Build Coastguard Worker PLAYER_UPDATE_FORMAT = 8, 45*38e8c45fSAndroid Build Coastguard Worker } player_state_t; 46*38e8c45fSAndroid Build Coastguard Worker 47*38e8c45fSAndroid Build Coastguard Worker static constexpr char 48*38e8c45fSAndroid Build Coastguard Worker kExtraPlayerEventSpatializedKey[] = "android.media.extra.PLAYER_EVENT_SPATIALIZED"; 49*38e8c45fSAndroid Build Coastguard Worker static constexpr char 50*38e8c45fSAndroid Build Coastguard Worker kExtraPlayerEventSampleRateKey[] = "android.media.extra.PLAYER_EVENT_SAMPLE_RATE"; 51*38e8c45fSAndroid Build Coastguard Worker static constexpr char 52*38e8c45fSAndroid Build Coastguard Worker kExtraPlayerEventChannelMaskKey[] = "android.media.extra.PLAYER_EVENT_CHANNEL_MASK"; 53*38e8c45fSAndroid Build Coastguard Worker 54*38e8c45fSAndroid Build Coastguard Worker static constexpr char 55*38e8c45fSAndroid Build Coastguard Worker kExtraPlayerEventMuteKey[] = "android.media.extra.PLAYER_EVENT_MUTE"; 56*38e8c45fSAndroid Build Coastguard Worker enum { 57*38e8c45fSAndroid Build Coastguard Worker PLAYER_MUTE_MASTER = (1 << 0), 58*38e8c45fSAndroid Build Coastguard Worker PLAYER_MUTE_STREAM_VOLUME = (1 << 1), 59*38e8c45fSAndroid Build Coastguard Worker PLAYER_MUTE_STREAM_MUTED = (1 << 2), 60*38e8c45fSAndroid Build Coastguard Worker PLAYER_MUTE_PLAYBACK_RESTRICTED = (1 << 3), 61*38e8c45fSAndroid Build Coastguard Worker PLAYER_MUTE_CLIENT_VOLUME = (1 << 4), 62*38e8c45fSAndroid Build Coastguard Worker PLAYER_MUTE_VOLUME_SHAPER = (1 << 5), 63*38e8c45fSAndroid Build Coastguard Worker PLAYER_MUTE_PORT_VOLUME = (1 << 6), 64*38e8c45fSAndroid Build Coastguard Worker PLAYER_MUTE_OP_AUDIO_CONTROL = (1 << 7), 65*38e8c45fSAndroid Build Coastguard Worker }; 66*38e8c45fSAndroid Build Coastguard Worker 67*38e8c45fSAndroid Build Coastguard Worker struct mute_state_t { 68*38e8c45fSAndroid Build Coastguard Worker /** Flag used when the master volume is causing the mute state. */ 69*38e8c45fSAndroid Build Coastguard Worker bool muteFromMasterMute = false; 70*38e8c45fSAndroid Build Coastguard Worker /** Flag used when the stream volume is causing the mute state. */ 71*38e8c45fSAndroid Build Coastguard Worker bool muteFromStreamVolume = false; 72*38e8c45fSAndroid Build Coastguard Worker /** Flag used when the stream muted is causing the mute state. */ 73*38e8c45fSAndroid Build Coastguard Worker bool muteFromStreamMuted = false; 74*38e8c45fSAndroid Build Coastguard Worker /** Flag used when playback is restricted by AppOps manager with OP_PLAY_AUDIO. */ 75*38e8c45fSAndroid Build Coastguard Worker bool muteFromPlaybackRestricted = false; 76*38e8c45fSAndroid Build Coastguard Worker /** Flag used when audio track was muted by client volume. */ 77*38e8c45fSAndroid Build Coastguard Worker bool muteFromClientVolume = false; 78*38e8c45fSAndroid Build Coastguard Worker /** Flag used when volume is muted by volume shaper. */ 79*38e8c45fSAndroid Build Coastguard Worker bool muteFromVolumeShaper = false; 80*38e8c45fSAndroid Build Coastguard Worker /** Flag used when volume is muted by port volume. */ 81*38e8c45fSAndroid Build Coastguard Worker bool muteFromPortVolume = false; 82*38e8c45fSAndroid Build Coastguard Worker /** Flag used when volume is muted by audio control op. */ 83*38e8c45fSAndroid Build Coastguard Worker bool muteFromOpAudioControl = false; 84*38e8c45fSAndroid Build Coastguard Worker 85*38e8c45fSAndroid Build Coastguard Worker explicit operator int() const 86*38e8c45fSAndroid Build Coastguard Worker { 87*38e8c45fSAndroid Build Coastguard Worker int result = muteFromMasterMute * PLAYER_MUTE_MASTER; 88*38e8c45fSAndroid Build Coastguard Worker result |= muteFromStreamVolume * PLAYER_MUTE_STREAM_VOLUME; 89*38e8c45fSAndroid Build Coastguard Worker result |= muteFromStreamMuted * PLAYER_MUTE_STREAM_MUTED; 90*38e8c45fSAndroid Build Coastguard Worker result |= muteFromPlaybackRestricted * PLAYER_MUTE_PLAYBACK_RESTRICTED; 91*38e8c45fSAndroid Build Coastguard Worker result |= muteFromClientVolume * PLAYER_MUTE_CLIENT_VOLUME; 92*38e8c45fSAndroid Build Coastguard Worker result |= muteFromVolumeShaper * PLAYER_MUTE_VOLUME_SHAPER; 93*38e8c45fSAndroid Build Coastguard Worker result |= muteFromPortVolume * PLAYER_MUTE_PORT_VOLUME; 94*38e8c45fSAndroid Build Coastguard Worker result |= muteFromOpAudioControl * PLAYER_MUTE_OP_AUDIO_CONTROL; 95*38e8c45fSAndroid Build Coastguard Worker return result; 96*38e8c45fSAndroid Build Coastguard Worker } 97*38e8c45fSAndroid Build Coastguard Worker 98*38e8c45fSAndroid Build Coastguard Worker bool operator==(const mute_state_t& other) const 99*38e8c45fSAndroid Build Coastguard Worker { 100*38e8c45fSAndroid Build Coastguard Worker return static_cast<int>(*this) == static_cast<int>(other); 101*38e8c45fSAndroid Build Coastguard Worker } 102*38e8c45fSAndroid Build Coastguard Worker }; 103*38e8c45fSAndroid Build Coastguard Worker 104*38e8c45fSAndroid Build Coastguard Worker // must be kept in sync with definitions in AudioManager.java 105*38e8c45fSAndroid Build Coastguard Worker #define RECORD_RIID_INVALID -1 106*38e8c45fSAndroid Build Coastguard Worker 107*38e8c45fSAndroid Build Coastguard Worker typedef enum { 108*38e8c45fSAndroid Build Coastguard Worker RECORDER_STATE_UNKNOWN = -1, 109*38e8c45fSAndroid Build Coastguard Worker RECORDER_STATE_STARTED = 0, 110*38e8c45fSAndroid Build Coastguard Worker RECORDER_STATE_STOPPED = 1, 111*38e8c45fSAndroid Build Coastguard Worker } recorder_state_t; 112*38e8c45fSAndroid Build Coastguard Worker 113*38e8c45fSAndroid Build Coastguard Worker }; // namespace android 114*38e8c45fSAndroid Build Coastguard Worker 115*38e8c45fSAndroid Build Coastguard Worker #endif // ANDROID_AUDIOMANAGER_H 116