1b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu/******************************************************************************
2b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
3b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  Copyright (C) 2001-2012 Broadcom Corporation
4b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
5b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  Licensed under the Apache License, Version 2.0 (the "License");
6b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  you may not use this file except in compliance with the License.
7b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  You may obtain a copy of the License at:
8b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
9b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  http://www.apache.org/licenses/LICENSE-2.0
10b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
11b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  Unless required by applicable law or agreed to in writing, software
12b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  distributed under the License is distributed on an "AS IS" BASIS,
13b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  See the License for the specific language governing permissions and
15b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  limitations under the License.
16b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
17b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu ******************************************************************************/
18b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu
19b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu/******************************************************************************
20b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
21b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  This file contains codec definitions from Widcomm's Universal Embedded
22b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *  Drivers API.
23b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu *
24b58ba0e89a3767e6174c42d3e90540d1eae10f81Evan Chu ******************************************************************************/
2545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
2645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#ifndef UCODEC_H
2745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_H
2845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
2945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#include "bt_target.h"
3045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#ifdef __cplusplus
3145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chuextern "C" {
3245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#endif
3345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
3445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
3545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/*******************************************************************************
3645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Codec APIs
3745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu*******************************************************************************/
3845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
3945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Codec IDs ****/
4045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_ID_1             0
4145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_ID_2             1
4245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_ID_3             2
4345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_ID_4             3
4445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_NUMBER           4
4545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
4645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUCODEC_ID;
4745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
4845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Status ****/
4945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_SUCCESS              0x00
5045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_TX_DONE              0x01
5145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_RX_READY             0x02
5245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_FLOW_CTRL_ON         0x03
5345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_FLOW_CTRL_OFF        0x04
5445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_OVERFLOW             0x05
5545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_UNSUPORTED_CNF       0x06
5645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_WRONG_PARAM          0x07
5745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_NOT_CONFIGURED       0x08
5845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_OUT_OF_MEMORY        0x09
59e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu#define UCODEC_GENERIC_ERROR        0x0a
60e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu#define UCODEC_RECOVERABLE_ERROR    0x0b
61e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu#define UCODEC_UNRECOVERABLE_ERROR  0x0c
62e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu#define UCODEC_LOW_LEVEL_DRIVER_ERROR   (0x0d)
63e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu
6445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUCODEC_STATUS;
6545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
6645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Media type ****/
6745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_MEDIA_TYPE_AUDIO 0
6845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_MEDIA_TYPE_VIDEO 1
6945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_MEDIA_TYPE_MULTI 2
7045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
7145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUCODEC_MEDIA_TYPE;
7245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
7345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Audio Codec type ****/
7445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_AUDIO_SBC        0
7545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_AUDIO_M12_LAYER1 1   /* layer1 (mp1) */
7645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_AUDIO_M12_LAYER2 2   /* layer2 (mp2) */
7745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_AUDIO_M12_LAYER3 3   /* layer3 (mp3) */
7845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_AUDIO_M24_2LC    4   /* MPEG-2 AAC LC */
7945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_AUDIO_M24_4LC    5   /* MPEG-4 AAC LC */
8045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_AUDIO_M24_4LTP   6   /* MPEG-4 AAC LTP */
8145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_AUDIO_M24_4S     7   /* MPEG-4 AAC scalable */
8245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_AUDIO_VOLUME     8   /* Volume settings */
8345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_AUDIO_BALANCE    9   /* Balance settings */
8445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
8545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUCODEC_AUDIO_FEAT_TYPE;
8645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
8745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Video Codec type -> TODO ****/
8845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/*TBD*/
8945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
9045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUCODEC_VIDEO_FEAT_TYPE;
9145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
9245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** SBC sample frequency ****/
9345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_SBC_SMP_FREQ_16    0  /* 16 */
9445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_SBC_SMP_FREQ_32    1  /* 23 */
9545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_SBC_SMP_FREQ_44    2  /* 44.1 */
9645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_SBC_SMP_FREQ_48    3  /* 48 */
9745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
9845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUCODEC_SBC_SMP_FREQ;
9945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
10045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** SBC sample frequency ****/
101e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu#define UCODEC_SBC_SUBBAND_4    4
102e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu#define UCODEC_SBC_SUBBAND_8    8
10345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
10445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUCODEC_SBC_SUBBAND;
10545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Allocation method ****/
10645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_SBC_ALLOC_MD_S   0   /* SNR */
10745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_SBC_ALLOC_MD_L   1   /* loundess */
10845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
10945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUCODEC_SBC_ALLOC_MD;
11045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
11145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** MPEG sample frequency ****/
11245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M12_SMP_FREQ_16    0   /* 16 */
11345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M12_SMP_FREQ_22    1   /* 22 */
11445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M12_SMP_FREQ_24    2  /* 24 */
11545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M12_SMP_FREQ_32    3  /* 32 */
11645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M12_SMP_FREQ_44    4  /* 44 */
11745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M12_SMP_FREQ_48    5  /* 48 */
11845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
11945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUCODEC_M12_SMP_FREQ;
12045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
12145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Channel mode ****/
122e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu#define UCODEC_CHN_MONO            0
123e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu#define UCODEC_CHN_DUAL            1
124e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu#define UCODEC_CHN_STEREO          2
125e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu#define UCODEC_CHN_JOINT_STEREO    3
12645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
12745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUCODEC_CH_MODE;
12845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Audio Codec type ****/
12945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M24_SMP_FREQ_8     0   /*  8 */
13045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M24_SMP_FREQ_11    1   /* 11 */
13145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M24_SMP_FREQ_12    2   /* 12 */
13245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M24_SMP_FREQ_16    3   /* 16 */
13345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M24_SMP_FREQ_22    4   /* 22.05 */
13445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M24_SMP_FREQ_24    5   /* 24 */
13545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M24_SMP_FREQ_32    6   /* 32 */
13645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M24_SMP_FREQ_44    7   /* 44.1 */
13745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M24_SMP_FREQ_48    8   /* 48 */
13845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M24_SMP_FREQ_64    9   /* 64 */
13945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M24_SMP_FREQ_88    10  /* 88 */
14045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#define UCODEC_M24_SMP_FREQ_96    11  /* 96 */
14145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
14245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef UINT8 tUCODEC_M24_SMP_FREQ;
14345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
14445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/**** Codec configuration structure ****/
14545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef struct tUCODEC_CNF_SBC_TAG
14645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu{
14745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_SBC_SMP_FREQ    SampleFreq;
148e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu    tUCODEC_CH_MODE         ChannelMode;
14945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT16                  Offset;     /* GKI buffer based offset for UCODEC_ReadBuf */
15045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT16                  MtuSize;    /* Max buffer len for UCODEC_ReadBuf*/
15145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT8                   PoolId;     /* GKI pool ID for UCODEC_ReadBuf */
15245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT8                   NumBlock;   /* Number of block in block unit : 4 blocks 8 blocks 12 blocks 16 blocks are the possible value */
15345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT8                   Subband;
15445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_SBC_ALLOC_MD    AllocMthd;
15545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT8                   MinBitPool;
15645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT8                   MaxBitPool;
15745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu} tUCODEC_CNF_SBC;
15845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
15945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef struct tUCODEC_CNF_M12_TAG
16045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu{
16145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_CH_MODE         ChannelMode; /* Mono, Dual, stereo, joint stereo */
16245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_M12_SMP_FREQ    SampleFreq; /* Sample freq: 16, 22, 24, 32, 44, 48 */
16345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT16                  BitRate;    /* Bit rate in bit per sec */
16445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT16                  Offset;     /* GKI buffer based offset for UCODEC_ReadBuf */
16545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT16                  MtuSize;    /* Max buffer len for UCODEC_ReadBuf*/
16645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT8                   PoolId;     /* GKI pool ID for UCODEC_ReadBuf */
16745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    BOOLEAN                 VBR;        /* Variable Bit Rate */
16845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    BOOLEAN                 CRC_On;     /* CRC error detection */
16945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    BOOLEAN                 MPF;        /* Media payload format */
17045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu} tUCODEC_CNF_M12;
17145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
17245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef struct tUCODEC_CNF_M24_TAG
17345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu{
17445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_M24_SMP_FREQ    SampleFreq; /* Sample freq: 8, 11, 12, 16, 22.05, 24, 32, 44.1, 48, 64, 88, 96 */
17545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT32                  BitRate;    /* Bit rate */
17645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT16                  Offset;     /* GKI buffer based offset for UCODEC_ReadBuf */
17745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT16                  MtuSize;    /* Max buffer len for UCODEC_ReadBuf*/
17845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT8                   PoolId;     /* GKI pool ID for UCODEC_ReadBuf */
17945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT8                   Chanels;    /* 1 or 2 chanels */
18045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu} tUCODEC_CNF_M24;
18145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
18245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
18345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef union tUCODEC_CODEC_TYPE_TAG
18445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu{
18545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_AUDIO_FEAT_TYPE AudioType;
18645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_VIDEO_FEAT_TYPE VideoType;
18745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu} tUCODEC_CODEC_TYPE;
18845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
18945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef union tUCODEC_FEATURE_TAG
19045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu{
19145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    /* Add here the audio feature structure */
19245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_CNF_SBC SBCConfig;
19345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_CNF_M12 M12Config;
19445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_CNF_M24 M24Config;
19545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT8           Volume;     /* 0 to mute. 0xFF for the max volume */
196e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu    UINT8           Balance;    /* 0->100% right, 255->100% left */
19745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    /* Add here the video feature structure */
19845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    /* TBD */
19945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu} tUCODEC_FEATURE;
20045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
20145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef struct tUCODEC_CNF_TAG
20245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu{
20345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_MEDIA_TYPE  MediaType;
20445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_CODEC_TYPE  Type;
20545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    tUCODEC_FEATURE     Feature;
20645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu} tUCODEC_CNF;
20745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
20845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef struct tUCODEC_BUF_INFO_TAG
20945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu{
21045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT8       NumOfFrames;
21145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu    UINT32      TimesStamp;
21245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu} tUCODEC_BUF_INFO;
21345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
21445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
21545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/******************************************************************************
21645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
21745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Function         tUCODEC_CBACK_PTR
21845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
219e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Description      This call back report CODEC indication.
220e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**                  It report codec error as well as flow onfrol indication.
22145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
22245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Input : CodecId: Id of the codec that calls this call back.
223e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**                          Status: ->UCODEC_FLOW_CTRL_OFF if the Tx Q just
22445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                                  went below the low watermark
225e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**                                  ->UCODEC_RX_READY if data are ready to be
226e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**                                  read. This olny hapens when the Rx Q was
22745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                                  empty before receiving data.
228e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**                                  ->UCODEC_INTERNAL_ERROR if something went
22945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                                  wrong with the driver
23045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
23145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Output Parameters : None
23245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
23345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Returns          None.
234e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**
23545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu******************************************************************************/
23645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chutypedef void (* tUCODEC_CBACK_PTR)(tUCODEC_ID, tUCODEC_STATUS);
23745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
23845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/*******************************************************************************
23945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Function Prototypes
24045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu*******************************************************************************/
24145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
24245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/******************************************************************************
24345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
24445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Function         UCODEC_Init
24545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
246e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Description      Startup initialisation function. This function is called
247e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**                  before any orther function of UCODEC it initialize UCODEC
24845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  internal structure an the external codec.
24945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
25045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Input : CodecId: Id of the codec to perform the operation on.
25145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
25245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Output Parameters : None
25345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
254e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Returns          UCODEC_SUCCESS if The action was performed with sucess.
25545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Error code else.
256e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**
25745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu******************************************************************************/
25845faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuBT_API extern tUCODEC_STATUS    UCODEC_Init       (void *);
25945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
26045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/******************************************************************************
26145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
26245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Function         UCODEC_Configure
26345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
264e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Description      Initialise the CODEC for a particular stream.
265e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**
26645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
26745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Input : CodecId: Id of the codec to perform the operation on.
26845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                          CbackPrt: Call back pointer for codec feedback.
26945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                          pConfig: Pointer on a codec configuration structure.
27045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
27145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Output Parameters : None
27245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
273e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Returns          UCODEC_SUCCESS if The action was performed with sucess.
274e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**
27545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu******************************************************************************/
27645faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuBT_API extern tUCODEC_STATUS    UCODEC_Configure  (tUCODEC_ID, tUCODEC_CBACK_PTR, tUCODEC_CNF *);
27745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
27845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/******************************************************************************
27945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
28045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Function         UCODEC_FlushTx
28145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
282e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Description      Fluch Tx buffer Q.
28345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
28445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Input : CodecId: Id of the codec to perform the operation on.
28545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
28645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Output Parameters : None
28745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
288e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Returns          UCODEC_SUCCESS if The action was performed with sucess.
28945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Error code else.
290e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**
29145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu******************************************************************************/
29245faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuBT_API extern tUCODEC_STATUS    UCODEC_FlushTx      (tUCODEC_ID);
29345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
29445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/******************************************************************************
29545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
29645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Function         UCODEC_FlushRx
29745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
298e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Description      Fluch Rx buffer Q.
29945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
30045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Input : CodecId: Id of the codec to perform the operation on.
30145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
30245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Output Parameters : None
30345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
304e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Returns          UCODEC_SUCCESS if The action was performed with sucess.
30545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Error code else.
306e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**
30745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu******************************************************************************/
30845faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuBT_API extern tUCODEC_STATUS    UCODEC_FlushRx      (tUCODEC_ID);
30945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
31045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/******************************************************************************
31145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
31245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Function         UCODEC_WriteBuf
31345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
314e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Description      Send a buffer to the codec.
31545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
31645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Input : CodecId: Id of the codec to perform the operation on.
31745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                          pBuf: Pointer onto the GKI buffer to be send to the CODEC.
31845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
31945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Output Parameters : None
32045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
321e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Returns          UCODEC_SUCCESS if The action was performed with sucess.
32245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  UCODEC_FLOW_CTRL_ON if The codec buffer Q had reach a UCODEC_HIGH_WM
323e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**                                      watermark. The buffer is queued
324e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**                  UCODEC_OVERFLOW if The codec buffer Q had reach a critical
32545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                                     watermark. The buffer is dropped.
326e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**
32745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu******************************************************************************/
32845faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuBT_API extern tUCODEC_STATUS    UCODEC_WriteBuf   (tUCODEC_ID, BT_HDR *);
32945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
33045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/******************************************************************************
33145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
33245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Function         UCODEC_ReadBuf
33345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
334e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Description      Get a buffer from the codec.
33545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
33645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Input : CodecId: Id of the codec to perform the operation on.
33745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
33845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Output Parameters : None
33945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
34045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Returns          Pointer on the GKI buffer. NULL if the Rx Q is empty
341e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**
34245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu******************************************************************************/
34345faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuBT_API extern tUCODEC_STATUS  UCODEC_ReadBuf    (tUCODEC_ID, BT_HDR **, tUCODEC_BUF_INFO *);
34445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
34545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/******************************************************************************
34645faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
34745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Function         UCODEC_Close
34845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
34945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Description      This function is called to put the codec in low power mode
350e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**
35145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
35245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Input : CodecId: Id of the codec to perform the operation on.
35345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
35445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Output Parameters : None
35545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
356e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Returns          UCODEC_SUCCESS : The action was performed with sucess.
35745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Error code else.
358e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**
35945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu******************************************************************************/
36045faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuBT_API extern tUCODEC_STATUS   UCODEC_Close   (tUCODEC_ID);
36145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
36245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu/******************************************************************************
36345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
36445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu** Function         UCODEC_Open
36545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
366e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Description      This function is called to resume the codec from low power
367e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**                  mode after UCODEC_Close had been called. It will put the
36845faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  codec in the state it was before UCODEC_Close being called.
36945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
37045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Input : CodecId: Id of the codec to perform the operation on.
37145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
37245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Output Parameters : None
37345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**
374e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu** Returns          UCODEC_SUCCESS : The action was performed with sucess.
37545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu**                  Error code else.
376e29968cf3e053557a9c2efc5a7a42d0767c51d9dEvan Chu**
37745faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu******************************************************************************/
37845faad0ff5deeb0c676356345d99398cc4ab695aEvan ChuBT_API extern tUCODEC_STATUS   UCODEC_Open     (tUCODEC_ID);
37945faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
38045faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#ifdef __cplusplus
38145faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu};
38245faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#endif
38345faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
38445faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu
38545faad0ff5deeb0c676356345d99398cc4ab695aEvan Chu#endif /* UCODEC_H */
386