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