1/****************************************************************************** 2 * 3 * Copyright (C) 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 BTA_AV_SBC_H 26#define BTA_AV_SBC_H 27 28/***************************************************************************** 29** constants 30*****************************************************************************/ 31 32/* SBC packet header size */ 33#define BTA_AV_SBC_HDR_SIZE A2D_SBC_MPL_HDR_LEN 34 35/******************************************************************************* 36** 37** Function bta_av_sbc_init_up_sample 38** 39** Description initialize the up sample 40** 41** src_sps: samples per second (source audio data) 42** dst_sps: samples per second (converted audio data) 43** bits: number of bits per pcm sample 44** n_channels: number of channels (i.e. mono(1), stereo(2)...) 45** 46** Returns none 47** 48*******************************************************************************/ 49extern void bta_av_sbc_init_up_sample (UINT32 src_sps, UINT32 dst_sps, 50 UINT16 bits, UINT16 n_channels); 51 52/******************************************************************************* 53** 54** Function bta_av_sbc_up_sample 55** 56** Description Given the source (p_src) audio data and 57** source speed (src_sps, samples per second), 58** This function converts it to audio data in the desired format 59** 60** p_src: the data buffer that holds the source audio data 61** p_dst: the data buffer to hold the converted audio data 62** src_samples: The number of source samples (number of bytes) 63** dst_samples: The size of p_dst (number of bytes) 64** 65** Note: An AE reported an issue with this function. 66** When called with bta_av_sbc_up_sample(src, uint8_array_dst..) 67** the byte before uint8_array_dst may get overwritten. 68** Using uint16_array_dst avoids the problem. 69** This issue is related to endian-ness and is hard to resolve 70** in a generic manner. 71** **************** Please use uint16 array as dst. 72** 73** Returns The number of bytes used in p_dst 74** The number of bytes used in p_src (in *p_ret) 75** 76*******************************************************************************/ 77extern int bta_av_sbc_up_sample (void *p_src, void *p_dst, 78 UINT32 src_samples, UINT32 dst_samples, 79 UINT32 *p_ret); 80 81/******************************************************************************* 82** 83** Function bta_av_sbc_up_sample_16s (16bits-stereo) 84** 85** Description Given the source (p_src) audio data and 86** source speed (src_sps, samples per second), 87** This function converts it to audio data in the desired format 88** 89** p_src: the data buffer that holds the source audio data 90** p_dst: the data buffer to hold the converted audio data 91** src_samples: The number of source samples (in uint of 4 bytes) 92** dst_samples: The size of p_dst (in uint of 4 bytes) 93** 94** Returns The number of bytes used in p_dst 95** The number of bytes used in p_src (in *p_ret) 96** 97*******************************************************************************/ 98extern int bta_av_sbc_up_sample_16s (void *p_src, void *p_dst, 99 UINT32 src_samples, UINT32 dst_samples, 100 UINT32 *p_ret); 101 102/******************************************************************************* 103** 104** Function bta_av_sbc_up_sample_16m (16bits-mono) 105** 106** Description Given the source (p_src) audio data and 107** source speed (src_sps, samples per second), 108** This function converts it to audio data in the desired format 109** 110** p_src: the data buffer that holds the source audio data 111** p_dst: the data buffer to hold the converted audio data 112** src_samples: The number of source samples (in uint of 2 bytes) 113** dst_samples: The size of p_dst (in uint of 2 bytes) 114** 115** Returns The number of bytes used in p_dst 116** The number of bytes used in p_src (in *p_ret) 117** 118*******************************************************************************/ 119extern int bta_av_sbc_up_sample_16m (void *p_src, void *p_dst, 120 UINT32 src_samples, UINT32 dst_samples, 121 UINT32 *p_ret); 122 123/******************************************************************************* 124** 125** Function bta_av_sbc_up_sample_8s (8bits-stereo) 126** 127** Description Given the source (p_src) audio data and 128** source speed (src_sps, samples per second), 129** This function converts it to audio data in the desired format 130** 131** p_src: the data buffer that holds the source audio data 132** p_dst: the data buffer to hold the converted audio data 133** src_samples: The number of source samples (in uint of 2 bytes) 134** dst_samples: The size of p_dst (in uint of 2 bytes) 135** 136** Returns The number of bytes used in p_dst 137** The number of bytes used in p_src (in *p_ret) 138** 139*******************************************************************************/ 140extern int bta_av_sbc_up_sample_8s (void *p_src, void *p_dst, 141 UINT32 src_samples, UINT32 dst_samples, 142 UINT32 *p_ret); 143 144/******************************************************************************* 145** 146** Function bta_av_sbc_up_sample_8m (8bits-mono) 147** 148** Description Given the source (p_src) audio data and 149** source speed (src_sps, samples per second), 150** This function converts it to audio data in the desired format 151** 152** p_src: the data buffer that holds the source audio data 153** p_dst: the data buffer to hold the converted audio data 154** src_samples: The number of source samples (number of bytes) 155** dst_samples: The size of p_dst (number of bytes) 156** 157** Returns The number of bytes used in p_dst 158** The number of bytes used in p_src (in *p_ret) 159** 160*******************************************************************************/ 161extern int bta_av_sbc_up_sample_8m (void *p_src, void *p_dst, 162 UINT32 src_samples, UINT32 dst_samples, 163 UINT32 *p_ret); 164 165/******************************************************************************* 166** 167** Function bta_av_sbc_cfg_for_cap 168** 169** Description Determine the preferred SBC codec configuration for the 170** given codec capabilities. The function is passed the 171** preferred codec configuration and the peer codec 172** capabilities for the stream. The function attempts to 173** match the preferred capabilities with the configuration 174** as best it can. The resulting codec configuration is 175** returned in the same memory used for the capabilities. 176** 177** Returns 0 if ok, nonzero if error. 178** Codec configuration in p_cap. 179** 180*******************************************************************************/ 181extern UINT8 bta_av_sbc_cfg_for_cap(UINT8 *p_peer, tA2D_SBC_CIE *p_cap, tA2D_SBC_CIE *p_pref); 182 183/******************************************************************************* 184** 185** Function bta_av_sbc_cfg_in_cap 186** 187** Description This function checks whether an SBC codec configuration 188** is allowable for the given codec capabilities. 189** 190** Returns 0 if ok, nonzero if error. 191** 192*******************************************************************************/ 193extern UINT8 bta_av_sbc_cfg_in_cap(UINT8 *p_cfg, tA2D_SBC_CIE *p_cap); 194 195/******************************************************************************* 196** 197** Function bta_av_sbc_bld_hdr 198** 199** Description This function builds the packet header for MPF1. 200** 201** Returns void 202** 203*******************************************************************************/ 204extern void bta_av_sbc_bld_hdr(BT_HDR *p_buf, UINT16 fr_per_pkt); 205 206#endif /* BTA_AV_SBC_H */ 207 208