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

Commit f70077e4 authored by Jean-Michel Trivi's avatar Jean-Michel Trivi Committed by Android (Google) Code Review
Browse files

Merge "Send client / device format in recording callback" into nyc-dev

parents 1bf4df7d 7281aa98
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -31,7 +31,9 @@ namespace android {

typedef void (*audio_error_callback)(status_t err);
typedef void (*dynamic_policy_callback)(int event, String8 regId, int val);
typedef void (*record_config_callback)(int event, int session, int source);
typedef void (*record_config_callback)(int event, int session, int source,
                const audio_config_base_t *clientConfig,
                const audio_config_base_t *deviceConfig);

class IAudioFlinger;
class IAudioPolicyService;
@@ -424,7 +426,8 @@ private:
        virtual void onAudioPatchListUpdate();
        virtual void onDynamicPolicyMixStateUpdate(String8 regId, int32_t state);
        virtual void onRecordingConfigurationUpdate(int event, audio_session_t session,
                        audio_source_t source);
                        audio_source_t source, const audio_config_base_t *clientConfig,
                        const audio_config_base_t *deviceConfig);

    private:
        Mutex                               mLock;
+3 −1
Original line number Diff line number Diff line
@@ -39,7 +39,9 @@ public:
    virtual void onDynamicPolicyMixStateUpdate(String8 regId, int32_t state) = 0;
    // Notifies a change of audio recording configuration
    virtual void onRecordingConfigurationUpdate(int event, audio_session_t session,
            audio_source_t source) = 0;
            audio_source_t source,
            const audio_config_base_t *clientConfig,
            const audio_config_base_t *deviceConfig) = 0;
};


+3 −2
Original line number Diff line number Diff line
@@ -1245,7 +1245,8 @@ void AudioSystem::AudioPolicyServiceClient::onDynamicPolicyMixStateUpdate(
}

void AudioSystem::AudioPolicyServiceClient::onRecordingConfigurationUpdate(
        int event, audio_session_t session, audio_source_t source) {
        int event, audio_session_t session, audio_source_t source,
        const audio_config_base_t *clientConfig, const audio_config_base_t *deviceConfig) {
    record_config_callback cb = NULL;
    {
        Mutex::Autolock _l(AudioSystem::gLock);
@@ -1253,7 +1254,7 @@ void AudioSystem::AudioPolicyServiceClient::onRecordingConfigurationUpdate(
    }

    if (cb != NULL) {
        cb(event, session, source);
        cb(event, session, source, clientConfig, deviceConfig);
    }
}

+24 −2
Original line number Diff line number Diff line
@@ -34,6 +34,21 @@ enum {
    RECORDING_CONFIGURATION_UPDATE
};

// ----------------------------------------------------------------------
inline void readAudioConfigBaseFromParcel(const Parcel& data, audio_config_base_t *config) {
    config->sample_rate = data.readUint32();
    config->channel_mask = (audio_channel_mask_t) data.readInt32();
    config->format = (audio_format_t) data.readInt32();
}

inline void writeAudioConfigBaseToParcel(Parcel& data, const audio_config_base_t *config)
{
    data.writeUint32(config->sample_rate);
    data.writeInt32((int32_t) config->channel_mask);
    data.writeInt32((int32_t) config->format);
}

// ----------------------------------------------------------------------
class BpAudioPolicyServiceClient : public BpInterface<IAudioPolicyServiceClient>
{
public:
@@ -66,12 +81,15 @@ public:
    }

    void onRecordingConfigurationUpdate(int event, audio_session_t session,
            audio_source_t source) {
            audio_source_t source, const audio_config_base_t *clientConfig,
            const audio_config_base_t *deviceConfig) {
        Parcel data, reply;
        data.writeInterfaceToken(IAudioPolicyServiceClient::getInterfaceDescriptor());
        data.writeInt32(event);
        data.writeInt32(session);
        data.writeInt32(source);
        writeAudioConfigBaseToParcel(data, clientConfig);
        writeAudioConfigBaseToParcel(data, deviceConfig);
        remote()->transact(RECORDING_CONFIGURATION_UPDATE, data, &reply, IBinder::FLAG_ONEWAY);
    }
};
@@ -106,7 +124,11 @@ status_t BnAudioPolicyServiceClient::onTransact(
            int event = (int) data.readInt32();
            audio_session_t session = (audio_session_t) data.readInt32();
            audio_source_t source = (audio_source_t) data.readInt32();
            onRecordingConfigurationUpdate(event, session, source);
            audio_config_base_t clientConfig;
            audio_config_base_t deviceConfig;
            readAudioConfigBaseFromParcel(data, &clientConfig);
            readAudioConfigBaseFromParcel(data, &deviceConfig);
            onRecordingConfigurationUpdate(event, session, source, &clientConfig, &deviceConfig);
            return NO_ERROR;
        } break;
    default:
+3 −1
Original line number Diff line number Diff line
@@ -337,7 +337,9 @@ public:
    virtual void onDynamicPolicyMixStateUpdate(String8 regId, int32_t state) = 0;

    virtual void onRecordingConfigurationUpdate(int event, audio_session_t session,
                    audio_source_t source) = 0;
                    audio_source_t source,
                    const struct audio_config_base *clientConfig,
                    const struct audio_config_base *deviceConfig) = 0;
};

extern "C" AudioPolicyInterface* createAudioPolicyManager(AudioPolicyClientInterface *clientInterface);
Loading