diff -Naur linphone-1.1.0/linphone.kdevprj linphone-1.1.0-patch/linphone.kdevprj --- linphone-1.1.0/linphone.kdevprj 2002-03-02 19:32:54.000000000 +0000 +++ linphone-1.1.0-patch/linphone.kdevprj 2005-09-04 06:26:04.414241144 +0000 @@ -1213,7 +1213,7 @@ [mediastreamer/Makefile.am] dist=true -files=mediastreamer/Makefile.am,mediastreamer/README,mediastreamer/ms.c,mediastreamer/ms.h,mediastreamer/msbuffer.c,mediastreamer/msbuffer.h,mediastreamer/mscopy.c,mediastreamer/mscopy.h,mediastreamer/msfifo.c,mediastreamer/msfifo.h,mediastreamer/msfilter.c,mediastreamer/msfilter.h,mediastreamer/msnosync.c,mediastreamer/msnosync.h,mediastreamer/msqueue.c,mediastreamer/msqueue.h,mediastreamer/msread.c,mediastreamer/msread.h,mediastreamer/mssync.c,mediastreamer/mssync.h,mediastreamer/mswrite.c,mediastreamer/mswrite.h,mediastreamer/test.c,mediastreamer/msoss.c,mediastreamer/msoss.h,mediastreamer/msosswrite.h,mediastreamer/msosswrite.c,mediastreamer/msringplayer.c,mediastreamer/msringplayer.h,mediastreamer/msossread.c,mediastreamer/msossread.h,mediastreamer/msGSMencoder.c,mediastreamer/msGSMencoder.h,mediastreamer/msrtprecv.c,mediastreamer/msrtprecv.h,mediastreamer/msGSMdecoder.c,mediastreamer/msGSMdecoder.h,mediastreamer/msLPC10encoder.c,mediastreamer/msLPC10encoder.h,mediastreamer/msLPC10decoder.c,mediastreamer/msLPC10decoder.h,mediastreamer/msAlawenc.h,mediastreamer/msAlawenc.c,mediastreamer/g711common.h,mediastreamer/msMUlawenc.c,mediastreamer/msMUlawenc.h,mediastreamer/msAlawdec.c,mediastreamer/msAlawdec.h,mediastreamer/msMUlawdec.c,mediastreamer/msMUlawdec.h,mediastreamer/msutils.h,mediastreamer/msvideosource.c,mediastreamer/msvideosource.h,mediastreamer/msv4l.h,mediastreamer/msv4l.c,mediastreamer/ring_test.c,mediastreamer/test_gsm.c,mediastreamer/test_lpc10.c,mediastreamer/test_alaw.c,mediastreamer/test_mulaw.c,mediastreamer/msavencoder.h,mediastreamer/msavencoder.c,mediastreamer/test_avenc.c,mediastreamer/msavdecoder.h,mediastreamer/msavdecoder.c,mediastreamer/test_avdec.c,mediastreamer/mstimer.h,mediastreamer/mstimer.c +files=mediastreamer/Makefile.am,mediastreamer/README,mediastreamer/ms.c,mediastreamer/ms.h,mediastreamer/msbuffer.c,mediastreamer/msbuffer.h,mediastreamer/mscopy.c,mediastreamer/mscopy.h,mediastreamer/msfifo.c,mediastreamer/msfifo.h,mediastreamer/msfilter.c,mediastreamer/msfilter.h,mediastreamer/msnosync.c,mediastreamer/msnosync.h,mediastreamer/msqueue.c,mediastreamer/msqueue.h,mediastreamer/msread.c,mediastreamer/msread.h,mediastreamer/mssync.c,mediastreamer/mssync.h,mediastreamer/mswrite.c,mediastreamer/mswrite.h,mediastreamer/test.c,mediastreamer/msoss.c,mediastreamer/msoss.h,mediastreamer/msosswrite.h,mediastreamer/msosswrite.c,mediastreamer/msringplayer.c,mediastreamer/msringplayer.h,mediastreamer/msossread.c,mediastreamer/msossread.h,mediastreamer/msGSMencoder.c,mediastreamer/msGSMencoder.h,mediastreamer/msrtprecv.c,mediastreamer/msrtprecv.h,mediastreamer/msGSMdecoder.c,mediastreamer/msGSMdecoder.h,mediastreamer/msLPC10encoder.c,mediastreamer/msLPC10encoder.h,mediastreamer/msLPC10decoder.c,mediastreamer/msLPC10decoder.h,mediastreamer/msAlawenc.h,mediastreamer/msAlawenc.c,mediastreamer/g711common.h,mediastreamer/msMUlawenc.c,mediastreamer/msMUlawenc.h,mediastreamer/msAlawdec.c,mediastreamer/msAlawdec.h,mediastreamer/msMUlawdec.c,mediastreamer/msMUlawdec.h,mediastreamer/msG729aenc.c,mediastreamer/msG729aenc.h,mediastreamer/msG729adec.c,mediastreamer/msG729adec.h,mediastreamer/msutils.h,mediastreamer/msvideosource.c,mediastreamer/msvideosource.h,mediastreamer/msv4l.h,mediastreamer/msv4l.c,mediastreamer/ring_test.c,mediastreamer/test_gsm.c,mediastreamer/test_lpc10.c,mediastreamer/test_alaw.c,mediastreamer/test_mulaw.c,mediastreamer/msavencoder.h,mediastreamer/msavencoder.c,mediastreamer/test_avenc.c,mediastreamer/msavdecoder.h,mediastreamer/msavdecoder.c,mediastreamer/test_avdec.c,mediastreamer/mstimer.h,mediastreamer/mstimer.c install=false install_location= sub_dirs= @@ -1339,6 +1339,30 @@ install_location= type=HEADER +[mediastreamer/msG729adec.c] +dist=true +install=false +install_location= +type=SOURCE + +[mediastreamer/msG729adec.h] +dist=true +install=false +install_location= +type=HEADER + +[mediastreamer/msG729aenc.c] +dist=true +install=false +install_location= +type=SOURCE + +[mediastreamer/msG729aenc.h] +dist=true +install=false +install_location= +type=HEADER + [mediastreamer/msavdecoder.c] dist=true install=false diff -Naur linphone-1.1.0/mediastreamer/Makefile.am linphone-1.1.0-patch/mediastreamer/Makefile.am --- linphone-1.1.0/mediastreamer/Makefile.am 2005-08-24 22:44:29.000000000 +0000 +++ linphone-1.1.0-patch/mediastreamer/Makefile.am 2005-09-04 06:31:24.787537000 +0000 @@ -61,6 +61,8 @@ msAlawdec.c msAlawdec.h g711common.h \ msMUlawenc.c msMUlawenc.h g711common.h \ msMUlawdec.c msMUlawdec.h g711common.h \ + msG729aenc.c msG729aenc.h \ + msG729adec.c msG729adec.h \ mstimer.c mstimer.h \ msqdispatcher.c msqdispatcher.h \ msfdispatcher.c msfdispatcher.h \ diff -Naur linphone-1.1.0/mediastreamer/Makefile.in linphone-1.1.0-patch/mediastreamer/Makefile.in --- linphone-1.1.0/mediastreamer/Makefile.in 2005-08-24 22:45:56.000000000 +0000 +++ linphone-1.1.0-patch/mediastreamer/Makefile.in 2005-09-04 06:36:05.464867560 +0000 @@ -84,7 +84,8 @@ msLPC10encoder.h msLPC10decoder.c msLPC10decoder.h msrtprecv.c \ msrtprecv.h msrtpsend.c msrtpsend.h msAlawenc.c msAlawenc.h \ g711common.h msAlawdec.c msAlawdec.h msMUlawenc.c msMUlawenc.h \ - msMUlawdec.c msMUlawdec.h mstimer.c mstimer.h msqdispatcher.c \ + msMUlawdec.c msMUlawdec.h msG729aenc.c msG729aenc.h \ + msG729adec.c msG729adec.h mstimer.c mstimer.h msqdispatcher.c \ msqdispatcher.h msfdispatcher.c msfdispatcher.h sndcard.c \ sndcard.h osscard.c osscard.h hpuxsndcard.c alsacard.c \ alsacard.h jackcard.c jackcard.h audiostream.c mediastream.h \ @@ -106,7 +107,8 @@ msosswrite.lo msossread.lo msringplayer.lo msGSMencoder.lo \ msGSMdecoder.lo msLPC10encoder.lo msLPC10decoder.lo \ msrtprecv.lo msrtpsend.lo msAlawenc.lo msAlawdec.lo \ - msMUlawenc.lo msMUlawdec.lo mstimer.lo msqdispatcher.lo \ + msMUlawenc.lo msMUlawdec.lo msG729aenc.lo \ + msG729adec.lo mstimer.lo msqdispatcher.lo \ msfdispatcher.lo sndcard.lo osscard.lo hpuxsndcard.lo \ alsacard.lo jackcard.lo audiostream.lo $(am__objects_1) \ msspeexenc.lo msspeexdec.lo msilbcdec.lo msilbcenc.lo \ @@ -169,6 +171,8 @@ @AMDEP_TRUE@ ./$(DEPDIR)/msLPC10encoder.Plo \ @AMDEP_TRUE@ ./$(DEPDIR)/msMUlawdec.Plo \ @AMDEP_TRUE@ ./$(DEPDIR)/msMUlawenc.Plo \ address@hidden@ ./$(DEPDIR)/msG729adec.Plo \ address@hidden@ ./$(DEPDIR)/msG729aenc.Plo \ @AMDEP_TRUE@ ./$(DEPDIR)/msavdecoder.Plo \ @AMDEP_TRUE@ ./$(DEPDIR)/msavencoder.Plo \ @AMDEP_TRUE@ ./$(DEPDIR)/msbuffer.Plo ./$(DEPDIR)/mscodec.Plo \ @@ -477,6 +481,8 @@ msAlawdec.c msAlawdec.h g711common.h \ msMUlawenc.c msMUlawenc.h g711common.h \ msMUlawdec.c msMUlawdec.h g711common.h \ + msG729aenc.c msG729aenc.h \ + msG729adec.c msG729adec.h \ mstimer.c mstimer.h \ msqdispatcher.c msqdispatcher.h \ msfdispatcher.c msfdispatcher.h \ @@ -677,6 +683,8 @@ @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@ @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@ @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@ address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@ address@hidden@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@ @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@ @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@ @AMDEP_TRUE@@am__include@ @address@hidden/$(DEPDIR)/address@hidden@ diff -Naur linphone-1.1.0/mediastreamer/msG729adec.c linphone-1.1.0-patch/mediastreamer/msG729adec.c --- linphone-1.1.0/mediastreamer/msG729adec.c 1970-01-01 00:00:00.000000000 +0000 +++ linphone-1.1.0-patch/mediastreamer/msG729adec.c 2005-09-04 06:19:09.301347896 +0000 @@ -0,0 +1,111 @@ + +#include +#include +#include "msG729adec.h" + +extern MSFilter * ms_G729Aencoder_new(void); + +MSCodecInfo G729Ainfo={ + { + "G729A codec", + 0, + MS_FILTER_AUDIO_CODEC, + ms_G729Aencoder_new, + "This is ITU G729.A codec. Good quality, but only usable with high speed network connections." + }, + ms_G729Aencoder_new, + ms_G729Adecoder_new, + 320, + 20, + 8000, + 8000, + 18, + "G729", + 1, + 1 +}; + +static MSG729ADecoderClass *ms_G729Adecoder_class=NULL; + +MSFilter * ms_G729Adecoder_new(void) +{ + MSG729ADecoder *r; + + r=g_new(MSG729ADecoder,1); + r->mod_dec.handle = dlopen("g729a_decoder.so",RTLD_LAZY); + if (r->mod_dec.handle) { + r->mod_dec.init_module = dlsym(r->mod_dec.handle, "g729a_to_linear_init"); + r->mod_dec.cvt_module=dlsym(r->mod_dec.handle, "g729a_to_linear_cvt_buf"); + } + ms_G729Adecoder_init(r); + if (ms_G729Adecoder_class==NULL) + { + ms_G729Adecoder_class=g_new(MSG729ADecoderClass,1); + ms_G729Adecoder_class_init(ms_G729Adecoder_class); + } + MS_FILTER(r)->klass=MS_FILTER_CLASS(ms_G729Adecoder_class); + return(MS_FILTER(r)); +} + + +/* FOR INTERNAL USE*/ +void ms_G729Adecoder_init(MSG729ADecoder *r) +{ + ms_filter_init(MS_FILTER(r)); + MS_FILTER(r)->infifos=r->f_inputs; + MS_FILTER(r)->outfifos=r->f_outputs; + MS_FILTER(r)->r_mingran=G729A_DECODER_RMAXGRAN; + memset(r->f_inputs,0,sizeof(MSFifo*)*MSG729ADECODER_MAX_INPUTS); + memset(r->f_outputs,0,sizeof(MSFifo*)*MSG729ADECODER_MAX_INPUTS); + r->mod_dec.init_module(); +} + +void ms_G729Adecoder_class_init(MSG729ADecoderClass *klass) +{ + ms_filter_class_init(MS_FILTER_CLASS(klass)); + ms_filter_class_set_name(MS_FILTER_CLASS(klass),"G729ADecoder"); + MS_FILTER_CLASS(klass)->info=(MSFilterInfo*)&G729Ainfo; + MS_FILTER_CLASS(klass)->max_finputs=MSG729ADECODER_MAX_INPUTS; + MS_FILTER_CLASS(klass)->max_foutputs=MSG729ADECODER_MAX_INPUTS; + MS_FILTER_CLASS(klass)->r_maxgran=G729A_DECODER_RMAXGRAN; + MS_FILTER_CLASS(klass)->w_maxgran=G729A_DECODER_WMAXGRAN; + MS_FILTER_CLASS(klass)->destroy=(MSFilterDestroyFunc)ms_G729Adecoder_destroy; + MS_FILTER_CLASS(klass)->process=(MSFilterProcessFunc)ms_G729Adecoder_process; +} + +void ms_G729Adecoder_process(MSG729ADecoder *r) +{ + MSFifo *fi,*fo; + int inlen,outlen; + gchar *s,*d; + int i; + /* process output fifos, but there is only one for this class of filter*/ + + /* this is the simplest process function design: + the filter declares a r_mingran of G729A_DECODER_RMAXGRAN, so the mediastreamer's + scheduler will call the process function each time there is G729A_DECODER_RMAXGRAN + bytes to read in the input fifo. If there is more, then it will call it several + time in order to the fifo to be completetly processed. + This is very simple, but not very efficient because of the multiple call function + of MSFilterProcessFunc that may happen. + The MSAlawEncoder implements another design; see it. + */ + + fi=r->f_inputs[0]; + fo=r->f_outputs[0]; + + inlen=ms_fifo_get_read_ptr(fi,G729A_DECODER_RMAXGRAN,(void**)&s); + if (s==NULL) g_error("ms_G729Adecoder_process: internal error."); + outlen=ms_fifo_get_write_ptr(fo,G729A_DECODER_WMAXGRAN,(void**)&d); + if (d!=NULL) + { + r->mod_dec.cvt_module(s,d,G729A_DECODER_RMAXGRAN); + } + else g_warning("MSG729ADecoder: Discarding samples !!"); +} + +void ms_G729Adecoder_destroy( MSG729ADecoder *obj) +{ + dlclose(obj->mod_dec.handle); + g_free(obj); +} diff -Naur linphone-1.1.0/mediastreamer/msG729adec.h linphone-1.1.0-patch/mediastreamer/msG729adec.h --- linphone-1.1.0/mediastreamer/msG729adec.h 1970-01-01 00:00:00.000000000 +0000 +++ linphone-1.1.0-patch/mediastreamer/msG729adec.h 2005-09-04 06:19:09.301347896 +0000 @@ -0,0 +1,56 @@ + +#ifndef MSG729ADECODER_H +#define MSG729ADECODER_H + +#include +#include + +/* Structure to keep DLL references */ +struct module { + int (*init_module)(void); + int (*cvt_module)(char*,char*,int); + int (*usecount)(void); + void *handle; + struct module *next; +}; + +/*this is the class that implements a G729Adecoder filter*/ + +#define MSG729ADECODER_MAX_INPUTS 1 /* max output per filter*/ + + +typedef struct _MSG729ADecoder +{ + /* the MSG729ADecoder derivates from MSFilter, so the MSFilter object MUST be the first of the MSG729ADecoder object + in order to the object mechanism to work*/ + MSFilter filter; + MSFifo *f_inputs[MSG729ADECODER_MAX_INPUTS]; + MSFifo *f_outputs[MSG729ADECODER_MAX_INPUTS]; + struct module mod_dec; +} MSG729ADecoder; + +typedef struct _MSG729ADecoderClass +{ + /* the MSG729ADecoder derivates from MSFilter, so the MSFilter class MUST be the first of the MSG729ADecoder class + in order to the class mechanism to work*/ + MSFilterClass parent_class; +} MSG729ADecoderClass; + +/* PUBLIC */ +#define MS_G729ADECODER(filter) ((MSG729ADecoder*)(filter)) +#define MS_G729ADECODER_CLASS(klass) ((MSG729ADecoderClass*)(klass)) +MSFilter * ms_G729Adecoder_new(void); + +/* FOR INTERNAL USE*/ +void ms_G729Adecoder_init(MSG729ADecoder *r); +void ms_G729Adecoder_class_init(MSG729ADecoderClass *klass); +void ms_G729Adecoder_destroy( MSG729ADecoder *obj); +void ms_G729Adecoder_process(MSG729ADecoder *r); + +extern MSCodecInfo G729Ainfo; + +/* tuning parameters :*/ +#define G729A_DECODER_WMAXGRAN 320 +#define G729A_DECODER_RMAXGRAN 20 + +#endif diff -Naur linphone-1.1.0/mediastreamer/msG729aenc.c linphone-1.1.0-patch/mediastreamer/msG729aenc.c --- linphone-1.1.0/mediastreamer/msG729aenc.c 1970-01-01 00:00:00.000000000 +0000 +++ linphone-1.1.0-patch/mediastreamer/msG729aenc.c 2005-09-04 06:19:09.301347896 +0000 @@ -0,0 +1,79 @@ + +#include +#include +#include "msG729aenc.h" + +extern MSCodecInfo G729Ainfo; + +static MSG729AEncoderClass *ms_G729Aencoder_class=NULL; + +MSFilter * ms_G729Aencoder_new(void) +{ + MSG729AEncoder *r; + + r=g_new(MSG729AEncoder,1); + r->mod_enc.handle = dlopen("g729a_coder.so",RTLD_LAZY); + if (r->mod_enc.handle) { + r->mod_enc.init_module = dlsym(r->mod_enc.handle, "linear_to_g729a_init"); + r->mod_enc.cvt_module=dlsym(r->mod_enc.handle, "linear_to_g729a_cvt_buf"); + } + ms_G729Aencoder_init(r); + if (ms_G729Aencoder_class==NULL) + { + ms_G729Aencoder_class=g_new(MSG729AEncoderClass,1); + ms_G729Aencoder_class_init(ms_G729Aencoder_class); + } + MS_FILTER(r)->klass=MS_FILTER_CLASS(ms_G729Aencoder_class); + return(MS_FILTER(r)); +} + +/* FOR INTERNAL USE*/ +void ms_G729Aencoder_init(MSG729AEncoder *r) +{ + ms_filter_init(MS_FILTER(r)); + MS_FILTER(r)->infifos=r->f_inputs; + MS_FILTER(r)->outfifos=r->f_outputs; + MS_FILTER(r)->r_mingran=G729A_ENCODER_RMAXGRAN; /* the filter can be called as soon as there is + something to process */ + memset(r->f_inputs,0,sizeof(MSFifo*)*MSG729AENCODER_MAX_INPUTS); + memset(r->f_outputs,0,sizeof(MSFifo*)*MSG729AENCODER_MAX_INPUTS); + r->mod_enc.init_module(); +} + +void ms_G729Aencoder_class_init(MSG729AEncoderClass *klass) +{ + ms_filter_class_init(MS_FILTER_CLASS(klass)); + ms_filter_class_set_name(MS_FILTER_CLASS(klass),"G729AEncoder"); + MS_FILTER_CLASS(klass)->info=(MSFilterInfo*)&G729Ainfo; + MS_FILTER_CLASS(klass)->max_finputs=MSG729AENCODER_MAX_INPUTS; + MS_FILTER_CLASS(klass)->max_foutputs=MSG729AENCODER_MAX_INPUTS; + MS_FILTER_CLASS(klass)->r_maxgran=G729A_ENCODER_RMAXGRAN; + MS_FILTER_CLASS(klass)->w_maxgran=G729A_ENCODER_WMAXGRAN; + MS_FILTER_CLASS(klass)->destroy=(MSFilterDestroyFunc)ms_G729Aencoder_destroy; + MS_FILTER_CLASS(klass)->process=(MSFilterProcessFunc)ms_G729Aencoder_process; +} + +void ms_G729Aencoder_process(MSG729AEncoder *r) +{ + MSFifo *fi,*fo; + int inlen,outlen; + gchar *s,*d; + int i, j; + /* process output fifos, but there is only one for this class of filter*/ + + fi=r->f_inputs[0]; + fo=r->f_outputs[0]; + inlen=ms_fifo_get_read_ptr(fi,G729A_ENCODER_RMAXGRAN,(void**)&s); + outlen=ms_fifo_get_write_ptr(fo,G729A_ENCODER_WMAXGRAN,(void**)&d); + if (d!=NULL) + { + r->mod_enc.cvt_module(s,d,G729A_ENCODER_RMAXGRAN); + } + else g_warning("MSG729ADecoder: Discarding samples !!"); +} + +void ms_G729Aencoder_destroy( MSG729AEncoder *obj) +{ + dlclose(obj->mod_enc.handle); + g_free(obj); +} diff -Naur linphone-1.1.0/mediastreamer/msG729aenc.h linphone-1.1.0-patch/mediastreamer/msG729aenc.h --- linphone-1.1.0/mediastreamer/msG729aenc.h 1970-01-01 00:00:00.000000000 +0000 +++ linphone-1.1.0-patch/mediastreamer/msG729aenc.h 2005-09-04 06:19:09.301347896 +0000 @@ -0,0 +1,53 @@ + +#ifndef MSG729AENCODER_H +#define MSG729AENCODER_H + +#include "mscodec.h" + +/* Structure to keep DLL references */ +struct module { + int (*init_module)(void); + int (*cvt_module)(char*,char*,int); + int (*usecount)(void); + void *handle; + struct module *next; +}; + +/*this is the class that implements a MULAWencoder filter*/ + +#define MSG729AENCODER_MAX_INPUTS 1 /* max output per filter*/ + + +typedef struct _MSG729AEncoder +{ + /* the MSMULAWEncoder derivates from MSFilter, so the MSFilter object MUST be the first of the MSMULAWEncoder object + in order to the object mechanism to work*/ + MSFilter filter; + MSFifo *f_inputs[MSG729AENCODER_MAX_INPUTS]; + MSFifo *f_outputs[MSG729AENCODER_MAX_INPUTS]; + struct module mod_enc; +} MSG729AEncoder; + +typedef struct _MSG729AEncoderClass +{ + /* the MSMULAWEncoder derivates from MSFilter, so the MSFilter class MUST be the first of the MSMULAWEncoder class + in order to the class mechanism to work*/ + MSFilterClass parent_class; +} MSG729AEncoderClass; + +/* PUBLIC */ +#define MS_G729AENCODER(filter) ((MSG729AEncoder*)(filter)) +#define MS_G729AENCODER_CLASS(klass) ((MSG729AEncoderClass*)(klass)) +MSFilter * ms_G729Aencoder_new(void); + +/* FOR INTERNAL USE*/ +void ms_G729Aencoder_init(MSG729AEncoder *r); +void ms_G729Aencoder_class_init(MSG729AEncoderClass *klass); +void ms_G729Aencoder_destroy( MSG729AEncoder *obj); +void ms_G729Aencoder_process(MSG729AEncoder *r); + +/* tuning parameters :*/ +#define G729A_ENCODER_WMAXGRAN 20 +#define G729A_ENCODER_RMAXGRAN 320 + +#endif diff -Naur linphone-1.1.0/mediastreamer/mscodec.c linphone-1.1.0-patch/mediastreamer/mscodec.c --- linphone-1.1.0/mediastreamer/mscodec.c 2005-03-07 11:06:20.000000000 +0000 +++ linphone-1.1.0-patch/mediastreamer/mscodec.c 2005-09-04 06:28:55.805185760 +0000 @@ -25,6 +25,7 @@ #include "msLPC10decoder.h" #include "msMUlawdec.h" #include "msAlawdec.h" +#include "msG729adec.h" #ifdef TRUESPEECH extern MSCodecInfo TrueSpeechinfo; @@ -48,6 +49,7 @@ ms_filter_register(MS_FILTER_INFO(&LPC10info)); ms_filter_register(MS_FILTER_INFO(&MULAWinfo)); ms_filter_register(MS_FILTER_INFO(&ALAWinfo)); + ms_filter_register(MS_FILTER_INFO(&G729Ainfo)); #ifdef TRUESPEECH ms_filter_register(MS_FILTER_INFO(&TrueSpeechinfo)); #endif