Zephyr API Documentation
3.6.0
A Scalable Open Source RTOS
3.6.0
Toggle main menu visibility
Main Page
Related Pages
Modules
Data Structures
Data Structures
Data Structure Index
Data Fields
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
Enumerator
Files
File List
Globals
All
$
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Variables
$
a
b
c
d
f
g
h
i
k
l
m
n
o
p
r
s
t
x
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
z
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
z
Macros
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
•
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
Loading...
Searching...
No Matches
lc3.h
Go to the documentation of this file.
1
5
/*
6
* Copyright (c) 2020 Intel Corporation
7
* Copyright (c) 2022 Nordic Semiconductor ASA
8
*
9
* SPDX-License-Identifier: Apache-2.0
10
*/
11
#ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_LC3_H_
12
#define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_LC3_H_
13
21
#include <
zephyr/sys/util_macro.h
>
22
#include <
zephyr/bluetooth/byteorder.h
>
23
#include <
zephyr/bluetooth/hci_types.h
>
24
25
#ifdef __cplusplus
26
extern
"C"
{
27
#endif
28
34
/* COND_CODE_1 is used to omit an LTV entry in case the _frames_per_sdu is 1.
35
* COND_CODE_1 will evaluate to second argument if the flag parameter(first argument) is 1
36
* - removing one layer of paranteses.
37
* If the flags argument is != 1 it will evaluate to the third argument which inserts a LTV
38
* entry for the max_frames_per_sdu value.
39
*/
40
41
#define BT_AUDIO_CODEC_CAP_LC3_DATA(_freq, _duration, _chan_count, _len_min, _len_max, \
42
_max_frames_per_sdu) \
43
{ \
44
BT_AUDIO_CODEC_DATA(BT_AUDIO_CODEC_CAP_TYPE_FREQ, BT_BYTES_LIST_LE16(_freq)), \
45
BT_AUDIO_CODEC_DATA(BT_AUDIO_CODEC_CAP_TYPE_DURATION, (_duration)), \
46
BT_AUDIO_CODEC_DATA(BT_AUDIO_CODEC_CAP_TYPE_CHAN_COUNT, (_chan_count)), \
47
BT_AUDIO_CODEC_DATA(BT_AUDIO_CODEC_CAP_TYPE_FRAME_LEN, \
48
BT_BYTES_LIST_LE16(_len_min), \
49
BT_BYTES_LIST_LE16(_len_max)), \
50
COND_CODE_1(_max_frames_per_sdu, (), \
51
(BT_AUDIO_CODEC_DATA(BT_AUDIO_CODEC_CAP_TYPE_FRAME_COUNT, \
52
(_max_frames_per_sdu)))) \
53
}
54
58
#define BT_AUDIO_CODEC_CAP_LC3_META(_prefer_context) \
59
{ \
60
BT_AUDIO_CODEC_DATA(BT_AUDIO_METADATA_TYPE_PREF_CONTEXT, \
61
BT_BYTES_LIST_LE16(_prefer_context)) \
62
}
63
76
#define BT_AUDIO_CODEC_CAP_LC3(_freq, _duration, _chan_count, _len_min, _len_max, \
77
_max_frames_per_sdu, _prefer_context) \
78
BT_AUDIO_CODEC_CAP(BT_HCI_CODING_FORMAT_LC3, 0x0000, 0x0000, \
79
BT_AUDIO_CODEC_CAP_LC3_DATA(_freq, _duration, _chan_count, _len_min, \
80
_len_max, _max_frames_per_sdu), \
81
BT_AUDIO_CODEC_CAP_LC3_META(_prefer_context))
82
93
#define BT_AUDIO_CODEC_CFG_LC3_DATA(_freq, _duration, _loc, _len, _frames_per_sdu) \
94
{ \
95
BT_AUDIO_CODEC_DATA(BT_AUDIO_CODEC_CFG_FREQ, (_freq)), \
96
BT_AUDIO_CODEC_DATA(BT_AUDIO_CODEC_CFG_DURATION, (_duration)), \
97
BT_AUDIO_CODEC_DATA(BT_AUDIO_CODEC_CFG_CHAN_ALLOC, BT_BYTES_LIST_LE32(_loc)), \
98
BT_AUDIO_CODEC_DATA(BT_AUDIO_CODEC_CFG_FRAME_LEN, BT_BYTES_LIST_LE16(_len)), \
99
COND_CODE_1(_frames_per_sdu, (), \
100
(BT_AUDIO_CODEC_DATA(BT_AUDIO_CODEC_CFG_FRAME_BLKS_PER_SDU, \
101
(_frames_per_sdu)))) \
102
}
103
107
#define BT_AUDIO_CODEC_CFG_LC3_META(_stream_context) \
108
{ \
109
BT_AUDIO_CODEC_DATA(BT_AUDIO_METADATA_TYPE_STREAM_CONTEXT, \
110
BT_BYTES_LIST_LE16(_stream_context)) \
111
}
112
123
#define BT_AUDIO_CODEC_LC3_CONFIG(_freq, _duration, _loc, _len, _frames_per_sdu, _stream_context) \
124
BT_AUDIO_CODEC_CFG( \
125
BT_HCI_CODING_FORMAT_LC3, 0x0000, 0x0000, \
126
BT_AUDIO_CODEC_CFG_LC3_DATA(_freq, _duration, _loc, _len, _frames_per_sdu), \
127
BT_AUDIO_CODEC_CFG_LC3_META(_stream_context))
128
135
#define BT_AUDIO_CODEC_LC3_CONFIG_8_1(_loc, _stream_context) \
136
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ, BT_AUDIO_CODEC_CFG_DURATION_7_5, \
137
_loc, 26u, 1, _stream_context)
144
#define BT_AUDIO_CODEC_LC3_CONFIG_8_2(_loc, _stream_context) \
145
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ, BT_AUDIO_CODEC_CFG_DURATION_10, \
146
_loc, 30u, 1, _stream_context)
153
#define BT_AUDIO_CODEC_LC3_CONFIG_16_1(_loc, _stream_context) \
154
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, BT_AUDIO_CODEC_CFG_DURATION_7_5, \
155
_loc, 30u, 1, _stream_context)
162
#define BT_AUDIO_CODEC_LC3_CONFIG_16_2(_loc, _stream_context) \
163
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, BT_AUDIO_CODEC_CFG_DURATION_10, \
164
_loc, 40u, 1, _stream_context)
165
172
#define BT_AUDIO_CODEC_LC3_CONFIG_24_1(_loc, _stream_context) \
173
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ, BT_AUDIO_CODEC_CFG_DURATION_7_5, \
174
_loc, 45u, 1, _stream_context)
181
#define BT_AUDIO_CODEC_LC3_CONFIG_24_2(_loc, _stream_context) \
182
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ, BT_AUDIO_CODEC_CFG_DURATION_10, \
183
_loc, 60u, 1, _stream_context)
190
#define BT_AUDIO_CODEC_LC3_CONFIG_32_1(_loc, _stream_context) \
191
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, BT_AUDIO_CODEC_CFG_DURATION_7_5, \
192
_loc, 60u, 1, _stream_context)
199
#define BT_AUDIO_CODEC_LC3_CONFIG_32_2(_loc, _stream_context) \
200
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, BT_AUDIO_CODEC_CFG_DURATION_10, \
201
_loc, 80u, 1, _stream_context)
208
#define BT_AUDIO_CODEC_LC3_CONFIG_441_1(_loc, _stream_context) \
209
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ, BT_AUDIO_CODEC_CFG_DURATION_7_5, \
210
_loc, 98u, 1, _stream_context)
217
#define BT_AUDIO_CODEC_LC3_CONFIG_441_2(_loc, _stream_context) \
218
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ, BT_AUDIO_CODEC_CFG_DURATION_10, \
219
_loc, 130u, 1, _stream_context)
226
#define BT_AUDIO_CODEC_LC3_CONFIG_48_1(_loc, _stream_context) \
227
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, BT_AUDIO_CODEC_CFG_DURATION_7_5, \
228
_loc, 75u, 1, _stream_context)
235
#define BT_AUDIO_CODEC_LC3_CONFIG_48_2(_loc, _stream_context) \
236
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, BT_AUDIO_CODEC_CFG_DURATION_10, \
237
_loc, 100u, 1, _stream_context)
244
#define BT_AUDIO_CODEC_LC3_CONFIG_48_3(_loc, _stream_context) \
245
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, BT_AUDIO_CODEC_CFG_DURATION_7_5, \
246
_loc, 90u, 1, _stream_context)
253
#define BT_AUDIO_CODEC_LC3_CONFIG_48_4(_loc, _stream_context) \
254
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, BT_AUDIO_CODEC_CFG_DURATION_10, \
255
_loc, 120u, 1, _stream_context)
262
#define BT_AUDIO_CODEC_LC3_CONFIG_48_5(_loc, _stream_context) \
263
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, BT_AUDIO_CODEC_CFG_DURATION_7_5, \
264
_loc, 117u, 1, _stream_context)
271
#define BT_AUDIO_CODEC_LC3_CONFIG_48_6(_loc, _stream_context) \
272
BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, BT_AUDIO_CODEC_CFG_DURATION_10, \
273
_loc, 155u, 1, _stream_context)
277
#define BT_AUDIO_CODEC_LC3_QOS_7_5(_framing, _sdu, _rtn, _latency, _pd) \
278
BT_AUDIO_CODEC_QOS(7500u, _framing, BT_AUDIO_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd)
282
#define BT_AUDIO_CODEC_LC3_QOS_7_5_UNFRAMED(_sdu, _rtn, _latency, _pd) \
283
BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, _sdu, _rtn, _latency, _pd)
287
#define BT_AUDIO_CODEC_LC3_QOS_10(_framing, _sdu, _rtn, _latency, _pd) \
288
BT_AUDIO_CODEC_QOS(10000u, _framing, BT_AUDIO_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd)
292
#define BT_AUDIO_CODEC_LC3_QOS_10_UNFRAMED(_sdu, _rtn, _latency, _pd) \
293
BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, _sdu, _rtn, _latency, _pd)
294
295
#ifdef __cplusplus
296
}
297
#endif
298
303
#endif
/* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_LC3_H_ */
byteorder.h
Bluetooth byteorder API.
hci_types.h
util_macro.h
Macro utilities.
zephyr
bluetooth
audio
lc3.h
Generated on Sat Feb 24 2024 03:45:05 for Zephyr API Documentation by
1.9.6