summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/audio/audio_rx.cpp7
-rw-r--r--src/audio/audio_tx.cpp5
-rw-r--r--src/gui/userprofileform.cpp8
-rw-r--r--src/sdp/sdp.cpp3
-rw-r--r--src/session.cpp2
-rw-r--r--src/sys_settings.cpp9
-rw-r--r--src/user.cpp10
-rw-r--r--src/userintf.cpp1
8 files changed, 45 insertions, 0 deletions
diff --git a/src/audio/audio_rx.cpp b/src/audio/audio_rx.cpp
index db6d4f3..9435ac4 100644
--- a/src/audio/audio_rx.cpp
+++ b/src/audio/audio_rx.cpp
@@ -341,6 +341,13 @@ t_audio_rx::t_audio_rx(t_audio_session *_audio_session,
t_g726_audio_encoder::BIT_RATE_40, user_config);
MEMMAN_NEW(audio_encoder);
break;
+#ifdef HAVE_BCG729
+ case CODEC_G729A:
+ audio_encoder = new t_g729a_audio_encoder(_payload_id, _ptime,
+ user_config);
+ MEMMAN_NEW(audio_encoder);
+ break;
+#endif
default:
assert(false);
}
diff --git a/src/audio/audio_tx.cpp b/src/audio/audio_tx.cpp
index 4901ede..effea29 100644
--- a/src/audio/audio_tx.cpp
+++ b/src/audio/audio_tx.cpp
@@ -110,6 +110,11 @@ t_audio_tx::t_audio_tx(t_audio_session *_audio_session,
map_audio_decoder[CODEC_G726_40] = new t_g726_audio_decoder(
t_g726_audio_decoder::BIT_RATE_40, _ptime, user_config);
MEMMAN_NEW(map_audio_decoder[CODEC_G726_40]);
+#ifdef HAVE_BCG729
+ map_audio_decoder[CODEC_G729A] = new t_g729a_audio_decoder(
+ _ptime, user_config);
+ MEMMAN_NEW(map_audio_decoder[CODEC_G729A]);
+#endif
ptime = map_audio_decoder[codec]->get_default_ptime();
diff --git a/src/gui/userprofileform.cpp b/src/gui/userprofileform.cpp
index 6a9e39b..d7f39a0 100644
--- a/src/gui/userprofileform.cpp
+++ b/src/gui/userprofileform.cpp
@@ -81,6 +81,7 @@
#define labelCodecG726_24 "G.726 24 kbps"
#define labelCodecG726_32 "G.726 32 kbps"
#define labelCodecG726_40 "G.726 40 kbps"
+#define labelCodecG729A "G.729A"
// Indices of iLBC modes
#define idxIlbcMode20 0
@@ -252,6 +253,8 @@ t_audio_codec UserProfileForm::label2codec(const QString &label) {
return CODEC_G726_32;
} else if (label == labelCodecG726_40) {
return CODEC_G726_40;
+ } else if (label == labelCodecG729A) {
+ return CODEC_G729A;
}
return CODEC_NULL;
}
@@ -281,6 +284,8 @@ QString UserProfileForm::codec2label(t_audio_codec &codec) {
return labelCodecG726_32;
case CODEC_G726_40:
return labelCodecG726_40;
+ case CODEC_G729A:
+ return labelCodecG729A;
default:
return "";
}
@@ -418,6 +423,9 @@ void UserProfileForm::populate()
allCodecs.append(labelCodecG726_24);
allCodecs.append(labelCodecG726_32);
allCodecs.append(labelCodecG726_40);
+#ifdef HAVE_BCG729
+ allCodecs.append(labelCodecG729A);
+#endif
activeCodecListBox->clear();
list<t_audio_codec> audio_codecs = current_profile->get_codecs();
for (list<t_audio_codec>::iterator i = audio_codecs.begin(); i != audio_codecs.end(); i++)
diff --git a/src/sdp/sdp.cpp b/src/sdp/sdp.cpp
index ba683c5..dfb01cf 100644
--- a/src/sdp/sdp.cpp
+++ b/src/sdp/sdp.cpp
@@ -138,6 +138,9 @@ string get_rtpmap(unsigned format, t_audio_codec codec) {
case CODEC_G726_40:
rtpmap += SDP_RTPMAP_G726_40;
break;
+ case CODEC_G729A:
+ rtpmap += SDP_RTPMAP_G729A;
+ break;
case CODEC_TELEPHONE_EVENT:
rtpmap += SDP_RTPMAP_TELEPHONE_EV;
break;
diff --git a/src/session.cpp b/src/session.cpp
index 83771f6..a35c643 100644
--- a/src/session.cpp
+++ b/src/session.cpp
@@ -114,6 +114,7 @@ t_session::t_session(t_dialog *_dialog, string _receive_host,
recv_ac2payload[CODEC_G711_ULAW] = SDP_FORMAT_G711_ULAW;
recv_ac2payload[CODEC_G711_ALAW] = SDP_FORMAT_G711_ALAW;
recv_ac2payload[CODEC_GSM] = SDP_FORMAT_GSM;
+ recv_ac2payload[CODEC_G729A] = SDP_FORMAT_G729;
recv_ac2payload[CODEC_SPEEX_NB] = user_config->get_speex_nb_payload_type();
recv_ac2payload[CODEC_SPEEX_WB] = user_config->get_speex_wb_payload_type();
recv_ac2payload[CODEC_SPEEX_UWB] = user_config->get_speex_uwb_payload_type();
@@ -129,6 +130,7 @@ t_session::t_session(t_dialog *_dialog, string _receive_host,
recv_payload2ac[SDP_FORMAT_G711_ULAW] = CODEC_G711_ULAW;
recv_payload2ac[SDP_FORMAT_G711_ALAW] = CODEC_G711_ALAW;
recv_payload2ac[SDP_FORMAT_GSM] = CODEC_GSM;
+ recv_payload2ac[SDP_FORMAT_G729] = CODEC_G729A;
recv_payload2ac[user_config->get_speex_nb_payload_type()] = CODEC_SPEEX_NB;
recv_payload2ac[user_config->get_speex_wb_payload_type()] = CODEC_SPEEX_WB;
recv_payload2ac[user_config->get_speex_uwb_payload_type()] = CODEC_SPEEX_UWB;
diff --git a/src/sys_settings.cpp b/src/sys_settings.cpp
index abca6e0..175ac4f 100644
--- a/src/sys_settings.cpp
+++ b/src/sys_settings.cpp
@@ -1056,6 +1056,11 @@ string t_sys_settings::about(bool html) const {
if (html) s += "<BR>";
s += "\n";
#endif
+#ifdef HAVE_BCG729
+ s += TRANSLATE("* G729A codec (http://www.linphone.org/technical-corner/bcg729/overview");
+ if (html) s += "<BR>";
+ s += "\n";
+#endif
s += TRANSLATE("* Parts of the STUN project at http://sourceforge.net/projects/stun");
if (html) s += "<BR>";
@@ -1147,6 +1152,10 @@ string t_sys_settings::get_options_built(void) const {
if (!options_built.empty()) options_built += ", ";
options_built += "iLBC";
#endif
+#ifdef HAVE_BCG729
+ if (!options_built.empty()) options_built += ", ";
+ options_built += "G729";
+#endif
#ifdef HAVE_ZRTP
if (!options_built.empty()) options_built += ", ";
options_built += "ZRTP";
diff --git a/src/user.cpp b/src/user.cpp
index b3de725..38978eb 100644
--- a/src/user.cpp
+++ b/src/user.cpp
@@ -369,6 +369,9 @@ t_user::t_user() {
#ifdef HAVE_ILBC
codecs.push_back(CODEC_ILBC);
#endif
+#ifdef HAVE_BCG729
+ codecs.push_back(CODEC_G729A);
+#endif
codecs.push_back(CODEC_G711_ALAW);
codecs.push_back(CODEC_G711_ULAW);
codecs.push_back(CODEC_GSM);
@@ -2256,6 +2259,10 @@ bool t_user::read_config(const string &filename, string &error_msg) {
codecs.push_back(CODEC_G726_32);
} else if (codec == "g726-40") {
codecs.push_back(CODEC_G726_40);
+#ifdef HAVE_BCG729
+ } else if (codec == "g729a") {
+ codecs.push_back(CODEC_G729A);
+#endif
} else {
msg = "Syntax error in file ";
msg += f;
@@ -2673,6 +2680,9 @@ bool t_user::write_config(const string &filename, string &error_msg) {
case CODEC_G726_40:
config << "g726-40";
break;
+ case CODEC_G729A:
+ config << "g729a";
+ break;
default:
assert(false);
}
diff --git a/src/userintf.cpp b/src/userintf.cpp
index b0ce65e..71ca14a 100644
--- a/src/userintf.cpp
+++ b/src/userintf.cpp
@@ -2172,6 +2172,7 @@ string t_userintf::format_codec(t_audio_codec codec) const {
case CODEC_G726_24: return "g726-24";
case CODEC_G726_32: return "g726-32";
case CODEC_G726_40: return "g726-40";
+ case CODEC_G729A: return "g729a";
default: return "???";
}
}