Loading services/audiopolicy/AudioPolicyInterface.h +10 −1 Original line number Original line Diff line number Diff line Loading @@ -67,6 +67,14 @@ public: API_INPUT_TELEPHONY_RX, // used for capture from telephony RX path API_INPUT_TELEPHONY_RX, // used for capture from telephony RX path } input_type_t; } input_type_t; enum { API_INPUT_CONCURRENCY_NONE = 0, API_INPUT_CONCURRENCY_CALL = (1 << 0), // Concurrency with a call API_INPUT_CONCURRENCY_CAPTURE = (1 << 1), // Concurrency with another capture }; typedef uint32_t concurrency_type__mask_t; public: public: virtual ~AudioPolicyInterface() {} virtual ~AudioPolicyInterface() {} // // Loading Loading @@ -140,7 +148,8 @@ public: input_type_t *inputType) = 0; input_type_t *inputType) = 0; // indicates to the audio policy manager that the input starts being used. // indicates to the audio policy manager that the input starts being used. virtual status_t startInput(audio_io_handle_t input, virtual status_t startInput(audio_io_handle_t input, audio_session_t session) = 0; audio_session_t session, concurrency_type__mask_t *concurrency) = 0; // indicates to the audio policy manager that the input stops being used. // indicates to the audio policy manager that the input stops being used. virtual status_t stopInput(audio_io_handle_t input, virtual status_t stopInput(audio_io_handle_t input, audio_session_t session) = 0; audio_session_t session) = 0; Loading services/audiopolicy/common/include/policy.h +40 −2 Original line number Original line Diff line number Diff line Loading @@ -30,9 +30,9 @@ static const audio_format_t gDynamicFormat = AUDIO_FORMAT_DEFAULT; /** /** * A device mask for all audio input devices that are considered "virtual" when evaluating * A device mask for all audio input devices that are considered "virtual" when evaluating * active inputs in getActiveInput() * active inputs in getActiveInputs() */ */ #define APM_AUDIO_IN_DEVICE_VIRTUAL_ALL (AUDIO_DEVICE_IN_REMOTE_SUBMIX|AUDIO_DEVICE_IN_FM_TUNER) #define APM_AUDIO_IN_DEVICE_VIRTUAL_ALL (AUDIO_DEVICE_IN_REMOTE_SUBMIX) /** /** Loading Loading @@ -88,3 +88,41 @@ static inline bool device_distinguishes_on_address(audio_devices_t device) (((device & AUDIO_DEVICE_BIT_IN) == 0) && (((device & AUDIO_DEVICE_BIT_IN) == 0) && ((device & APM_AUDIO_DEVICE_OUT_MATCH_ADDRESS_ALL) != 0)); ((device & APM_AUDIO_DEVICE_OUT_MATCH_ADDRESS_ALL) != 0)); } } /** * Returns the priority of a given audio source for capture. The priority is used when more than one * capture session is active on a given input stream to determine which session drives routing and * effect configuration. * * @param[in] inputSource to consider. Valid sources are: * - AUDIO_SOURCE_VOICE_COMMUNICATION * - AUDIO_SOURCE_CAMCORDER * - AUDIO_SOURCE_MIC * - AUDIO_SOURCE_FM_TUNER * - AUDIO_SOURCE_VOICE_RECOGNITION * - AUDIO_SOURCE_HOTWORD * * @return the corresponding input source priority or 0 if priority is irrelevant for this source. * This happens when the specified source cannot share a given input stream (e.g remote submix) * The higher the value, the higher the priority. */ static inline int32_t source_priority(audio_source_t inputSource) { switch (inputSource) { case AUDIO_SOURCE_VOICE_COMMUNICATION: return 6; case AUDIO_SOURCE_CAMCORDER: return 5; case AUDIO_SOURCE_MIC: return 4; case AUDIO_SOURCE_FM_TUNER: return 3; case AUDIO_SOURCE_VOICE_RECOGNITION: return 2; case AUDIO_SOURCE_HOTWORD: return 1; default: break; } return 0; } services/audiopolicy/common/managerdefinitions/include/AudioInputDescriptor.h +3 −2 Original line number Original line Diff line number Diff line Loading @@ -63,7 +63,8 @@ public: const sp<AudioSession>& audioSession); const sp<AudioSession>& audioSession); status_t removeAudioSession(audio_session_t session); status_t removeAudioSession(audio_session_t session); sp<AudioSession> getAudioSession(audio_session_t session) const; sp<AudioSession> getAudioSession(audio_session_t session) const; AudioSessionCollection getActiveAudioSessions() const; AudioSessionCollection getAudioSessions(bool activeOnly) const; audio_source_t getHighestPrioritySource(bool activeOnly) const; private: private: audio_port_handle_t mId; audio_port_handle_t mId; Loading Loading @@ -93,7 +94,7 @@ public: * Only considers inputs from physical devices (e.g. main mic, headset mic) when * Only considers inputs from physical devices (e.g. main mic, headset mic) when * ignoreVirtualInputs is true. * ignoreVirtualInputs is true. */ */ audio_io_handle_t getActiveInput(bool ignoreVirtualInputs = true); Vector<sp <AudioInputDescriptor> > getActiveInputs(bool ignoreVirtualInputs = true); audio_devices_t getSupportedDevices(audio_io_handle_t handle) const; audio_devices_t getSupportedDevices(audio_io_handle_t handle) const; Loading services/audiopolicy/common/managerdefinitions/include/AudioPort.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -159,6 +159,10 @@ public: virtual void toAudioPortConfig(struct audio_port_config *dstConfig, virtual void toAudioPortConfig(struct audio_port_config *dstConfig, const struct audio_port_config *srcConfig = NULL) const = 0; const struct audio_port_config *srcConfig = NULL) const = 0; virtual sp<AudioPort> getAudioPort() const = 0; virtual sp<AudioPort> getAudioPort() const = 0; virtual bool hasSameHwModuleAs(const sp<AudioPortConfig>& other) const { return (other != 0) && (other->getAudioPort()->getModuleHandle() == getAudioPort()->getModuleHandle()); } uint32_t mSamplingRate; uint32_t mSamplingRate; audio_format_t mFormat; audio_format_t mFormat; audio_channel_mask_t mChannelMask; audio_channel_mask_t mChannelMask; Loading services/audiopolicy/common/managerdefinitions/include/AudioSession.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -87,6 +87,7 @@ public: AudioSessionCollection getActiveSessions() const; AudioSessionCollection getActiveSessions() const; bool hasActiveSession() const; bool hasActiveSession() const; bool isSourceActive(audio_source_t source) const; bool isSourceActive(audio_source_t source) const; audio_source_t getHighestPrioritySource(bool activeOnly) const; status_t dump(int fd, int spaces) const; status_t dump(int fd, int spaces) const; }; }; Loading Loading
services/audiopolicy/AudioPolicyInterface.h +10 −1 Original line number Original line Diff line number Diff line Loading @@ -67,6 +67,14 @@ public: API_INPUT_TELEPHONY_RX, // used for capture from telephony RX path API_INPUT_TELEPHONY_RX, // used for capture from telephony RX path } input_type_t; } input_type_t; enum { API_INPUT_CONCURRENCY_NONE = 0, API_INPUT_CONCURRENCY_CALL = (1 << 0), // Concurrency with a call API_INPUT_CONCURRENCY_CAPTURE = (1 << 1), // Concurrency with another capture }; typedef uint32_t concurrency_type__mask_t; public: public: virtual ~AudioPolicyInterface() {} virtual ~AudioPolicyInterface() {} // // Loading Loading @@ -140,7 +148,8 @@ public: input_type_t *inputType) = 0; input_type_t *inputType) = 0; // indicates to the audio policy manager that the input starts being used. // indicates to the audio policy manager that the input starts being used. virtual status_t startInput(audio_io_handle_t input, virtual status_t startInput(audio_io_handle_t input, audio_session_t session) = 0; audio_session_t session, concurrency_type__mask_t *concurrency) = 0; // indicates to the audio policy manager that the input stops being used. // indicates to the audio policy manager that the input stops being used. virtual status_t stopInput(audio_io_handle_t input, virtual status_t stopInput(audio_io_handle_t input, audio_session_t session) = 0; audio_session_t session) = 0; Loading
services/audiopolicy/common/include/policy.h +40 −2 Original line number Original line Diff line number Diff line Loading @@ -30,9 +30,9 @@ static const audio_format_t gDynamicFormat = AUDIO_FORMAT_DEFAULT; /** /** * A device mask for all audio input devices that are considered "virtual" when evaluating * A device mask for all audio input devices that are considered "virtual" when evaluating * active inputs in getActiveInput() * active inputs in getActiveInputs() */ */ #define APM_AUDIO_IN_DEVICE_VIRTUAL_ALL (AUDIO_DEVICE_IN_REMOTE_SUBMIX|AUDIO_DEVICE_IN_FM_TUNER) #define APM_AUDIO_IN_DEVICE_VIRTUAL_ALL (AUDIO_DEVICE_IN_REMOTE_SUBMIX) /** /** Loading Loading @@ -88,3 +88,41 @@ static inline bool device_distinguishes_on_address(audio_devices_t device) (((device & AUDIO_DEVICE_BIT_IN) == 0) && (((device & AUDIO_DEVICE_BIT_IN) == 0) && ((device & APM_AUDIO_DEVICE_OUT_MATCH_ADDRESS_ALL) != 0)); ((device & APM_AUDIO_DEVICE_OUT_MATCH_ADDRESS_ALL) != 0)); } } /** * Returns the priority of a given audio source for capture. The priority is used when more than one * capture session is active on a given input stream to determine which session drives routing and * effect configuration. * * @param[in] inputSource to consider. Valid sources are: * - AUDIO_SOURCE_VOICE_COMMUNICATION * - AUDIO_SOURCE_CAMCORDER * - AUDIO_SOURCE_MIC * - AUDIO_SOURCE_FM_TUNER * - AUDIO_SOURCE_VOICE_RECOGNITION * - AUDIO_SOURCE_HOTWORD * * @return the corresponding input source priority or 0 if priority is irrelevant for this source. * This happens when the specified source cannot share a given input stream (e.g remote submix) * The higher the value, the higher the priority. */ static inline int32_t source_priority(audio_source_t inputSource) { switch (inputSource) { case AUDIO_SOURCE_VOICE_COMMUNICATION: return 6; case AUDIO_SOURCE_CAMCORDER: return 5; case AUDIO_SOURCE_MIC: return 4; case AUDIO_SOURCE_FM_TUNER: return 3; case AUDIO_SOURCE_VOICE_RECOGNITION: return 2; case AUDIO_SOURCE_HOTWORD: return 1; default: break; } return 0; }
services/audiopolicy/common/managerdefinitions/include/AudioInputDescriptor.h +3 −2 Original line number Original line Diff line number Diff line Loading @@ -63,7 +63,8 @@ public: const sp<AudioSession>& audioSession); const sp<AudioSession>& audioSession); status_t removeAudioSession(audio_session_t session); status_t removeAudioSession(audio_session_t session); sp<AudioSession> getAudioSession(audio_session_t session) const; sp<AudioSession> getAudioSession(audio_session_t session) const; AudioSessionCollection getActiveAudioSessions() const; AudioSessionCollection getAudioSessions(bool activeOnly) const; audio_source_t getHighestPrioritySource(bool activeOnly) const; private: private: audio_port_handle_t mId; audio_port_handle_t mId; Loading Loading @@ -93,7 +94,7 @@ public: * Only considers inputs from physical devices (e.g. main mic, headset mic) when * Only considers inputs from physical devices (e.g. main mic, headset mic) when * ignoreVirtualInputs is true. * ignoreVirtualInputs is true. */ */ audio_io_handle_t getActiveInput(bool ignoreVirtualInputs = true); Vector<sp <AudioInputDescriptor> > getActiveInputs(bool ignoreVirtualInputs = true); audio_devices_t getSupportedDevices(audio_io_handle_t handle) const; audio_devices_t getSupportedDevices(audio_io_handle_t handle) const; Loading
services/audiopolicy/common/managerdefinitions/include/AudioPort.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -159,6 +159,10 @@ public: virtual void toAudioPortConfig(struct audio_port_config *dstConfig, virtual void toAudioPortConfig(struct audio_port_config *dstConfig, const struct audio_port_config *srcConfig = NULL) const = 0; const struct audio_port_config *srcConfig = NULL) const = 0; virtual sp<AudioPort> getAudioPort() const = 0; virtual sp<AudioPort> getAudioPort() const = 0; virtual bool hasSameHwModuleAs(const sp<AudioPortConfig>& other) const { return (other != 0) && (other->getAudioPort()->getModuleHandle() == getAudioPort()->getModuleHandle()); } uint32_t mSamplingRate; uint32_t mSamplingRate; audio_format_t mFormat; audio_format_t mFormat; audio_channel_mask_t mChannelMask; audio_channel_mask_t mChannelMask; Loading
services/audiopolicy/common/managerdefinitions/include/AudioSession.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -87,6 +87,7 @@ public: AudioSessionCollection getActiveSessions() const; AudioSessionCollection getActiveSessions() const; bool hasActiveSession() const; bool hasActiveSession() const; bool isSourceActive(audio_source_t source) const; bool isSourceActive(audio_source_t source) const; audio_source_t getHighestPrioritySource(bool activeOnly) const; status_t dump(int fd, int spaces) const; status_t dump(int fd, int spaces) const; }; }; Loading