139 lines
3.5 KiB
C++
139 lines
3.5 KiB
C++
/*
|
|
* 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.
|
|
*/
|
|
|
|
#ifndef ACM_CODEC_DATABASE_H
|
|
#define ACM_CODEC_DATABASE_H
|
|
|
|
#include "acm_generic_codec.h"
|
|
#include "common_types.h"
|
|
#include "typedefs.h"
|
|
#include "webrtc_neteq.h"
|
|
|
|
namespace webrtc
|
|
{
|
|
|
|
// These might need to be increased if adding a new codec to
|
|
// the database
|
|
#define MAX_NR_OF_CODECS 52
|
|
#define MAX_NR_OF_PACSIZES 6
|
|
#define VERSION_SIZE 1000
|
|
|
|
class ACMCodecDB
|
|
{
|
|
public:
|
|
static WebRtc_Word16 Codec(
|
|
WebRtc_Word16 listnr,
|
|
CodecInst* codec_inst);
|
|
|
|
|
|
static WebRtc_Word16 CodecNumber(
|
|
const CodecInst* codec_inst,
|
|
WebRtc_Word16& mirrorID,
|
|
WebRtc_Word8* errMessage,
|
|
WebRtc_Word16 maxErrMsgLenByte);
|
|
|
|
static WebRtc_Word16 CodecNumber(
|
|
const CodecInst* codec_inst,
|
|
WebRtc_Word16& mirrorID);
|
|
|
|
static WebRtc_Word16 ReceiverCodecNumber(
|
|
const CodecInst& codecInst,
|
|
WebRtc_Word16& mirrorID);
|
|
|
|
static WebRtc_Word16 NoOfCodecs();
|
|
|
|
static WebRtc_Word16 NoNetEqDecoders();
|
|
|
|
static WebRtc_Word32 CodecFreq(
|
|
WebRtc_Word16 listnr);
|
|
|
|
static WebRtc_Word16 BasicCodingBlock(
|
|
WebRtc_Word16 listnr);
|
|
|
|
static enum WebRtcNetEQDecoder* NetEqDecoders();
|
|
|
|
static WebRtc_Word16 CodecsVersion(
|
|
WebRtc_Word8* version,
|
|
WebRtc_UWord32& remainingBufferInBytes,
|
|
WebRtc_UWord32& position);
|
|
|
|
static WebRtc_Word16 MirrorID(
|
|
const WebRtc_Word16 codecID);
|
|
|
|
static ACMGenericCodec* CreateCodecInstance(
|
|
const CodecInst* codecInst);
|
|
|
|
static void initACMCodecDB();
|
|
|
|
static bool IsRateValid(
|
|
const WebRtc_Word16 listNr,
|
|
const WebRtc_Word32 rate);
|
|
|
|
static bool IsISACRateValid(
|
|
const WebRtc_Word32 rate);
|
|
|
|
static bool IsILBCRateValid(
|
|
const WebRtc_Word32 rate,
|
|
const WebRtc_Word16 frameSizeSamples);
|
|
|
|
static WebRtc_Word16 ValidPayloadType(
|
|
const int payloadType);
|
|
|
|
static WebRtc_Word16
|
|
pcm16b,
|
|
pcm16bwb,
|
|
pcm16bswb32,
|
|
pcm16bswb48,
|
|
pcmu,
|
|
pcma,
|
|
ilbc,
|
|
gsmAMR,
|
|
gsmAMRWB,
|
|
g722,
|
|
g722_1_32,
|
|
g722_1_24,
|
|
g722_1_16,
|
|
g722_1C_48,
|
|
g722_1C_32,
|
|
g722_1C_24,
|
|
g729,
|
|
isac,
|
|
isacswb,
|
|
gsmfr,
|
|
speex8,
|
|
speex16,
|
|
cnNB,
|
|
cnWB,
|
|
cnSWB,
|
|
avt,
|
|
red;
|
|
|
|
static WebRtc_Word16 _noOfCodecs;
|
|
static WebRtc_Word16 _noNetEqDecoders;
|
|
static WebRtc_Word16 _noPayloads;
|
|
|
|
// Information about the supported codecs
|
|
static CodecInst _mycodecs[MAX_NR_OF_CODECS];
|
|
static enum WebRtcNetEQDecoder _netEqDecoders[MAX_NR_OF_CODECS];
|
|
static WebRtc_UWord16 _allowedPacSizesSmpl[MAX_NR_OF_CODECS][MAX_NR_OF_PACSIZES];
|
|
static WebRtc_UWord8 _nrOfAllowedPacSizes[MAX_NR_OF_CODECS];
|
|
static WebRtc_UWord16 _basicCodingBlockSmpl[MAX_NR_OF_CODECS];
|
|
static WebRtc_UWord16 _channelSupport[MAX_NR_OF_CODECS];
|
|
|
|
private:
|
|
static bool _isInitiated;
|
|
static WebRtc_Word8 _versions[VERSION_SIZE];
|
|
static WebRtc_UWord32 _versionStringSize;
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif //ACM_CODEC_DATABASE_H
|