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