- initial work to support EVS
This commit is contained in:
parent
7ba094c8a8
commit
8c16c048dc
|
|
@ -56,6 +56,7 @@ set (rtphone_libs libs)
|
||||||
set (rtphone_engine engine)
|
set (rtphone_engine engine)
|
||||||
|
|
||||||
set (USE_AMR_CODEC OFF CACHE BOOL "Use AMR codec. Requires libraries.")
|
set (USE_AMR_CODEC OFF CACHE BOOL "Use AMR codec. Requires libraries.")
|
||||||
|
set (USE_EVS_CODEC OFF CACHE BOOL "Use EVS codec.")
|
||||||
set (OPENSSL_SSL ssl CACHE STRING "Pointer to ssl library")
|
set (OPENSSL_SSL ssl CACHE STRING "Pointer to ssl library")
|
||||||
set (OPENSSL_CRYPTO crypto CACHE STRING "Pointer to crypto library")
|
set (OPENSSL_CRYPTO crypto CACHE STRING "Pointer to crypto library")
|
||||||
|
|
||||||
|
|
@ -78,6 +79,7 @@ set (RTPHONE_SOURCES
|
||||||
${rtphone_engine}/media/MT_AudioCodec.cpp
|
${rtphone_engine}/media/MT_AudioCodec.cpp
|
||||||
${rtphone_engine}/media/MT_SevanaMos.cpp
|
${rtphone_engine}/media/MT_SevanaMos.cpp
|
||||||
${rtphone_engine}/media/MT_AmrCodec.cpp
|
${rtphone_engine}/media/MT_AmrCodec.cpp
|
||||||
|
${rtphone_engine}/media/MT_EvsCodec.cpp
|
||||||
${rtphone_engine}/media/MT_CngHelper.cpp
|
${rtphone_engine}/media/MT_CngHelper.cpp
|
||||||
${rtphone_engine}/agent/Agent_Impl.cpp
|
${rtphone_engine}/agent/Agent_Impl.cpp
|
||||||
${rtphone_engine}/agent/Agent_AudioManager.cpp
|
${rtphone_engine}/agent/Agent_AudioManager.cpp
|
||||||
|
|
@ -98,6 +100,7 @@ add_subdirectory(${rtphone_libs}/resiprocate)
|
||||||
add_subdirectory(${rtphone_libs}/ice)
|
add_subdirectory(${rtphone_libs}/ice)
|
||||||
add_subdirectory(${rtphone_libs}/jrtplib/src)
|
add_subdirectory(${rtphone_libs}/jrtplib/src)
|
||||||
add_subdirectory(${rtphone_libs}/libg729)
|
add_subdirectory(${rtphone_libs}/libg729)
|
||||||
|
add_subdirectory(${rtphone_libs}/libevs)
|
||||||
add_subdirectory(${rtphone_libs}/libgsm)
|
add_subdirectory(${rtphone_libs}/libgsm)
|
||||||
add_subdirectory(${rtphone_libs}/gsmhr)
|
add_subdirectory(${rtphone_libs}/gsmhr)
|
||||||
add_subdirectory(${rtphone_libs}/g722)
|
add_subdirectory(${rtphone_libs}/g722)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,157 @@
|
||||||
|
#ifndef MT_EVSCODEC_H
|
||||||
|
#define MT_EVSCODEC_H
|
||||||
|
|
||||||
|
#include "../config.h"
|
||||||
|
#include <map>
|
||||||
|
#include "MT_Codec.h"
|
||||||
|
#include "../helper/HL_Pointer.h"
|
||||||
|
|
||||||
|
#if defined(USE_EVS_CODEC)
|
||||||
|
namespace MT
|
||||||
|
{
|
||||||
|
struct AmrCodecConfig
|
||||||
|
{
|
||||||
|
bool mIuUP;
|
||||||
|
bool mOctetAligned;
|
||||||
|
int mPayloadType;
|
||||||
|
};
|
||||||
|
|
||||||
|
class AmrNbCodec : public Codec
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
void* mEncoderCtx;
|
||||||
|
void* mDecoderCtx;
|
||||||
|
AmrCodecConfig mConfig;
|
||||||
|
unsigned mCurrentDecoderTimestamp;
|
||||||
|
int mSwitchCounter;
|
||||||
|
int mPreviousPacketLength;
|
||||||
|
|
||||||
|
public:
|
||||||
|
class CodecFactory: public Factory
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CodecFactory(const AmrCodecConfig& config);
|
||||||
|
|
||||||
|
const char* name() override;
|
||||||
|
int samplerate() override;
|
||||||
|
int payloadType() override;
|
||||||
|
|
||||||
|
#ifdef USE_RESIP_INTEGRATION
|
||||||
|
void updateSdp(resip::SdpContents::Session::Medium::CodecContainer& codecs, SdpDirection direction) override;
|
||||||
|
int processSdp(const resip::SdpContents::Session::Medium::CodecContainer& codecs, SdpDirection direction) override;
|
||||||
|
void create(CodecMap& codecs) override;
|
||||||
|
#endif
|
||||||
|
PCodec create() override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
AmrCodecConfig mConfig;
|
||||||
|
};
|
||||||
|
|
||||||
|
AmrNbCodec(const AmrCodecConfig& config);
|
||||||
|
|
||||||
|
virtual ~AmrNbCodec();
|
||||||
|
const char* name() override;
|
||||||
|
int pcmLength() override;
|
||||||
|
int rtpLength() override;
|
||||||
|
int frameTime() override;
|
||||||
|
int samplerate() override;
|
||||||
|
int encode(const void* input, int inputBytes, void* output, int outputCapacity) override;
|
||||||
|
int decode(const void* input, int inputBytes, void* output, int outputCapacity) override;
|
||||||
|
int plc(int lostFrames, void* output, int outputCapacity) override;
|
||||||
|
int getSwitchCounter() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class AmrWbCodec : public Codec
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
void* mEncoderCtx;
|
||||||
|
void* mDecoderCtx;
|
||||||
|
AmrCodecConfig mConfig;
|
||||||
|
uint64_t mCurrentDecoderTimestamp;
|
||||||
|
int mSwitchCounter;
|
||||||
|
int mPreviousPacketLength;
|
||||||
|
|
||||||
|
public:
|
||||||
|
class CodecFactory: public Factory
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CodecFactory(const AmrCodecConfig& config);
|
||||||
|
|
||||||
|
const char* name() override;
|
||||||
|
int samplerate() override;
|
||||||
|
int payloadType() override;
|
||||||
|
|
||||||
|
#ifdef USE_RESIP_INTEGRATION
|
||||||
|
void updateSdp(resip::SdpContents::Session::Medium::CodecContainer& codecs, SdpDirection direction) override;
|
||||||
|
int processSdp(const resip::SdpContents::Session::Medium::CodecContainer& codecs, SdpDirection direction) override;
|
||||||
|
void create(CodecMap& codecs) override;
|
||||||
|
#endif
|
||||||
|
PCodec create() override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
AmrCodecConfig mConfig;
|
||||||
|
};
|
||||||
|
|
||||||
|
AmrWbCodec(const AmrCodecConfig& config);
|
||||||
|
virtual ~AmrWbCodec();
|
||||||
|
|
||||||
|
const char* name() override;
|
||||||
|
int pcmLength() override;
|
||||||
|
int rtpLength() override;
|
||||||
|
int frameTime() override;
|
||||||
|
int samplerate() override;
|
||||||
|
int encode(const void* input, int inputBytes, void* output, int outputCapacity) override;
|
||||||
|
int decode(const void* input, int inputBytes, void* output, int outputCapacity) override;
|
||||||
|
int plc(int lostFrames, void* output, int outputCapacity) override;
|
||||||
|
int getSwitchCounter() const;
|
||||||
|
};
|
||||||
|
|
||||||
|
class GsmEfrCodec : public Codec
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
void* mEncoderCtx;
|
||||||
|
void* mDecoderCtx;
|
||||||
|
bool mIuUP;
|
||||||
|
|
||||||
|
public:
|
||||||
|
class GsmEfrFactory: public Factory
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
GsmEfrFactory(bool iuup, int ptype);
|
||||||
|
|
||||||
|
const char* name() override;
|
||||||
|
int samplerate() override;
|
||||||
|
int payloadType() override;
|
||||||
|
|
||||||
|
#ifdef USE_RESIP_INTEGRATION
|
||||||
|
void updateSdp(resip::SdpContents::Session::Medium::CodecContainer& codecs, SdpDirection direction) override;
|
||||||
|
int processSdp(const resip::SdpContents::Session::Medium::CodecContainer& codecs, SdpDirection direction) override;
|
||||||
|
void create(CodecMap& codecs) override;
|
||||||
|
#endif
|
||||||
|
PCodec create() override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool mIuUP;
|
||||||
|
int mPayloadType;
|
||||||
|
};
|
||||||
|
|
||||||
|
GsmEfrCodec(bool iuup = false);
|
||||||
|
|
||||||
|
virtual ~GsmEfrCodec();
|
||||||
|
const char* name() override;
|
||||||
|
int pcmLength() override;
|
||||||
|
int rtpLength() override;
|
||||||
|
int frameTime() override;
|
||||||
|
int samplerate() override;
|
||||||
|
int encode(const void* input, int inputBytes, void* output, int outputCapacity) override;
|
||||||
|
int decode(const void* input, int inputBytes, void* output, int outputCapacity) override;
|
||||||
|
int plc(int lostFrames, void* output, int outputCapacity) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // End of MT namespace
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // MT_EVSCODE_H
|
||||||
|
|
||||||
Loading…
Reference in New Issue