summaryrefslogtreecommitdiffstats
path: root/stack/include/a2d_m12.h
diff options
context:
space:
mode:
Diffstat (limited to 'stack/include/a2d_m12.h')
-rw-r--r--stack/include/a2d_m12.h145
1 files changed, 145 insertions, 0 deletions
diff --git a/stack/include/a2d_m12.h b/stack/include/a2d_m12.h
new file mode 100644
index 0000000..2cc5ef9
--- /dev/null
+++ b/stack/include/a2d_m12.h
@@ -0,0 +1,145 @@
+/*****************************************************************************
+**
+** Name: a2d_m12.h
+**
+** Description:Interface to MPEG-1, 2 Audio
+**
+** Copyright (c) 2000-2004, WIDCOMM Inc., All Rights Reserved.
+** WIDCOMM Bluetooth Core. Proprietary and confidential.
+**
+*****************************************************************************/
+#ifndef A2D_M12_H
+#define A2D_M12_H
+
+/*****************************************************************************
+** Constants
+*****************************************************************************/
+/* the length of the MPEG_1, 2 Audio Media Payload header. */
+#define A2D_M12_MPL_HDR_LEN 4
+
+/* the LOSC of MPEG_1, 2 Audio media codec capabilitiy */
+#define A2D_M12_INFO_LEN 6
+
+/* for Codec Specific Information Element */
+#define A2D_M12_IE_LAYER_MSK 0xE0 /* b7-b5 layer */
+#define A2D_M12_IE_LAYER1 0x80 /* b7: layer1 (mp1) */
+#define A2D_M12_IE_LAYER2 0x40 /* b6: layer2 (mp2) */
+#define A2D_M12_IE_LAYER3 0x20 /* b5: layer3 (mp3) */
+
+#define A2D_M12_IE_CRC_MSK 0x10 /* b4: CRC */
+
+#define A2D_M12_IE_CH_MD_MSK 0x0F /* b3-b0 channel mode */
+#define A2D_M12_IE_CH_MD_MONO 0x08 /* b3: mono */
+#define A2D_M12_IE_CH_MD_DUAL 0x04 /* b2: dual */
+#define A2D_M12_IE_CH_MD_STEREO 0x02 /* b1: stereo */
+#define A2D_M12_IE_CH_MD_JOINT 0x01 /* b0: joint stereo */
+
+#define A2D_M12_IE_MPF_MSK 0x40 /* b6: MPF */
+
+#define A2D_M12_IE_SAMP_FREQ_MSK 0x3F /* b5-b0 sampling frequency */
+#define A2D_M12_IE_SAMP_FREQ_16 0x20 /* b5:16 kHz */
+#define A2D_M12_IE_SAMP_FREQ_22 0x10 /* b4:22.05kHz */
+#define A2D_M12_IE_SAMP_FREQ_24 0x08 /* b3:24 kHz */
+#define A2D_M12_IE_SAMP_FREQ_32 0x04 /* b2:32 kHz */
+#define A2D_M12_IE_SAMP_FREQ_44 0x02 /* b1:44.1kHz */
+#define A2D_M12_IE_SAMP_FREQ_48 0x01 /* b0:48 kHz */
+
+#define A2D_M12_IE_VBR_MSK 0x80 /* b7: VBR */
+
+#define A2D_M12_IE_BITRATE_MSK 0x7FFF /* b6-b0 of octect 2, all of octect3*/
+#define A2D_M12_IE_BITRATE_0 0x0001 /* 0000 */
+#define A2D_M12_IE_BITRATE_1 0x0002 /* 0001 */
+#define A2D_M12_IE_BITRATE_2 0x0004 /* 0010 */
+#define A2D_M12_IE_BITRATE_3 0x0008 /* 0011 */
+#define A2D_M12_IE_BITRATE_4 0x0010 /* 0100 */
+#define A2D_M12_IE_BITRATE_5 0x0020 /* 0101 */
+#define A2D_M12_IE_BITRATE_6 0x0040 /* 0110 */
+#define A2D_M12_IE_BITRATE_7 0x0080 /* 0111 */
+#define A2D_M12_IE_BITRATE_8 0x0100 /* 1000 */
+#define A2D_M12_IE_BITRATE_9 0x0200 /* 1001 */
+#define A2D_M12_IE_BITRATE_10 0x0400 /* 1010 */
+#define A2D_M12_IE_BITRATE_11 0x0800 /* 1011 */
+#define A2D_M12_IE_BITRATE_12 0x1000 /* 1100 */
+#define A2D_M12_IE_BITRATE_13 0x2000 /* 1101 */
+#define A2D_M12_IE_BITRATE_14 0x4000 /* 1110 */
+
+#define A2D_BLD_M12_PML_HDR(p_dst,frag_offset) {UINT16_TO_BE_STREAM(p_dst, 0); \
+ UINT16_TO_BE_STREAM(p_dst, frag_offset); }
+
+#define A2D_PARS_M12_PML_HDR(p_src,frag_offset) {BE_STREAM_TO_UINT16(frag_offset, p_src); \
+ BE_STREAM_TO_UINT16(frag_offset, p_src); }
+
+
+/*****************************************************************************
+** Type Definitions
+*****************************************************************************/
+
+/* data type for the MPEG-1, 2 Audio Codec Information Element*/
+typedef struct
+{
+ UINT8 layer; /* layers */
+ BOOLEAN crc; /* Support of CRC protection or not */
+ UINT8 ch_mode; /* Channel mode */
+ UINT8 mpf; /* 1, if MPF-2 is supported. 0, otherwise */
+ UINT8 samp_freq; /* Sampling frequency */
+ BOOLEAN vbr; /* Variable Bit Rate */
+ UINT16 bitrate; /* Bit rate index */
+} tA2D_M12_CIE;
+
+/*****************************************************************************
+** External Function Declarations
+*****************************************************************************/
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+/******************************************************************************
+**
+** Function A2D_BldM12Info
+**
+** Description This function is called by an application to build
+** the MPEG-1, 2 Audio Media Codec Capabilities byte sequence
+** beginning from the LOSC octet.
+** Input Parameters:
+** media_type: Indicates Audio, or Multimedia.
+**
+** p_ie: The MPEG-1, 2 Audio Codec Information Element
+** information.
+**
+** Output Parameters:
+** p_result: the resulting codec info byte sequence.
+**
+** Returns A2D_SUCCESS if function execution succeeded.
+** Error status code, otherwise.
+******************************************************************************/
+A2D_API extern tA2D_STATUS A2D_BldM12Info(UINT8 media_type, tA2D_M12_CIE *p_ie,
+ UINT8 *p_result);
+
+/******************************************************************************
+**
+** Function A2D_ParsM12Info
+**
+** Description This function is called by an application to parse
+** the MPEG-1, 2 Audio Media Codec Capabilities byte sequence
+** beginning from the LOSC octet.
+** Input Parameters:
+** p_info: the byte sequence to parse.
+**
+** for_caps: TRUE, if the byte sequence is for get capabilities
+** response.
+**
+** Output Parameters:
+** p_ie: The MPEG-1, 2 Audio Codec Information Element
+** information.
+**
+** Returns A2D_SUCCESS if function execution succeeded.
+** Error status code, otherwise.
+******************************************************************************/
+A2D_API extern tA2D_STATUS A2D_ParsM12Info(tA2D_M12_CIE *p_ie, UINT8 *p_info,
+ BOOLEAN for_caps);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* A2D_M12_H */