Smart Remote 3 nRF52 v1.2
Introduction
API Reference
Modules
Data Structures
All
Data Structures
Functions
Variables
Typedefs
Enumerations
Enumerator
Groups
Pages
sr3_config_audio.h
1
/*$$$LICENCE_NORDIC_STANDARD<2016>$$$*/
2
3
#ifndef _SR3_CONFIG_AUDIO_H
4
#define _SR3_CONFIG_AUDIO_H
5
6
// Calculate audio parameters.
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"
18
# endif
19
#elif (CONFIG_AUDIO_CODEC == CONFIG_AUDIO_CODEC_SBC)
20
/*
21
* See A2DP specification v1.3.1, page 70, 12.9 Calculation of Bit Rate and Frame Length.
22
* Since MONO is the only mode used here, the size is calculated for one channel.
23
*
24
* Fixed settings used for mSBC are taken from "Hands-Free Profile 1.7",
25
* page 115, section 5.7.4 "mSBC coding".
26
*/
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
34
# endif
35
#else
36
# error "Unsupported Compression"
37
#endif
38
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)
43
#else
44
# error "Either CONFIG_AUDIO_FRAME_SIZE_SAMPLES or CONFIG_AUDIO_FRAME_SIZE_MS has to be defined!"
45
#endif
46
47
// Create PDM configuration basing on audio settings.
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
60
#else
61
# error "Unsuppored CONFIG_AUDIO_SAMPLING_FREQUENCY value!"
62
#endif
63
64
#if CONFIG_AUDIO_ANR_ENABLED
65
# define CONFIG_PDM_BUFFER_SIZE_SAMPLES (2 * CONFIG_AUDIO_FRAME_SIZE_SAMPLES)
66
#else
/* !CONFIG_AUDIO_ANR_ENABLED */
67
# define CONFIG_PDM_BUFFER_SIZE_SAMPLES (1 * CONFIG_AUDIO_FRAME_SIZE_SAMPLES)
68
#endif
/* CONFIG_AUDIO_ANR_ENABLED */
69
70
// Calculate stack size.
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
78
# else
79
# define CONFIG_STACK_SIZE_AUDIO 0
80
# endif
81
#else
/* !CONFIG_AUDIO_ENABLED */
82
# define CONFIG_STACK_SIZE_AUDIO 0
83
#endif
/* CONFIG_AUDIO_ENABLED */
84
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."
88
# endif
89
#endif
90
91
#endif
/* _SR3_CONFIG_AUDIO_H */
Documentation feedback
|
Developer Zone
|
Subscribe
| Updated