Home | History | Annotate | Download | only in include
      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 *******************************************************************************/
     49 extern 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 *******************************************************************************/
     77 extern 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 *******************************************************************************/
     98 extern 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 *******************************************************************************/
    119 extern 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 *******************************************************************************/
    140 extern 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 *******************************************************************************/
    161 extern 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 *******************************************************************************/
    181 extern 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 *******************************************************************************/
    193 extern UINT8 bta_av_sbc_cfg_in_cap(UINT8 *p_cfg, tA2D_SBC_CIE *p_cap);
    194 
    195 /*******************************************************************************
    196 **
    197 ** Function         bta_av_sbc_cfg_matches_cap
    198 **
    199 ** Description      This function checks whether an SBC codec configuration
    200 **                  matched with capabilities. Here we check subset.
    201 **
    202 ** Returns          0 if ok, nonzero if error.
    203 **
    204 *******************************************************************************/
    205 extern UINT8 bta_av_sbc_cfg_matches_cap(UINT8 *p_cfg, tA2D_SBC_CIE *p_cap);
    206 
    207 /*******************************************************************************
    208 **
    209 ** Function         bta_av_sbc_bld_hdr
    210 **
    211 ** Description      This function builds the packet header for MPF1.
    212 **
    213 ** Returns          void
    214 **
    215 *******************************************************************************/
    216 extern void bta_av_sbc_bld_hdr(BT_HDR *p_buf, UINT16 fr_per_pkt);
    217 
    218 #endif /* BTA_AV_SBC_H */
    219 
    220