git-svn-id: http://webrtc.googlecode.com/svn/trunk@4 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
126
modules/audio_coding/NetEQ/main/source/codec_db.h
Normal file
126
modules/audio_coding/NetEQ/main/source/codec_db.h
Normal file
@@ -0,0 +1,126 @@
|
||||
/*
|
||||
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Interface for the codec database.
|
||||
*/
|
||||
|
||||
#ifndef CODEC_DB_H
|
||||
#define CODEC_DB_H
|
||||
|
||||
#include "typedefs.h"
|
||||
|
||||
#include "webrtc_neteq.h"
|
||||
#include "codec_db_defines.h"
|
||||
#include "neteq_defines.h"
|
||||
|
||||
#if defined(NETEQ_48KHZ_WIDEBAND)
|
||||
#define NUM_CNG_CODECS 4
|
||||
#elif defined(NETEQ_32KHZ_WIDEBAND)
|
||||
#define NUM_CNG_CODECS 3
|
||||
#elif defined(NETEQ_WIDEBAND)
|
||||
#define NUM_CNG_CODECS 2
|
||||
#else
|
||||
#define NUM_CNG_CODECS 1
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
||||
WebRtc_Word16 position[NUM_TOTAL_CODECS];
|
||||
WebRtc_Word16 nrOfCodecs;
|
||||
|
||||
WebRtc_Word16 payloadType[NUM_CODECS];
|
||||
FuncDecode funcDecode[NUM_CODECS];
|
||||
FuncDecode funcDecodeRCU[NUM_CODECS];
|
||||
FuncDecodePLC funcDecodePLC[NUM_CODECS];
|
||||
FuncDecodeInit funcDecodeInit[NUM_CODECS];
|
||||
FuncAddLatePkt funcAddLatePkt[NUM_CODECS];
|
||||
FuncGetMDinfo funcGetMDinfo[NUM_CODECS];
|
||||
FuncGetPitchInfo funcGetPitch[NUM_CODECS];
|
||||
FuncUpdBWEst funcUpdBWEst[NUM_CODECS];
|
||||
FuncGetErrorCode funcGetErrorCode[NUM_CODECS];
|
||||
void * codec_state[NUM_CODECS];
|
||||
WebRtc_UWord16 codec_fs[NUM_CODECS];
|
||||
WebRtc_Word16 CNGpayloadType[NUM_CNG_CODECS];
|
||||
|
||||
} CodecDbInst_t;
|
||||
|
||||
#define NO_SPLIT -1 /* codec payload cannot be split */
|
||||
|
||||
typedef struct
|
||||
{
|
||||
WebRtc_Word16 deltaBytes;
|
||||
WebRtc_Word16 deltaTime;
|
||||
} SplitInfo_t;
|
||||
|
||||
/*
|
||||
* Resets the codec database.
|
||||
*/
|
||||
int WebRtcNetEQ_DbReset(CodecDbInst_t *inst);
|
||||
|
||||
/*
|
||||
* Adds a new codec to the database.
|
||||
*/
|
||||
int WebRtcNetEQ_DbAdd(CodecDbInst_t *inst, enum WebRtcNetEQDecoder codec,
|
||||
WebRtc_Word16 payloadType, FuncDecode funcDecode,
|
||||
FuncDecode funcDecodeRCU, FuncDecodePLC funcDecodePLC,
|
||||
FuncDecodeInit funcDecodeInit, FuncAddLatePkt funcAddLatePkt,
|
||||
FuncGetMDinfo funcGetMDinfo, FuncGetPitchInfo funcGetPitch,
|
||||
FuncUpdBWEst funcUpdBWEst, FuncGetErrorCode funcGetErrorCode,
|
||||
void* codec_state, WebRtc_UWord16 codec_fs);
|
||||
|
||||
/*
|
||||
* Removes a codec from the database.
|
||||
*/
|
||||
int WebRtcNetEQ_DbRemove(CodecDbInst_t *inst, enum WebRtcNetEQDecoder codec);
|
||||
|
||||
/*
|
||||
* Get the decoder function pointers for a codec.
|
||||
*/
|
||||
int WebRtcNetEQ_DbGetPtrs(CodecDbInst_t *inst, enum WebRtcNetEQDecoder,
|
||||
CodecFuncInst_t *ptr_inst);
|
||||
|
||||
/*
|
||||
* Returns payload number given a codec identifier.
|
||||
*/
|
||||
|
||||
int WebRtcNetEQ_DbGetPayload(CodecDbInst_t *inst, enum WebRtcNetEQDecoder codecID);
|
||||
|
||||
/*
|
||||
* Returns codec identifier given a payload number.
|
||||
*/
|
||||
|
||||
int WebRtcNetEQ_DbGetCodec(CodecDbInst_t *inst, int payloadType);
|
||||
|
||||
/*
|
||||
* Extracts the Payload Split information of the codec with the specified payloadType.
|
||||
*/
|
||||
|
||||
int WebRtcNetEQ_DbGetSplitInfo(SplitInfo_t *inst, enum WebRtcNetEQDecoder codecID,
|
||||
int codedsize);
|
||||
|
||||
/*
|
||||
* Returns 1 if codec is multiple description type, 0 otherwise.
|
||||
*/
|
||||
int WebRtcNetEQ_DbIsMDCodec(enum WebRtcNetEQDecoder codecID);
|
||||
|
||||
/*
|
||||
* Returns 1 if payload type is registered as a CNG codec, 0 otherwise.
|
||||
*/
|
||||
int WebRtcNetEQ_DbIsCNGPayload(CodecDbInst_t *inst, int payloadType);
|
||||
|
||||
/*
|
||||
* Return the sample rate for the codec with the given payload type, 0 if error.
|
||||
*/
|
||||
WebRtc_UWord16 WebRtcNetEQ_DbGetSampleRate(CodecDbInst_t *inst, int payloadType);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user