Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb66dd9f authored by Eric Laurent's avatar Eric Laurent
Browse files

Revert "Revert "audio policy for concurrent capture.""

This reverts commit 84332aaa.

Bug:26841909
parent 37dfacdf
Loading
Loading
Loading
Loading
+10 −1
Original line number Original line Diff line number Diff line
@@ -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() {}
    //
    //
@@ -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;
+40 −2
Original line number Original line Diff line number Diff line
@@ -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)




/**
/**
@@ -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;
}
+3 −2
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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;


+4 −0
Original line number Original line Diff line number Diff line
@@ -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;
+1 −0
Original line number Original line Diff line number Diff line
@@ -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