• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (C) 2022 Beken Corporation
2 //
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 #pragma once
17 #include <common/bk_include.h>
18 #include <driver/sbc_types.h>
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 /* @brief Overview about this API header
25  *
26  */
27 
28 /**
29  * @brief SBC API
30  * @defgroup sbc.h SBC API group
31  * @{
32  */
33 
34 /**
35  * @brief     SBC decoder decode one frame
36  *
37  * This API decode one frame by sbc decoder.
38  *
39  *
40  * @param
41  *    - sbc: sbc decoder context pointer;
42  *    - data: buffer to be decoded;
43  *    - length: the length of input buffer;
44  *
45  *
46  * Usage example:
47  *
48  *    sbcdecodercontext_t sbc_decoder;
49  *	  bk_sbc_decoder_frame_decode(&sbc_decoder, sbc_data, 512);
50  *
51  *
52  * @return
53  *    - consumed: buffer length by decoder if no error ocurs, else error code (always small than 0) will be return.
54  *
55  * @attention 1. the output PCM data please refer to the follows variables:
56  *    - sbc->pcm_sample: means output PCM data address
57  *    - sbc->pcm_length: means output PCM data length in sample
58  *    - sbc->channel_number: means output PCM data channels
59  */
60 bk_err_t bk_sbc_decoder_frame_decode(sbcdecodercontext_t *sbc, const uint8_t *data, uint32_t length);
61 
62 /**
63  * @brief     SBC bit allocation calculate for both encoder and decoder
64  *
65  * This API calculate sbc bit allocation.
66  *
67  *
68  * @param
69  *    - sbc: sbc decoder context pointer
70  *
71  *
72  * @return
73  *    - BK_OK: succeed
74  *    - others: other errors.
75  */
76 bk_err_t bk_sbc_decoder_bit_allocation(sbccommoncontext_t *sbc);
77 
78 /**
79  * @brief     SBC decoder initialize
80  *
81  * This API init the sbc decoder function.
82  *
83  *
84  * @param
85  *    - sbc: sbc decoder context pointer
86  *
87  *
88  * @return
89  *    - BK_OK: succeed
90  *    - others: other errors.
91  */
92 bk_err_t bk_sbc_decoder_init(sbcdecodercontext_t *sbc);
93 
94 /**
95  * @brief     SBC decoder deinit
96  *
97  * This API deinit the sbc decoder function.
98  *
99  *
100  * @param
101  *    - None
102  *
103  *
104  * @return
105  *    - BK_OK: succeed
106  *    - others: other errors.
107  */
108 bk_err_t bk_sbc_decoder_deinit(void);
109 
110 /**
111  * @brief     enable/disable sbc interrupt
112  *
113  * This API enable or disable sbc interrupt:
114  *    - reigster interrupt service handle
115  *    - enable or disable sbc interrupt
116  *
117  *
118  * @param
119  *    - enable: enable —— 1, disable —— 0
120  *
121  *
122  * @return
123  *    - BK_OK: succeed
124  *    - others: other errors.
125  */
126 bk_err_t bk_sbc_decoder_interrupt_enable(bool enable);
127 
128 /**
129  * @brief     enable/disable msbc decoder
130  *
131  * This API enable/disable msbc decoder.
132  *
133  *
134  * @param
135  *    - enable: enable —— 1, disable —— 0
136  *
137  *
138  * @return
139  *    - BK_OK: succeed
140  *    - others: other errors.
141  */
142 bk_err_t bk_sbc_decoder_support_msbc(bool enable);
143 
144 /**
145  * @brief     Register sbc decoder isr
146  *
147  * This API register sbc decoder isr.
148  *
149  *
150  * @param
151  *    - isr: sbc decoder isr callback;
152  *    - param: sbc decoder isr callback parameter;
153  *
154  *
155  * @return
156  *    - BK_OK: succeed
157  *    - others: other errors.
158  */
159 bk_err_t bk_sbc_decoder_register_sbc_isr(sbc_decoder_isr_t isr, void *param);
160 
161 /**
162  * @}
163  */
164 
165 #ifdef __cplusplus
166  }
167 #endif
168 
169 
170