diff options
Diffstat (limited to 'stack/include/a2d_aac.h')
-rw-r--r-- | stack/include/a2d_aac.h | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/stack/include/a2d_aac.h b/stack/include/a2d_aac.h new file mode 100644 index 000000000..102de6787 --- /dev/null +++ b/stack/include/a2d_aac.h @@ -0,0 +1,149 @@ +/****************************************************************************** + * + * Copyright (c) 2016, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ******************************************************************************/ + +#ifndef A2D_AAC_H +#define A2D_AAC_H + +/***************************************************************************** +** Constants +*****************************************************************************/ + +#define A2D_AAC_MPL_HDR_LEN 1 + +/* AAC media codec capabilitiy len*/ +#define A2D_AAC_INFO_LEN 8 + +/* AAC Codec Specific */ +#define A2D_AAC_IE_OBJ_TYPE_MSK 0xF0 /* b7-b4 Object Type */ +#define A2D_AAC_IE_OBJ_TYPE_MPEG_2_AAC_LC 0x80 /* b7:MPEG-2 AAC LC */ +#define A2D_AAC_IE_OBJ_TYPE_MPEG_4_AAC_LC 0x40 /* b7:MPEG-4 AAC LC */ +#define A2D_AAC_IE_OBJ_TYPE_MPEG_4_AAC_LTP 0x20 /* b7:MPEG-4 AAC LTP */ +#define A2D_AAC_IE_OBJ_TYPE_MPEG_4_AAC_SCA 0x10 /* b7:MPEG-4 AAC SCALABLE */ + +#define A2D_AAC_IE_SAMP_FREQ_MSK 0xFFF0 /* b15-b4 sampling frequency */ +#define A2D_AAC_IE_SAMP_FREQ_8000 0x8000 /* b15: 8000 */ +#define A2D_AAC_IE_SAMP_FREQ_11025 0x4000 /* b15: 11025 */ +#define A2D_AAC_IE_SAMP_FREQ_12000 0x2000 /* b15: 12000 */ +#define A2D_AAC_IE_SAMP_FREQ_16000 0x1000 /* b15: 16000 */ +#define A2D_AAC_IE_SAMP_FREQ_22050 0x0800 /* b15: 22050 */ +#define A2D_AAC_IE_SAMP_FREQ_24000 0x0400 /* b15: 24000 */ +#define A2D_AAC_IE_SAMP_FREQ_32000 0x0200 /* b15: 32000 */ +#define A2D_AAC_IE_SAMP_FREQ_44100 0x0100 /* b15: 441000 */ +#define A2D_AAC_IE_SAMP_FREQ_48000 0x0080 /* b15: 48000 */ +#define A2D_AAC_IE_SAMP_FREQ_64000 0x0040 /* b15: 64000 */ +#define A2D_AAC_IE_SAMP_FREQ_88200 0x0020 /* b15: 88200 */ +#define A2D_AAC_IE_SAMP_FREQ_96000 0x0010 /* b15: 96000 */ + + +#define A2D_AAC_IE_CHANNELS_MSK 0x0C /* b7-b6 channels supported */ +#define A2D_AAC_IE_CHANNELS_1 0x08 /* Channel 1 */ +#define A2D_AAC_IE_CHANNELS_2 0x04 /* Channel 2 */ + +#define A2D_AAC_IE_VBR_MSK 0x80 /* b7 variable bit rate */ +#define A2D_AAC_IE_VBR_SUPP 0x80 /* supported */ +#define A2D_AAC_IE_VBR_NOT_SUPP 0x00 /* supported */ + +#define A2D_AAC_IE_BIT_RATE_MSK 0x007FFFFF /* bit rate */ +#define A2D_AAC_IE_BIT_RATE 0x007FFFFF + + +#define BTIF_AAC_DEFAULT_BIT_RATE 0x000409B6 + +typedef struct { + INT16 s16SamplingFreq; /* 16k, 32k, 44.1k or 48k*/ + INT16 s16ChannelMode; /* mono, dual, streo or joint streo*/ + UINT16 u16BitRate; + UINT16 *ps16NextPcmBuffer; + UINT8 *pu8Packet; + UINT8 *pu8NextPacket; + UINT16 u16PacketLength; + void* encoder; +} A2D_AAC_ENC_PARAMS; + +/***************************************************************************** +** Type Definitions +*****************************************************************************/ + +/* AAC Codec Information data type */ +typedef struct +{ + UINT8 object_type; /* Object Type */ + UINT16 samp_freq; /* Sampling Frequency */ + UINT8 channels; /* Channels */ + UINT32 bit_rate; /* bit_rate */ + UINT8 vbr; /* variable bit rate */ +} tA2D_AAC_CIE; + + +/***************************************************************************** +** External Function Declarations +*****************************************************************************/ +#ifdef __cplusplus +extern "C" +{ +#endif +/****************************************************************************** +** +** Function A2D_BldAacInfo +** +** Description This function builds byte sequence for +** Aac Codec Capabilities. +** Input : media_type: Audio or MultiMedia. +** p_ie: AAC Codec Information Element +** +** Output : p_result: codec info. +** +** Returns A2D_SUCCESS if successful. +** Error otherwise. +******************************************************************************/ +extern tA2D_STATUS A2D_BldAacInfo(UINT8 media_type, tA2D_AAC_CIE *p_ie, UINT8 *p_result); + +/****************************************************************************** +** +** Function A2D_ParsAacInfo +** +** Description This function parse byte sequence for +** Aac Codec Capabilities. +** Input : p_info: input byte sequence. +** for_caps: True for getcap, false otherwise +** +** Output : p_ie: Aac codec information. +** +** Returns A2D_SUCCESS if successful. +** Error otherwise. +******************************************************************************/ +extern tA2D_STATUS A2D_ParsAacInfo(tA2D_AAC_CIE *p_ie, UINT8 *p_info, BOOLEAN for_caps); + +#ifdef __cplusplus +} +#endif + +#endif /* A2D_AAC_H */ |