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

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

Merge "Dynamic policies: support for device selection" into nyc-dev

parents 77c86487 7638ca29
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ namespace android {

#define MIX_ROUTE_FLAG_RENDER 0x1
#define MIX_ROUTE_FLAG_LOOP_BACK (0x1 << 1)
#define MIX_ROUTE_FLAG_ALL (MIX_ROUTE_FLAG_RENDER | MIX_ROUTE_FLAG_LOOP_BACK)

#define MAX_MIXES_PER_POLICY 10
#define MAX_CRITERIA_PER_MIX 20
@@ -81,7 +82,7 @@ public:
    AudioMix(Vector<AudioMixMatchCriterion> criteria, uint32_t mixType, audio_config_t format,
             uint32_t routeFlags, String8 registrationId, uint32_t flags) :
        mCriteria(criteria), mMixType(mixType), mFormat(format),
        mRouteFlags(routeFlags), mRegistrationId(registrationId), mCbFlags(flags){}
        mRouteFlags(routeFlags), mDeviceAddress(registrationId), mCbFlags(flags){}

    status_t readFromParcel(Parcel *parcel);
    status_t writeToParcel(Parcel *parcel) const;
@@ -90,7 +91,8 @@ public:
    uint32_t        mMixType;
    audio_config_t  mFormat;
    uint32_t        mRouteFlags;
    String8         mRegistrationId;
    audio_devices_t mDeviceType;
    String8         mDeviceAddress;
    uint32_t        mCbFlags; // flags indicating which callbacks to use, see kCbFlag*
};

+4 −2
Original line number Diff line number Diff line
@@ -67,7 +67,8 @@ status_t AudioMix::readFromParcel(Parcel *parcel)
    mFormat.channel_mask = (audio_channel_mask_t)parcel->readInt32();
    mFormat.format = (audio_format_t)parcel->readInt32();
    mRouteFlags = parcel->readInt32();
    mRegistrationId = parcel->readString8();
    mDeviceType = (audio_devices_t) parcel->readInt32();
    mDeviceAddress = parcel->readString8();
    mCbFlags = (uint32_t)parcel->readInt32();
    size_t size = (size_t)parcel->readInt32();
    if (size > MAX_CRITERIA_PER_MIX) {
@@ -89,7 +90,8 @@ status_t AudioMix::writeToParcel(Parcel *parcel) const
    parcel->writeInt32(mFormat.channel_mask);
    parcel->writeInt32(mFormat.format);
    parcel->writeInt32(mRouteFlags);
    parcel->writeString8(mRegistrationId);
    parcel->writeInt32(mDeviceType);
    parcel->writeString8(mDeviceAddress);
    parcel->writeInt32(mCbFlags);
    size_t size = mCriteria.size();
    if (size > MAX_CRITERIA_PER_MIX) {
+2 −2
Original line number Diff line number Diff line
@@ -42,9 +42,9 @@ static const audio_format_t gDynamicFormat = AUDIO_FORMAT_DEFAULT;
 * A device mask for all audio input and output devices where matching inputs/outputs on device
 * type alone is not enough: the address must match too
 */
#define APM_AUDIO_DEVICE_OUT_MATCH_ADDRESS_ALL (AUDIO_DEVICE_OUT_REMOTE_SUBMIX)
#define APM_AUDIO_DEVICE_OUT_MATCH_ADDRESS_ALL (AUDIO_DEVICE_OUT_REMOTE_SUBMIX|AUDIO_DEVICE_OUT_BUS)

#define APM_AUDIO_DEVICE_IN_MATCH_ADDRESS_ALL (AUDIO_DEVICE_IN_REMOTE_SUBMIX)
#define APM_AUDIO_DEVICE_IN_MATCH_ADDRESS_ALL (AUDIO_DEVICE_IN_REMOTE_SUBMIX|AUDIO_DEVICE_IN_BUS)

/**
 * Check if the state given correspond to an in call state.
+1 −1
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ class AudioPolicyMixCollection : public DefaultKeyedVector<String8, sp<AudioPoli
public:
    status_t getAudioPolicyMix(String8 address, sp<AudioPolicyMix> &policyMix) const;

    status_t registerMix(String8 address, AudioMix mix);
    status_t registerMix(String8 address, AudioMix mix, sp<SwAudioOutputDescriptor> desc);

    status_t unregisterMix(String8 address);

+2 −2
Original line number Diff line number Diff line
@@ -315,14 +315,14 @@ void SwAudioOutputDescriptor::changeRefCount(audio_stream_type_t stream,
    if ((oldGlobalRefCount == 0) && (mGlobalRefCount > 0)) {
        if ((mPolicyMix != NULL) && ((mPolicyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0))
        {
            mClientInterface->onDynamicPolicyMixStateUpdate(mPolicyMix->mRegistrationId,
            mClientInterface->onDynamicPolicyMixStateUpdate(mPolicyMix->mDeviceAddress,
                    MIX_STATE_MIXING);
        }

    } else if ((oldGlobalRefCount > 0) && (mGlobalRefCount == 0)) {
        if ((mPolicyMix != NULL) && ((mPolicyMix->mCbFlags & AudioMix::kCbFlagNotifyActivity) != 0))
        {
            mClientInterface->onDynamicPolicyMixStateUpdate(mPolicyMix->mRegistrationId,
            mClientInterface->onDynamicPolicyMixStateUpdate(mPolicyMix->mDeviceAddress,
                    MIX_STATE_IDLE);
        }
    }
Loading