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)23 static 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)42 static 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)49 static 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)63 static 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