Smart Remote 3 nRF52 v1.2
3 #ifndef _SR3_CONFIG_AUDIO_H
4 #define _SR3_CONFIG_AUDIO_H
7 #if (CONFIG_AUDIO_CODEC == CONFIG_AUDIO_CODEC_ADPCM)
8 # define CONFIG_AUDIO_FRAME_SIZE_BYTES ((CONFIG_AUDIO_FRAME_SIZE_SAMPLES / 2) + 3)
9 #elif (CONFIG_AUDIO_CODEC == CONFIG_AUDIO_CODEC_BV32FP)
10 # define CONFIG_AUDIO_FRAME_SIZE_SAMPLES 80
11 # define CONFIG_AUDIO_FRAME_SIZE_BYTES 20
12 #elif (CONFIG_AUDIO_CODEC == CONFIG_AUDIO_CODEC_OPUS)
13 # define CONFIG_AUDIO_FRAME_SIZE_BYTES ((CONFIG_OPUS_BITRATE_LIMIT * CONFIG_AUDIO_FRAME_SIZE_SAMPLES / (8 * CONFIG_AUDIO_SAMPLING_FREQUENCY)) + ((CONFIG_OPUS_HEADER_ENABLED) ? 2 : 0))
14 # define CONFIG_OPUS_VBR_ENABLED ((CONFIG_OPUS_BITRATE_CFG & 0x01) == 0x00)
15 # define CONFIG_OPUS_BITRATE (CONFIG_OPUS_BITRATE_CFG & ~0x0F)
16 # if (CONFIG_OPUS_BITRATE > CONFIG_OPUS_BITRATE_LIMIT)
17 # error "Bitrate limit cannot be lower than selected codec bitrate"
19 #elif (CONFIG_AUDIO_CODEC == CONFIG_AUDIO_CODEC_SBC)
27 # define CONFIG_AUDIO_FRAME_SIZE_SAMPLES (CONFIG_SBC_BLOCKS * CONFIG_SBC_SUBBANDS)
28 # define CONFIG_AUDIO_FRAME_SIZE_BYTES (4 + ((4 * CONFIG_SBC_SUBBANDS) / 8) + CEIL_DIV(CONFIG_SBC_BLOCKS * CONFIG_SBC_BITPOOL, 8))
29 # if (CONFIG_SBC_MODE == CONFIG_SBC_MODE_MSBC)
30 # define CONFIG_SBC_BLOCKS 15
31 # define CONFIG_SBC_SUBBANDS 8
32 # define CONFIG_SBC_ALLOCATION SBC_LOUDNESS
33 # define CONFIG_SBC_BITPOOL 26
36 # error "Unsupported Compression"
39 #if (defined(CONFIG_AUDIO_FRAME_SIZE_SAMPLES) && !defined(CONFIG_AUDIO_FRAME_SIZE_MS))
40 # define CONFIG_AUDIO_FRAME_SIZE_MS (1000 * CONFIG_AUDIO_FRAME_SIZE_SAMPLES / CONFIG_AUDIO_SAMPLING_FREQUENCY)
41 #elif (defined(CONFIG_AUDIO_FRAME_SIZE_MS) && !defined(CONFIG_AUDIO_FRAME_SIZE_SAMPLES))
42 # define CONFIG_AUDIO_FRAME_SIZE_SAMPLES (CONFIG_AUDIO_FRAME_SIZE_MS * CONFIG_AUDIO_SAMPLING_FREQUENCY / 1000)
44 # error "Either CONFIG_AUDIO_FRAME_SIZE_SAMPLES or CONFIG_AUDIO_FRAME_SIZE_MS has to be defined!"
48 #if (CONFIG_AUDIO_SAMPLING_FREQUENCY == 8000)
49 # define CONFIG_PDM_MCLKFREQ 0x04100000
50 # define CONFIG_AUDIO_REAL_SAMPLING_FREQUENCY 7936
51 #elif (CONFIG_AUDIO_SAMPLING_FREQUENCY == 16000)
52 # define CONFIG_PDM_MCLKFREQ 0x08400000
53 # define CONFIG_AUDIO_REAL_SAMPLING_FREQUENCY 16125
54 #elif (CONFIG_AUDIO_SAMPLING_FREQUENCY == 24000)
55 # define CONFIG_PDM_MCLKFREQ 0x0C000000
56 # define CONFIG_AUDIO_REAL_SAMPLING_FREQUENCY 23819
57 #elif (CONFIG_AUDIO_SAMPLING_FREQUENCY == 32000)
58 # define CONFIG_PDM_MCLKFREQ 0x10000000
59 # define CONFIG_AUDIO_REAL_SAMPLING_FREQUENCY 31250
61 # error "Unsuppored CONFIG_AUDIO_SAMPLING_FREQUENCY value!"
64 #if CONFIG_AUDIO_ANR_ENABLED
65 # define CONFIG_PDM_BUFFER_SIZE_SAMPLES (2 * CONFIG_AUDIO_FRAME_SIZE_SAMPLES)
67 # define CONFIG_PDM_BUFFER_SIZE_SAMPLES (1 * CONFIG_AUDIO_FRAME_SIZE_SAMPLES)
71 #if CONFIG_AUDIO_ENABLED
72 # if (CONFIG_AUDIO_CODEC == CONFIG_AUDIO_CODEC_BV32FP)
73 # define CONFIG_STACK_SIZE_AUDIO CONFIG_STACK_SIZE_AUDIO_BV32FP
74 # elif ((CONFIG_AUDIO_CODEC == CONFIG_AUDIO_CODEC_OPUS) && (CONFIG_OPUS_MODE == CONFIG_OPUS_MODE_CELT))
75 # define CONFIG_STACK_SIZE_AUDIO CONFIG_STACK_SIZE_AUDIO_OPUS_CELT
76 # elif ((CONFIG_AUDIO_CODEC == CONFIG_AUDIO_CODEC_OPUS) && (CONFIG_OPUS_MODE == CONFIG_OPUS_MODE_SILK))
77 # define CONFIG_STACK_SIZE_AUDIO CONFIG_STACK_SIZE_AUDIO_OPUS_SILK
79 # define CONFIG_STACK_SIZE_AUDIO 0
82 # define CONFIG_STACK_SIZE_AUDIO 0
85 #if defined(CONFIG_BOARD_NRF52832_PCA20023) || defined(CONFIG_BOARD_NRF52810_PCA20031)
86 # if !CONFIG_PDM_MIC_PWR_CTRL_ENABLED
87 # error "Product Example devices require control over microphone power line to be enabled."