| /****************************************************************************** |
| * |
| * Copyright (C) 2004-2012 Broadcom Corporation |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at: |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| ******************************************************************************/ |
| |
| /****************************************************************************** |
| * |
| * This is the interface to utility functions for dealing with SBC data |
| * frames and codec capabilities. |
| * |
| ******************************************************************************/ |
| #ifndef BTA_AV_SBC_H |
| #define BTA_AV_SBC_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /***************************************************************************** |
| ** constants |
| *****************************************************************************/ |
| |
| /* SBC packet header size */ |
| #define BTA_AV_SBC_HDR_SIZE A2D_SBC_MPL_HDR_LEN |
| |
| /******************************************************************************* |
| ** |
| ** Function bta_av_sbc_init_up_sample |
| ** |
| ** Description initialize the up sample |
| ** |
| ** src_sps: samples per second (source audio data) |
| ** dst_sps: samples per second (converted audio data) |
| ** bits: number of bits per pcm sample |
| ** n_channels: number of channels (i.e. mono(1), stereo(2)...) |
| ** |
| ** Returns none |
| ** |
| *******************************************************************************/ |
| extern void bta_av_sbc_init_up_sample (uint32_t src_sps, uint32_t dst_sps, |
| uint16_t bits, uint16_t n_channels); |
| |
| /******************************************************************************* |
| ** |
| ** Function bta_av_sbc_up_sample |
| ** |
| ** Description Given the source (p_src) audio data and |
| ** source speed (src_sps, samples per second), |
| ** This function converts it to audio data in the desired format |
| ** |
| ** p_src: the data buffer that holds the source audio data |
| ** p_dst: the data buffer to hold the converted audio data |
| ** src_samples: The number of source samples (number of bytes) |
| ** dst_samples: The size of p_dst (number of bytes) |
| ** |
| ** Note: An AE reported an issue with this function. |
| ** When called with bta_av_sbc_up_sample(src, uint8_array_dst..) |
| ** the byte before uint8_array_dst may get overwritten. |
| ** Using uint16_array_dst avoids the problem. |
| ** This issue is related to endian-ness and is hard to resolve |
| ** in a generic manner. |
| ** **************** Please use uint16 array as dst. |
| ** |
| ** Returns The number of bytes used in p_dst |
| ** The number of bytes used in p_src (in *p_ret) |
| ** |
| *******************************************************************************/ |
| extern int bta_av_sbc_up_sample (void *p_src, void *p_dst, |
| uint32_t src_samples, uint32_t dst_samples, |
| uint32_t *p_ret); |
| |
| /******************************************************************************* |
| ** |
| ** Function bta_av_sbc_up_sample_16s (16bits-stereo) |
| ** |
| ** Description Given the source (p_src) audio data and |
| ** source speed (src_sps, samples per second), |
| ** This function converts it to audio data in the desired format |
| ** |
| ** p_src: the data buffer that holds the source audio data |
| ** p_dst: the data buffer to hold the converted audio data |
| ** src_samples: The number of source samples (in uint of 4 bytes) |
| ** dst_samples: The size of p_dst (in uint of 4 bytes) |
| ** |
| ** Returns The number of bytes used in p_dst |
| ** The number of bytes used in p_src (in *p_ret) |
| ** |
| *******************************************************************************/ |
| extern int bta_av_sbc_up_sample_16s (void *p_src, void *p_dst, |
| uint32_t src_samples, uint32_t dst_samples, |
| uint32_t *p_ret); |
| |
| /******************************************************************************* |
| ** |
| ** Function bta_av_sbc_up_sample_16m (16bits-mono) |
| ** |
| ** Description Given the source (p_src) audio data and |
| ** source speed (src_sps, samples per second), |
| ** This function converts it to audio data in the desired format |
| ** |
| ** p_src: the data buffer that holds the source audio data |
| ** p_dst: the data buffer to hold the converted audio data |
| ** src_samples: The number of source samples (in uint of 2 bytes) |
| ** dst_samples: The size of p_dst (in uint of 2 bytes) |
| ** |
| ** Returns The number of bytes used in p_dst |
| ** The number of bytes used in p_src (in *p_ret) |
| ** |
| *******************************************************************************/ |
| extern int bta_av_sbc_up_sample_16m (void *p_src, void *p_dst, |
| uint32_t src_samples, uint32_t dst_samples, |
| uint32_t *p_ret); |
| |
| /******************************************************************************* |
| ** |
| ** Function bta_av_sbc_up_sample_8s (8bits-stereo) |
| ** |
| ** Description Given the source (p_src) audio data and |
| ** source speed (src_sps, samples per second), |
| ** This function converts it to audio data in the desired format |
| ** |
| ** p_src: the data buffer that holds the source audio data |
| ** p_dst: the data buffer to hold the converted audio data |
| ** src_samples: The number of source samples (in uint of 2 bytes) |
| ** dst_samples: The size of p_dst (in uint of 2 bytes) |
| ** |
| ** Returns The number of bytes used in p_dst |
| ** The number of bytes used in p_src (in *p_ret) |
| ** |
| *******************************************************************************/ |
| extern int bta_av_sbc_up_sample_8s (void *p_src, void *p_dst, |
| uint32_t src_samples, uint32_t dst_samples, |
| uint32_t *p_ret); |
| |
| /******************************************************************************* |
| ** |
| ** Function bta_av_sbc_up_sample_8m (8bits-mono) |
| ** |
| ** Description Given the source (p_src) audio data and |
| ** source speed (src_sps, samples per second), |
| ** This function converts it to audio data in the desired format |
| ** |
| ** p_src: the data buffer that holds the source audio data |
| ** p_dst: the data buffer to hold the converted audio data |
| ** src_samples: The number of source samples (number of bytes) |
| ** dst_samples: The size of p_dst (number of bytes) |
| ** |
| ** Returns The number of bytes used in p_dst |
| ** The number of bytes used in p_src (in *p_ret) |
| ** |
| *******************************************************************************/ |
| extern int bta_av_sbc_up_sample_8m (void *p_src, void *p_dst, |
| uint32_t src_samples, uint32_t dst_samples, |
| uint32_t *p_ret); |
| |
| /******************************************************************************* |
| ** |
| ** Function bta_av_sbc_cfg_for_cap |
| ** |
| ** Description Determine the preferred SBC codec configuration for the |
| ** given codec capabilities. The function is passed the |
| ** preferred codec configuration and the peer codec |
| ** capabilities for the stream. The function attempts to |
| ** match the preferred capabilities with the configuration |
| ** as best it can. The resulting codec configuration is |
| ** returned in the same memory used for the capabilities. |
| ** |
| ** Returns 0 if ok, nonzero if error. |
| ** Codec configuration in p_cap. |
| ** |
| *******************************************************************************/ |
| extern uint8_t bta_av_sbc_cfg_for_cap(uint8_t *p_peer, tA2D_SBC_CIE *p_cap, tA2D_SBC_CIE *p_pref); |
| |
| /******************************************************************************* |
| ** |
| ** Function bta_av_sbc_cfg_in_cap |
| ** |
| ** Description This function checks whether an SBC codec configuration |
| ** is allowable for the given codec capabilities. |
| ** |
| ** Returns 0 if ok, nonzero if error. |
| ** |
| *******************************************************************************/ |
| extern uint8_t bta_av_sbc_cfg_in_cap(uint8_t *p_cfg, tA2D_SBC_CIE *p_cap); |
| |
| /******************************************************************************* |
| ** |
| ** Function bta_av_sbc_cfg_matches_cap |
| ** |
| ** Description This function checks whether an SBC codec configuration |
| ** matched with capabilities. Here we check subset. |
| ** |
| ** Returns 0 if ok, nonzero if error. |
| ** |
| *******************************************************************************/ |
| extern uint8_t bta_av_sbc_cfg_matches_cap(uint8_t *p_cfg, tA2D_SBC_CIE *p_cap); |
| |
| /******************************************************************************* |
| ** |
| ** Function bta_av_sbc_bld_hdr |
| ** |
| ** Description This function builds the packet header for MPF1. |
| ** |
| ** Returns void |
| ** |
| *******************************************************************************/ |
| extern void bta_av_sbc_bld_hdr(BT_HDR *p_buf, uint16_t fr_per_pkt); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* BTA_AV_SBC_H */ |
| |