1 /* 2 * Copyright (C) 2015-2020 Alibaba Group Holding Limited 3 * 4 */ 5 6 #ifndef __AUDIO_COMMON_H__ 7 #define __AUDIO_COMMON_H__ 8 9 10 enum { 11 PARAM_KEY_INVALID = 0, 12 PARAM_KEY_NOISE_SUPPRESSION, 13 PARAM_KEY_ECHO_CANCELLATION, 14 PARAM_KEY_AUTO_GAIN_CONTROL, 15 PARAM_KEY_VOICE_ACTIVE_DETECT, 16 PARAM_KEY_EFFECT_EQUALIZER, 17 PARAM_KEY_OUT_PCM_DUMP, 18 }; 19 20 #define PARAM_VAL_ENABLE 1 21 #define PARAM_VAL_DISABLE 0 22 pcm_rate_valid(int rate)23static inline bool pcm_rate_valid(int rate) 24 { 25 switch (rate) { 26 case 8000: 27 case 12000: 28 case 16000: 29 case 11025: 30 case 22050: 31 case 24000: 32 case 32000: 33 case 44100: 34 case 48000: 35 case 96000: 36 case 192000: 37 return true; 38 } 39 return false; 40 } 41 pcm_channel_valid(int channels)42static inline bool pcm_channel_valid(int channels) 43 { 44 if (channels > 0 && channels <= 8) 45 return true; 46 return false; 47 } 48 pcm_bits_valid(int bits)49static inline bool pcm_bits_valid(int bits) 50 { 51 if (bits == 8 || bits == 16 || bits == 24 || bits == 32) 52 return true; 53 return false; 54 } 55 56 enum pcm_format bits_to_pcm_format(int bits); 57 #ifndef UVOICE_ON_XR871 58 int pcm_format_to_bits(enum pcm_format format); 59 #endif 60 61 int pcm_to_decibel(struct pcm_config *config, uint8_t *buffer, int nbytes); 62 period_samples_to_bytes(struct pcm_config * config)63static inline int period_samples_to_bytes(struct pcm_config *config) 64 { 65 return (config->period_size * config->channels * 66 (pcm_format_to_bits(config->format) >> 3)); 67 } 68 69 70 #endif /* __AUDIO_COMMON_H__ */ 71