156ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi/* 256ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * Copyright (C) 2015 The Android Open Source Project 356ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * 456ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * Licensed under the Apache License, Version 2.0 (the "License"); 556ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * you may not use this file except in compliance with the License. 656ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * You may obtain a copy of the License at 756ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * 856ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * http://www.apache.org/licenses/LICENSE-2.0 956ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * 1056ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * Unless required by applicable law or agreed to in writing, software 1156ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * distributed under the License is distributed on an "AS IS" BASIS, 1256ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1356ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * See the License for the specific language governing permissions and 1456ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi * limitations under the License. 1556ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi */ 1656ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi 17ad3183e2d4cecd02f6261270a7ea1c68be0efa0fFrançois Gaffie#pragma once 18ad3183e2d4cecd02f6261270a7ea1c68be0efa0fFrançois Gaffie 19ad3183e2d4cecd02f6261270a7ea1c68be0efa0fFrançois Gaffie#include <utils/Errors.h> 20ad3183e2d4cecd02f6261270a7ea1c68be0efa0fFrançois Gaffie#include <utils/RefBase.h> 21ad3183e2d4cecd02f6261270a7ea1c68be0efa0fFrançois Gaffie#include <system/audio.h> 22ad3183e2d4cecd02f6261270a7ea1c68be0efa0fFrançois Gaffie 2356ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivinamespace android { 2456ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi 2556ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Triviclass AudioGain: public RefBase 2656ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi{ 2756ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivipublic: 2856ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi AudioGain(int index, bool useInChannelMask); 2956ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi virtual ~AudioGain() {} 3056ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi 31a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie void setMode(audio_gain_mode_t mode) { mGain.mode = mode; } 32a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie const audio_gain_mode_t &getMode() const { return mGain.mode; } 33a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie 34a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie void setChannelMask(audio_channel_mask_t mask) { mGain.channel_mask = mask; } 35a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie const audio_channel_mask_t &getChannelMask() const { return mGain.channel_mask; } 36a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie 37a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie void setMinValueInMb(int minValue) { mGain.min_value = minValue; } 38a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie int getMinValueInMb() const { return mGain.min_value; } 39a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie 40a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie void setMaxValueInMb(int maxValue) { mGain.max_value = maxValue; } 41a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie int getMaxValueInMb() const { return mGain.max_value; } 42a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie 43a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie void setDefaultValueInMb(int defaultValue) { mGain.default_value = defaultValue; } 44a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie int getDefaultValueInMb() const { return mGain.default_value; } 45a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie 46a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie void setStepValueInMb(uint32_t stepValue) { mGain.step_value = stepValue; } 47a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie int getStepValueInMb() const { return mGain.step_value; } 48a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie 49a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie void setMinRampInMs(uint32_t minRamp) { mGain.min_ramp_ms = minRamp; } 50a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie int getMinRampInMs() const { return mGain.min_ramp_ms; } 51a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie 52a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie void setMaxRampInMs(uint32_t maxRamp) { mGain.max_ramp_ms = maxRamp; } 53a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie int getMaxRampInMs() const { return mGain.max_ramp_ms; } 54a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie 55a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie // TODO: remove dump from here (split serialization) 5656ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi void dump(int fd, int spaces, int index) const; 5756ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi 5856ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi void getDefaultConfig(struct audio_gain_config *config); 5956ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi status_t checkConfig(const struct audio_gain_config *config); 60a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie 61a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie const struct audio_gain &getGain() const { return mGain; } 62a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffie 63a8ecc2c72ca26389bd6b0162181d60aaeaca8149François Gaffieprivate: 6456ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi int mIndex; 6556ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi struct audio_gain mGain; 6656ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi bool mUseInChannelMask; 6756ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi}; 6856ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi 6956ec4ffcbae8aeac6c5245fc7b825d02e2e6cefdJean-Michel Trivi}; // namespace android 70