12110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie/*
22110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * Copyright (C) 2015 The Android Open Source Project
32110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie *
42110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * Licensed under the Apache License, Version 2.0 (the "License");
52110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * you may not use this file except in compliance with the License.
62110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * You may obtain a copy of the License at
72110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie *
82110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie *      http://www.apache.org/licenses/LICENSE-2.0
92110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie *
102110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * Unless required by applicable law or agreed to in writing, software
112110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * distributed under the License is distributed on an "AS IS" BASIS,
122110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * See the License for the specific language governing permissions and
142110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie * limitations under the License.
152110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie */
162110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
172110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#pragma once
182110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
192110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <StreamDescriptor.h>
202110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <utils/KeyedVector.h>
212110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <system/audio.h>
222110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <utils/Errors.h>
232110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie#include <utils/RefBase.h>
242110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
252110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffienamespace android {
262110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
272110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffieclass StreamDescriptor;
282110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
292110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffieclass Gains
302110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie{
312110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffiepublic :
32d1ab2bd4f1ea166a7e9e81cfd7f3e5dd47135d4dFrançois Gaffie    static float volIndexToDb(const VolumeCurvePoint *point, int indexMin, int indexMax,
33ffbc80f5908eaf67a033c6e93a343c39dd6894ebEric Laurent                              int indexInUi);
342110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
352110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    // default volume curve
362110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sDefaultVolumeCurve[Volume::VOLCNT];
372110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    // default volume curve for media strategy
382110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sDefaultMediaVolumeCurve[Volume::VOLCNT];
392110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    // volume curve for non-media audio on ext media outputs (HDMI, Line, etc)
402110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sExtMediaSystemVolumeCurve[Volume::VOLCNT];
412110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    // volume curve for media strategy on speakers
422110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sSpeakerMediaVolumeCurve[Volume::VOLCNT];
432110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sSpeakerMediaVolumeCurveDrc[Volume::VOLCNT];
442110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    // volume curve for sonification strategy on speakers
452110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sSpeakerSonificationVolumeCurve[Volume::VOLCNT];
462110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sSpeakerSonificationVolumeCurveDrc[Volume::VOLCNT];
472110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sDefaultSystemVolumeCurve[Volume::VOLCNT];
482110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sDefaultSystemVolumeCurveDrc[Volume::VOLCNT];
492110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sHeadsetSystemVolumeCurve[Volume::VOLCNT];
502110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sDefaultVoiceVolumeCurve[Volume::VOLCNT];
512110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sSpeakerVoiceVolumeCurve[Volume::VOLCNT];
522110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sLinearVolumeCurve[Volume::VOLCNT];
532110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sSilentVolumeCurve[Volume::VOLCNT];
542110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    static const VolumeCurvePoint sFullScaleVolumeCurve[Volume::VOLCNT];
552110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie    // default volume curves per stream and device category. See initializeVolumeCurves()
56d0609ad390ff8bb1cafebdf363bf1d15e63b949fFrançois Gaffie    static const VolumeCurvePoint *sVolumeProfiles[AUDIO_STREAM_CNT][DEVICE_CATEGORY_CNT];
572110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie};
582110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie
592110e04cdfbf9ad85ce154ce5f778ee5ccfc95ebFrançois Gaffie}; // namespace android
60