读书人

[Libjingle 0.4]编译Libjingle 0.4+Li

发布时间: 2012-07-29 15:26:14 作者: rapoo

[Libjingle 0.4]编译Libjingle 0.4+Linphone Voice Engine的总结之一

在Windows下编译Libjingle 0.4+Linphone Voice Engine时候会遇到一些问题, 下面整理了一下, 当然并不是所有的patch都有用的.


http://code.google.com/p/libjingle/issues/detail?id=16
*** 64-bit.patch ***
*** ortp.patch ***
*** gcc4.patch ***
*** libjingle-fileshare.patch ***
*** mutex.patch ***

http://code.google.com/p/libjingle/issues/detail?id=11

fileshare.cc compile error


http://code.google.com/p/libjingle/issues/detail?id=6

Compile fix for new version of libortp2


http://code.google.com/p/libjingle/issues/detail?id=19
cannot login using 'call' from examples

http://code.google.com/p/libjingle/issues/detail?id=29
"make" command gives an error

?

其中, 我遇到的一个编译问题就是ortp.patch所提到的:

http://libjingle.googlecode.com/issues/attachment?aid=5772608404175355205&name=ortp.patch&token=bcee68cb1b3f4d2ddefd7681b733cac8

这里backup一下

diff --exclude='Makefile*' --exclude='.*' --exclude='*~' --exclude='*.lo' --exclude='*.o' -aurbB libjingle-orig/talk/session/phone/linphonemediaengine.cc libjingle-new-ortp/talk/session/phone/linphonemediaengine.cc--- libjingle-orig/talk/session/phone/linphonemediaengine.cc2007-02-02 00:07:30.000000000 -0500+++ libjingle-new-ortp/talk/session/phone/linphonemediaengine.cc2007-07-19 11:24:09.000000000 -0400@@ -80,19 +80,19 @@     }  #endif #ifdef HAVE_SPEEX-    if (i->name == speex_wb.mime_type && i->clockrate == speex_wb.clock_rate) {-      rtp_profile_set_payload(&av_profile, i->id, &speex_wb);-    } else if (i->name == speex_nb.mime_type && i->clockrate == speex_nb.clock_rate) {-      rtp_profile_set_payload(&av_profile, i->id, &speex_nb);+    if (i->name == payload_type_speex_wb.mime_type && i->clockrate == payload_type_speex_wb.clock_rate) {+      rtp_profile_set_payload(&av_profile, i->id, &payload_type_speex_wb);+    } else if (i->name == payload_type_speex_nb.mime_type && i->clockrate == payload_type_speex_nb.clock_rate) {+      rtp_profile_set_payload(&av_profile, i->id, &payload_type_speex_nb);     } #endif      if (i->id == 0)-      rtp_profile_set_payload(&av_profile, 0, &pcmu8000);+      rtp_profile_set_payload(&av_profile, 0, &payload_type_pcmu8000); -    if (i->name == telephone_event.mime_type) {+/*    if (i->name == telephone_event.mime_type) {       rtp_profile_set_payload(&av_profile, i->id, &telephone_event);-    }+    }*/          if (first) {       LOG(LS_INFO) << "Using " << i->name << "/" << i->clockrate;@@ -114,12 +114,12 @@ bool LinphoneMediaEngine::FindCodec(const Codec &c) {   if (c.id == 0)     return true;-  if (c.name == telephone_event.mime_type)-    return true;+/*  if (c.name == telephone_event.mime_type)+    return true;*/ #ifdef HAVE_SPEEX-  if (c.name == speex_wb.mime_type && c.clockrate == speex_wb.clock_rate)+  if (c.name == payload_type_speex_wb.mime_type && c.clockrate == payload_type_speex_wb.clock_rate)     return true;-  if (c.name == speex_nb.mime_type && c.clockrate == speex_nb.clock_rate)+  if (c.name == payload_type_speex_nb.mime_type && c.clockrate == payload_type_speex_nb.clock_rate)     return true; #endif #ifdef HAVE_ILBC@@ -171,8 +171,8 @@ #ifdef HAVE_SPEEX   ms_speex_codec_init(); -  codecs_.push_back(Codec(110, speex_wb.mime_type, speex_wb.clock_rate, 0, 1, 8));-  codecs_.push_back(Codec(111, speex_nb.mime_type, speex_nb.clock_rate, 0, 1, 7));+  codecs_.push_back(Codec(110, payload_type_speex_wb.mime_type, payload_type_speex_wb.clock_rate, 0, 1, 8));+  codecs_.push_back(Codec(111, payload_type_speex_nb.mime_type, payload_type_speex_nb.clock_rate, 0, 1, 7));    #endif @@ -181,8 +181,8 @@   codecs_.push_back(Codec(102, payload_type_ilbc.mime_type, payload_type_ilbc.clock_rate, 0, 1, 4)); #endif -  codecs_.push_back(Codec(0, pcmu8000.mime_type, pcmu8000.clock_rate, 0, 1, 2));-  codecs_.push_back(Codec(101, telephone_event.mime_type, telephone_event.clock_rate, 0, 1, 1));+  codecs_.push_back(Codec(0, payload_type_pcmu8000.mime_type, payload_type_pcmu8000.clock_rate, 0, 1, 2));+ // codecs_.push_back(Codec(101, telephone_event.mime_type, telephone_event.clock_rate, 0, 1, 1));   return true; } diff --exclude='Makefile*' --exclude='.*' --exclude='*~' --exclude='*.lo' --exclude='*.o' -aurbB libjingle-orig/talk/third_party/mediastreamer/audiostream.c libjingle-new-ortp/talk/third_party/mediastreamer/audiostream.c--- libjingle-orig/talk/third_party/mediastreamer/audiostream.c2007-02-02 00:07:32.000000000 -0500+++ libjingle-new-ortp/talk/third_party/mediastreamer/audiostream.c2007-07-19 11:55:32.000000000 -0400@@ -112,7 +112,7 @@ RtpSession **recvsend){ RtpSession *rtpr; rtpr=rtp_session_new(RTP_SESSION_SENDRECV);-rtp_session_max_buf_size_set(rtpr,MAX_RTP_SIZE);+rtp_session_set_recv_buf_size(rtpr,MAX_RTP_SIZE); rtp_session_set_profile(rtpr,profile); rtp_session_set_local_addr(rtpr,get_local_addr_for(remip),locport); if (remport>0) rtp_session_set_remote_addr(rtpr,remip,remport);@@ -133,7 +133,7 @@ /* creates two rtp filters to recv send streams (remote part)*/  rtps=rtp_session_new(RTP_SESSION_SENDONLY);-rtp_session_max_buf_size_set(rtps,MAX_RTP_SIZE);+rtp_session_set_recv_buf_size(rtps,MAX_RTP_SIZE); rtp_session_set_profile(rtps,profile); #ifdef INET6 rtp_session_set_local_addr(rtps,"::",locport+2);@@ -147,7 +147,7 @@ rtp_session_set_jitter_compensation(rtps,jitt_comp);  rtpr=rtp_session_new(RTP_SESSION_RECVONLY);-rtp_session_max_buf_size_set(rtpr,MAX_RTP_SIZE);+rtp_session_set_recv_buf_size(rtpr,MAX_RTP_SIZE); rtp_session_set_profile(rtpr,profile); #ifdef INET6 rtp_session_set_local_addr(rtpr,"::",locport);@@ -217,8 +217,8 @@ ms_filter_set_property(stream->decoder,MS_FILTER_PROPERTY_FREQ,&pt->clock_rate); ms_filter_set_property(stream->decoder,MS_FILTER_PROPERTY_BITRATE,&pt->normal_bitrate); -ms_filter_set_property(stream->encoder,MS_FILTER_PROPERTY_FMTP, (void*)pt->fmtp);-ms_filter_set_property(stream->decoder,MS_FILTER_PROPERTY_FMTP,(void*)pt->fmtp);+ms_filter_set_property(stream->encoder,MS_FILTER_PROPERTY_FMTP, (void*)pt->send_fmtp);+ms_filter_set_property(stream->decoder,MS_FILTER_PROPERTY_FMTP,(void*)pt->recv_fmtp); /* create the synchronisation source */ stream->timer=ms_timer_new(); diff --exclude='Makefile*' --exclude='.*' --exclude='*~' --exclude='*.lo' --exclude='*.o' -aurbB libjingle-orig/talk/third_party/mediastreamer/msrtprecv.c libjingle-new-ortp/talk/third_party/mediastreamer/msrtprecv.c--- libjingle-orig/talk/third_party/mediastreamer/msrtprecv.c2007-02-02 00:07:32.000000000 -0500+++ libjingle-new-ortp/talk/third_party/mediastreamer/msrtprecv.c2007-07-19 11:40:11.000000000 -0400@@ -26,7 +26,7 @@ MSMessage *msgb_2_ms_message(mblk_t* mp){ MSMessage *msg; MSBuffer *msbuf;-if (mp->b_datap->ref_count!=1) return NULL; /* cannot handle properly non-unique buffers*/+if (mp->b_datap->db_ref!=1) return NULL; /* cannot handle properly non-unique buffers*/ /* create a MSBuffer using the mblk_t buffer */ msg=ms_message_alloc(); msbuf=ms_buffer_alloc(0);@@ -120,7 +120,7 @@ gint got=0; /* we are connected with queues (surely for video)*/ /* use the sync system time to compute a timestamp */-PayloadType *pt=rtp_profile_get_payload(r->rtpsession->profile,r->rtpsession->payload_type);+PayloadType *pt=rtp_profile_get_payload(rtp_session_get_recv_profile(r->rtpsession),rtp_session_get_recv_payload_type(r->rtpsession)); if (pt==NULL) { ms_warning("ms_rtp_recv_process(): NULL RtpPayload- skipping."); return;diff --exclude='Makefile*' --exclude='.*' --exclude='*~' --exclude='*.lo' --exclude='*.o' -aurbB libjingle-orig/talk/third_party/mediastreamer/msrtpsend.c libjingle-new-ortp/talk/third_party/mediastreamer/msrtpsend.c--- libjingle-orig/talk/third_party/mediastreamer/msrtpsend.c2007-02-02 00:07:32.000000000 -0500+++ libjingle-new-ortp/talk/third_party/mediastreamer/msrtpsend.c2007-07-19 11:41:26.000000000 -0400@@ -85,7 +85,7 @@ { guint32 clockts; /* use the sync system time to compute a timestamp */-PayloadType *pt=rtp_profile_get_payload(r->rtpsession->profile,r->rtpsession->payload_type);+PayloadType *pt=rtp_profile_get_payload(rtp_session_get_send_profile(r->rtpsession),rtp_session_get_send_payload_type(r->rtpsession)); g_return_val_if_fail(pt!=NULL,0); clockts=(guint32)(((double)synctime * (double)pt->clock_rate)/1000.0); ms_trace("ms_rtp_send_process: sync->time=%i clock=%i",synctime,clockts);

读书人网 >互联网

热点推荐