summaryrefslogtreecommitdiffstats
path: root/stack/include/a2d_aac.h
diff options
context:
space:
mode:
Diffstat (limited to 'stack/include/a2d_aac.h')
-rw-r--r--stack/include/a2d_aac.h149
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 */