1 /****************************************************************************** 2 * 3 * Copyright 2004-2012 Broadcom Corporation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19 /****************************************************************************** 20 * 21 * This is the interface to utility functions for dealing with SBC data 22 * frames and codec capabilities. 23 * 24 ******************************************************************************/ 25 #ifndef A2DP_SBC_UP_SAMPLE_H 26 #define A2DP_SBC_UP_SAMPLE_H 27 28 #include <stdint.h> 29 30 /******************************************************************************* 31 * 32 * Function a2dp_sbc_init_up_sample 33 * 34 * Description initialize the up sample 35 * 36 * src_sps: samples per second (source audio data) 37 * dst_sps: samples per second (converted audio data) 38 * bits: number of bits per pcm sample 39 * n_channels: number of channels (i.e. mono(1), stereo(2)...) 40 * 41 * Returns none 42 * 43 ******************************************************************************/ 44 void a2dp_sbc_init_up_sample(uint32_t src_sps, uint32_t dst_sps, uint8_t bits, 45 uint8_t n_channels); 46 47 /******************************************************************************* 48 * 49 * Function a2dp_sbc_up_sample 50 * 51 * Description Given the source (p_src) audio data and 52 * source speed (src_sps, samples per second), 53 * This function converts it to audio data in the desired 54 * format 55 * 56 * p_src: the data buffer that holds the source audio data 57 * p_dst: the data buffer to hold the converted audio data 58 * src_samples: The number of source samples (number of bytes) 59 * dst_samples: The size of p_dst (number of bytes) 60 * 61 * Note: An AE reported an issue with this function. 62 * When called with a2dp_sbc_up_sample(src, uint8_array_dst..) 63 * the byte before uint8_array_dst may get overwritten. 64 * Using uint16_array_dst avoids the problem. 65 * This issue is related to endian-ness and is hard to resolve 66 * in a generic manner. 67 * **************** Please use uint16 array as dst. 68 * 69 * Returns The number of bytes used in p_dst 70 * The number of bytes used in p_src (in *p_ret) 71 * 72 ******************************************************************************/ 73 int a2dp_sbc_up_sample(void* p_src, void* p_dst, uint32_t src_samples, 74 uint32_t dst_samples, uint32_t* p_ret); 75 76 /******************************************************************************* 77 * 78 * Function a2dp_sbc_up_sample_16s (16bits-stereo) 79 * 80 * Description Given the source (p_src) audio data and 81 * source speed (src_sps, samples per second), 82 * This function converts it to audio data in the desired 83 * format 84 * 85 * p_src: the data buffer that holds the source audio data 86 * p_dst: the data buffer to hold the converted audio data 87 * src_samples: The number of source samples (in uint of 4 88 * bytes) 89 * dst_samples: The size of p_dst (in uint of 4 bytes) 90 * 91 * Returns The number of bytes used in p_dst 92 * The number of bytes used in p_src (in *p_ret) 93 * 94 ******************************************************************************/ 95 int a2dp_sbc_up_sample_16s(void* p_src, void* p_dst, uint32_t src_samples, 96 uint32_t dst_samples, uint32_t* p_ret); 97 98 /******************************************************************************* 99 * 100 * Function a2dp_sbc_up_sample_16m (16bits-mono) 101 * 102 * Description Given the source (p_src) audio data and 103 * source speed (src_sps, samples per second), 104 * This function converts it to audio data in the desired 105 * format 106 * 107 * p_src: the data buffer that holds the source audio data 108 * p_dst: the data buffer to hold the converted audio data 109 * src_samples: The number of source samples (in uint of 2 110 * bytes) 111 * dst_samples: The size of p_dst (in uint of 2 bytes) 112 * 113 * Returns The number of bytes used in p_dst 114 * The number of bytes used in p_src (in *p_ret) 115 * 116 ******************************************************************************/ 117 int a2dp_sbc_up_sample_16m(void* p_src, void* p_dst, uint32_t src_samples, 118 uint32_t dst_samples, uint32_t* p_ret); 119 120 /******************************************************************************* 121 * 122 * Function a2dp_sbc_up_sample_8s (8bits-stereo) 123 * 124 * Description Given the source (p_src) audio data and 125 * source speed (src_sps, samples per second), 126 * This function converts it to audio data in the desired 127 * format 128 * 129 * p_src: the data buffer that holds the source audio data 130 * p_dst: the data buffer to hold the converted audio data 131 * src_samples: The number of source samples (in uint of 2 132 * bytes) 133 * dst_samples: The size of p_dst (in uint of 2 bytes) 134 * 135 * Returns The number of bytes used in p_dst 136 * The number of bytes used in p_src (in *p_ret) 137 * 138 ******************************************************************************/ 139 int a2dp_sbc_up_sample_8s(void* p_src, void* p_dst, uint32_t src_samples, 140 uint32_t dst_samples, uint32_t* p_ret); 141 142 /******************************************************************************* 143 * 144 * Function a2dp_sbc_up_sample_8m (8bits-mono) 145 * 146 * Description Given the source (p_src) audio data and 147 * source speed (src_sps, samples per second), 148 * This function converts it to audio data in the desired 149 * format 150 * 151 * p_src: the data buffer that holds the source audio data 152 * p_dst: the data buffer to hold the converted audio data 153 * src_samples: The number of source samples (number of bytes) 154 * dst_samples: The size of p_dst (number of bytes) 155 * 156 * Returns The number of bytes used in p_dst 157 * The number of bytes used in p_src (in *p_ret) 158 * 159 ******************************************************************************/ 160 int a2dp_sbc_up_sample_8m(void* p_src, void* p_dst, uint32_t src_samples, 161 uint32_t dst_samples, uint32_t* p_ret); 162 163 #endif // A2DP_SBC_UP_SAMPLE_H 164