diff options
Diffstat (limited to 'stack/include/a2d_m12.h')
-rw-r--r-- | stack/include/a2d_m12.h | 145 |
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 */ |