1 /*
2  * Copyright (C) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef BTM_SCO_DEF_H
17 #define BTM_SCO_DEF_H
18 
19 #include <stdint.h>
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 #define BTM_MAX_SCO 7
26 
27 #define INPUT_OUTPUT_64K_RATE 16000
28 #define INPUT_OUTPUT_128K_RATE 32000
29 
30 #define ESCO_DATA_PATH_PCM 1
31 
32 typedef struct {
33     uint8_t codingFormat;
34     uint16_t companyID;
35     uint16_t vendorSpecificCodecID;
36 } BtmEscoCodingFormat;
37 
38 typedef struct {
39     BtmEscoCodingFormat transmitCodingFormat;
40     BtmEscoCodingFormat receiveCodingFormat;
41     uint16_t transmitCodecFrameSize;
42     uint16_t receiveCodecFrameSize;
43     uint32_t inputBandwidth;
44     uint32_t outputBandwidth;
45     BtmEscoCodingFormat inputCodingFormat;
46     BtmEscoCodingFormat outputCodingFormat;
47     uint16_t inputCodedDataSize;
48     uint16_t outputCodedDataSize;
49     uint8_t inputPCMDataFormat;
50     uint8_t outputPCMDataFormat;
51     uint8_t inputPCMSamplePayloadMSBPosition;
52     uint8_t outputPCMSamplePayloadMSBPosition;
53     uint8_t inputDataPath;
54     uint8_t outputDataPath;
55     uint8_t inputTransportUnitSize;
56     uint8_t outputTransportUnitSize;
57 } BtmEscoParameters;
58 
59 const BtmEscoParameters *BtmGetEscoParameters(uint8_t codec);
60 
61 #ifdef __cplusplus
62 }
63 #endif
64 
65 #endif