Home | History | Annotate | Download | only in 4.0
      1 /*
      2  * Copyright (C) 2018 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.hardware.audio.effect@4.0;
     18 
     19 import android.hardware.audio.common@4.0;
     20 import IEffect;
     21 
     22 interface IEnvironmentalReverbEffect extends IEffect {
     23     /**
     24      * Sets whether the effect should be bypassed.
     25      */
     26     setBypass(bool bypass) generates (Result retval);
     27 
     28     /**
     29      * Gets whether the effect should be bypassed.
     30      */
     31     getBypass() generates (Result retval, bool bypass);
     32 
     33     enum ParamRange : int16_t {
     34         ROOM_LEVEL_MIN = -6000,
     35         ROOM_LEVEL_MAX = 0,
     36         ROOM_HF_LEVEL_MIN = -4000,
     37         ROOM_HF_LEVEL_MAX = 0,
     38         DECAY_TIME_MIN = 100,
     39         DECAY_TIME_MAX = 20000,
     40         DECAY_HF_RATIO_MIN = 100,
     41         DECAY_HF_RATIO_MAX = 1000,
     42         REFLECTIONS_LEVEL_MIN = -6000,
     43         REFLECTIONS_LEVEL_MAX = 0,
     44         REFLECTIONS_DELAY_MIN = 0,
     45         REFLECTIONS_DELAY_MAX = 65,
     46         REVERB_LEVEL_MIN = -6000,
     47         REVERB_LEVEL_MAX = 0,
     48         REVERB_DELAY_MIN = 0,
     49         REVERB_DELAY_MAX = 65,
     50         DIFFUSION_MIN = 0,
     51         DIFFUSION_MAX = 1000,
     52         DENSITY_MIN = 0,
     53         DENSITY_MAX = 1000
     54     };
     55 
     56     /**
     57      * Sets the room level.
     58      */
     59     setRoomLevel(int16_t roomLevel) generates (Result retval);
     60 
     61     /**
     62      * Gets the room level.
     63      */
     64     getRoomLevel() generates (Result retval, int16_t roomLevel);
     65 
     66     /**
     67      * Sets the room high frequencies level.
     68      */
     69     setRoomHfLevel(int16_t roomHfLevel) generates (Result retval);
     70 
     71     /**
     72      * Gets the room high frequencies level.
     73      */
     74     getRoomHfLevel() generates (Result retval, int16_t roomHfLevel);
     75 
     76     /**
     77      * Sets the room decay time.
     78      */
     79     setDecayTime(uint32_t decayTime) generates (Result retval);
     80 
     81     /**
     82      * Gets the room decay time.
     83      */
     84     getDecayTime() generates (Result retval, uint32_t decayTime);
     85 
     86     /**
     87      * Sets the ratio of high frequencies decay.
     88      */
     89     setDecayHfRatio(int16_t decayHfRatio) generates (Result retval);
     90 
     91     /**
     92      * Gets the ratio of high frequencies decay.
     93      */
     94     getDecayHfRatio() generates (Result retval, int16_t decayHfRatio);
     95 
     96     /**
     97      * Sets the level of reflections in the room.
     98      */
     99     setReflectionsLevel(int16_t reflectionsLevel) generates (Result retval);
    100 
    101     /**
    102      * Gets the level of reflections in the room.
    103      */
    104     getReflectionsLevel() generates (Result retval, int16_t reflectionsLevel);
    105 
    106     /**
    107      * Sets the reflections delay in the room.
    108      */
    109     setReflectionsDelay(uint32_t reflectionsDelay) generates (Result retval);
    110 
    111     /**
    112      * Gets the reflections delay in the room.
    113      */
    114     getReflectionsDelay() generates (Result retval, uint32_t reflectionsDelay);
    115 
    116     /**
    117      * Sets the reverb level of the room.
    118      */
    119     setReverbLevel(int16_t reverbLevel) generates (Result retval);
    120 
    121     /**
    122      * Gets the reverb level of the room.
    123      */
    124     getReverbLevel() generates (Result retval, int16_t reverbLevel);
    125 
    126     /**
    127      * Sets the reverb delay of the room.
    128      */
    129     setReverbDelay(uint32_t reverDelay) generates (Result retval);
    130 
    131     /**
    132      * Gets the reverb delay of the room.
    133      */
    134     getReverbDelay() generates (Result retval, uint32_t reverbDelay);
    135 
    136     /**
    137      * Sets room diffusion.
    138      */
    139     setDiffusion(int16_t diffusion) generates (Result retval);
    140 
    141     /**
    142      * Gets room diffusion.
    143      */
    144     getDiffusion() generates (Result retval, int16_t diffusion);
    145 
    146     /**
    147      * Sets room wall density.
    148      */
    149     setDensity(int16_t density) generates (Result retval);
    150 
    151     /**
    152      * Gets room wall density.
    153      */
    154     getDensity() generates (Result retval, int16_t density);
    155 
    156     struct AllProperties {
    157         int16_t  roomLevel;         // in millibels,    range -6000 to 0
    158         int16_t  roomHfLevel;       // in millibels,    range -4000 to 0
    159         uint32_t decayTime;         // in milliseconds, range 100 to 20000
    160         int16_t  decayHfRatio;      // in permilles,    range 100 to 1000
    161         int16_t  reflectionsLevel;  // in millibels,    range -6000 to 0
    162         uint32_t reflectionsDelay;  // in milliseconds, range 0 to 65
    163         int16_t  reverbLevel;       // in millibels,    range -6000 to 0
    164         uint32_t reverbDelay;       // in milliseconds, range 0 to 65
    165         int16_t  diffusion;         // in permilles,    range 0 to 1000
    166         int16_t  density;           // in permilles,    range 0 to 1000
    167     };
    168 
    169     /**
    170      * Sets all properties at once.
    171      */
    172     setAllProperties(AllProperties properties) generates (Result retval);
    173 
    174     /**
    175      * Gets all properties at once.
    176      */
    177     getAllProperties() generates (Result retval, AllProperties properties);
    178 };
    179