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

Commit c6577498 authored by Vlad Popa's avatar Vlad Popa Committed by Automerger Merge Worker
Browse files

Merge "CSD: legacy safe hearing works only for wired HS/HP" into udc-qpr-dev am: 83f9cf96

parents 22437fdf 83f9cf96
Loading
Loading
Loading
Loading
+17 −7
Original line number Diff line number Diff line
@@ -719,9 +719,11 @@ public class SoundDoseHelper {
    /*package*/ void initSafeMediaVolumeIndex() {
        for (int i = 0; i < mSafeMediaVolumeDevices.size(); ++i)  {
            int deviceType = mSafeMediaVolumeDevices.keyAt(i);
            if (mSafeMediaVolumeDevices.valueAt(i) == SAFE_MEDIA_VOLUME_UNINITIALIZED) {
                mSafeMediaVolumeDevices.put(deviceType, getSafeDeviceMediaVolumeIndex(deviceType));
            }
        }
    }

    /*package*/ int getSafeMediaVolumeIndex(int device) {
        if (mSafeMediaVolumeState == SAFE_MEDIA_VOLUME_ACTIVE
@@ -743,7 +745,7 @@ public class SoundDoseHelper {
    }

    /*package*/ boolean safeDevicesContains(int device) {
        return mSafeMediaVolumeDevices.indexOfKey(device) >= 0;
        return mSafeMediaVolumeDevices.get(device, SAFE_MEDIA_VOLUME_UNINITIALIZED) >= 0;
    }

    /*package*/ void invalidatPendingVolumeCommand() {
@@ -1014,6 +1016,7 @@ public class SoundDoseHelper {
            initCsd();

            synchronized (mSafeMediaVolumeStateLock) {
                initSafeMediaVolumeIndex();
                updateSafeMediaVolume_l(caller);
            }
        }
@@ -1065,13 +1068,20 @@ public class SoundDoseHelper {
    }

    private int getSafeDeviceMediaVolumeIndex(int deviceType) {
        // legacy implementation uses mSafeMediaVolumeIndex for wired HS/HP
        if (!mEnableCsd.get()) {
            // legacy hearing safety only for wired and USB HS/HP
            if (deviceType == AudioSystem.DEVICE_OUT_WIRED_HEADPHONE
                    || deviceType == AudioSystem.DEVICE_OUT_WIRED_HEADSET) {
                // legacy hearing safety uses mSafeMediaVolumeIndex for wired HS/HP
                // instead of computing it from the volume curves
        if ((deviceType == AudioSystem.DEVICE_OUT_WIRED_HEADPHONE
                || deviceType == AudioSystem.DEVICE_OUT_WIRED_HEADSET) && !mEnableCsd.get()) {
                return mSafeMediaVolumeIndex;
            }

            if (deviceType != AudioSystem.DEVICE_OUT_USB_HEADSET) {
                return SAFE_MEDIA_VOLUME_UNINITIALIZED;
            }
        }

        // determine UI volume index corresponding to the wanted safe gain in dBFS
        int min = MIN_STREAM_VOLUME[AudioSystem.STREAM_MUSIC];
        int max = MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC];