00001 #ifndef G711_H_
00002 #define G711_H_
00003
00004 #include <qsocketdevice.h>
00005 #include "rtp.h"
00006
00007 extern "C" {
00008 #include "gsm/gsm.h"
00009 }
00010
00011 extern uchar alaw_comp_table[16384];
00012 extern uchar ulaw_comp_table[16384];
00013 extern short alaw_exp_table[256];
00014 extern short ulaw_exp_table[256];
00015
00016 class g711alaw : public codec
00017 {
00018 public:
00019 g711alaw() :codec() {};
00020 ~g711alaw() {};
00021 virtual int Decode(uchar *In, short *out, int Len, short &maxPower);
00022 virtual int Encode(short *In, uchar *out, int Samples, short &maxPower, int gain);
00023 virtual int Silence(uchar *out, int ms);
00024 virtual QString WhoAreYou() { return "G711a"; }
00025 virtual int bandwidth() { return 106; }
00026 private:
00027 };
00028
00029 class g711ulaw : public codec
00030 {
00031 public:
00032 g711ulaw() :codec() {};
00033 ~g711ulaw() {};
00034 virtual int Decode(uchar *In, short *out, int Len, short &maxPower);
00035 virtual int Encode(short *In, uchar *out, int Samples, short &maxPower, int gain);
00036 virtual int Silence(uchar *out, int ms);
00037 virtual QString WhoAreYou() { return "G711u"; };
00038 virtual int bandwidth() { return 106; }
00039 private:
00040 };
00041
00042 class gsmCodec : public codec
00043 {
00044 public:
00045 gsmCodec();
00046 ~gsmCodec();
00047 virtual int Decode(uchar *In, short *out, int Len, short &maxPower);
00048 virtual int Encode(short *In, uchar *out, int Samples, short &maxPower, int gain);
00049 virtual int Silence(uchar *out, int ms);
00050 virtual QString WhoAreYou() { return "GSM"; };
00051 virtual int bandwidth() { return 43; }
00052 private:
00053 gsm gsmEncData;
00054 gsm gsmDecData;
00055 bool gsmMicrosoftCompatability;
00056 };
00057
00058 #ifdef VA_G729
00059 class g729 : public codec
00060 {
00061 public:
00062 g729();
00063 ~g729() {};
00064 virtual int Decode(uchar *In, short *out, int Len, short &maxPower);
00065 virtual int Encode(short *In, uchar *out, int Samples, short &maxPower, int gain);
00066 virtual int Silence(uchar *out, int ms);
00067 virtual QString WhoAreYou() { return "G729"; };
00068 virtual int bandwidth() { return 43; }
00069 private:
00070 };
00071 #endif
00072
00073 #endif