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

Commit 1443bf8f authored by Jean-Michel Trivi's avatar Jean-Michel Trivi
Browse files

AudioPolicy: fix volume curve query for min/max index

Function to look up dB attenuation from index in volume curve
  didn't check against invalid index values.

Bug: 77731632
Test: cts-tradefed run cts-dev -m CtsMediaTestCases -t android.media.cts.AudioManagerTest#testGetStreamVolumeDb
Change-Id: Ia89cdbe84dcd586f54b5d08de3774054197aada0
parent 247cc0a3
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -29,6 +29,13 @@ float VolumeCurve::volIndexToDb(int indexInUi, int volIndexMin, int volIndexMax)
    size_t nbCurvePoints = mCurvePoints.size();
    // the volume index in the UI is relative to the min and max volume indices for this stream
    int nbSteps = 1 + mCurvePoints[nbCurvePoints - 1].mIndex - mCurvePoints[0].mIndex;
    if (indexInUi < volIndexMin) {
        ALOGV("VOLUME remapping index from %d to min index %d", indexInUi, volIndexMin);
        indexInUi = volIndexMin;
    } else if (indexInUi > volIndexMax) {
        ALOGV("VOLUME remapping index from %d to max index %d", indexInUi, volIndexMax);
        indexInUi = volIndexMax;
    }
    int volIdx = (nbSteps * (indexInUi - volIndexMin)) / (volIndexMax - volIndexMin);

    // Where would this volume index been inserted in the curve point