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