- 浏览: 1504341 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (419)
- XMPP (19)
- Android (180)
- Java (59)
- Network (4)
- HTML5 (13)
- Eclipse (9)
- SCM (23)
- C/C++ (4)
- UML (4)
- Libjingle (15)
- Tools&Softwares (29)
- Linphone (5)
- Linux&UNIX (6)
- Windows (18)
- Google (10)
- MISC (3)
- SIP (6)
- SQLite (5)
- Security (4)
- Opensource (29)
- Online (2)
- 文章 (3)
- MemoryLeak (10)
- Decompile (5)
- Ruby (1)
- Image (1)
- Bat (4)
- TTS&ASR (28)
- Multimedia (1)
- iOS (20)
- Asciiflow - ASCII Flow Diagram Tool.htm (1)
- Networking (1)
- DLNA&UPnP (2)
- Chrome (2)
- CI (1)
- SmartHome (0)
- CloudComputing (1)
- NodeJS (3)
- MachineLearning (2)
最新评论
-
bzhao:
点赞123!
Windows的adb shell中使用vi不乱码方法及AdbPutty -
wahahachuang8:
我觉得这种东西自己开发太麻烦了,就别自己捣鼓了,找个第三方,方 ...
HTML5 WebSocket 技术介绍 -
obehavior:
view.setOnTouchListenerview是什么
[转]android 一直在最前面的浮动窗口效果 -
wutenghua:
[转]android 一直在最前面的浮动窗口效果 -
zee3.lin:
Sorry~~
When I build "call ...
Step by Step about How to Build libjingle 0.4
在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所提到的:
这里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.cc 2007-02-02 00:07:30.000000000 -0500 +++ libjingle-new-ortp/talk/session/phone/linphonemediaengine.cc 2007-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.c 2007-02-02 00:07:32.000000000 -0500 +++ libjingle-new-ortp/talk/third_party/mediastreamer/audiostream.c 2007-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.c 2007-02-02 00:07:32.000000000 -0500 +++ libjingle-new-ortp/talk/third_party/mediastreamer/msrtprecv.c 2007-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.c 2007-02-02 00:07:32.000000000 -0500 +++ libjingle-new-ortp/talk/third_party/mediastreamer/msrtpsend.c 2007-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);
发表评论
-
[Libjingle代码分析]随记
2011-02-28 15:24 3662call_main.cc的main()方法中创建CallCli ... -
[Libjingle代码分析]Libjingle的线程机制与Android平台的Handler机制相似
2011-02-27 19:55 2686不愧都是Google写的代码, Libjingle用到的Thr ... -
[Libjingle代码分析]对照Jingle的XMPP stanza理解Libjingle的几个关键数据结构
2011-02-27 13:34 36221. SessionManager管理多个Session: ... -
Libjingle代码分析之Thread篇
2011-02-23 14:59 0Libjingle的Thread机制竟然与Android的Ha ... -
Libjingle另一个很隐藏但却很致命的错误 - WSAECONNRESET (10054) Connection reset by peer.
2011-02-20 18:50 5567无论Libjingle 0.4.0还是0.5.2 (相比较0. ... -
Libjingle一个虽小但却很严重的bug - 误导人的SocketAddress构造函数参数名称
2011-02-19 23:47 3397在Libjingle+Linphone for Windows ... -
Build for Libjingle 0.5.2 + Mediastreamer2
2011-02-18 20:01 2793Mediastreamer support in 0.5.0 ... -
RTP Tools
2011-02-18 01:00 1929http://www.cs.columbia.edu/irt/ ... -
在Windows下编译最新版本的Libjingle
2011-02-17 14:09 12870Libjingle版本: 0.5.2 操作系统: Window ... -
Myjingle src code
2011-02-14 22:38 2712. -
终于搞定Windows下Libjingle+Linphone Voice Engine的语音通信
2011-02-14 20:49 4193Libjingle在Windows下的语音引擎默认的是GIPS ... -
[Libjingle 0.4]LibJingle编译指南
2011-02-14 17:24 2018LibJingle (for Ubuntu) 编译指南 ... -
Step by Step about How to Build libjingle 0.4
2011-02-12 17:36 53871. Download and Install Visual ... -
libjingle 0.4和0.5版本之间的区别
2011-02-12 15:19 2693我所知道的主要的区别是: 1. Build方式的区别. 0. ... -
决定花点时间研究下libjingle
2011-02-12 15:02 7106Project and Source Code Locatio ...
相关推荐
《libjingle 0.4构建指南:一步步解析》 libjingle是Google推出的一款开源通信库,主要用于实现网络音视频通信。它基于P2P技术,支持多种协议,包括ICE、STUN、TURN等,为开发者提供了构建实时通信应用的基础。在...
标题"libjingle0.6.14编译好的.lib"指出这是一个关于libjingle库的特定版本(0.6.14)的编译结果,通常是一个静态或动态链接库文件,后缀为.lib,表明它是针对Windows平台的,因为Windows系统使用.lib作为库文件格式...
Libjingle是一个方便实现P2P传输的开源库,由google公司开发,并与2005年12月15日发布第一个版本,可以粗略的看成是Jingle协议的C++实现库(peakflys注:只是和Jingle协议非常相似,并不完全兼容,区别以后介绍),...
VS2010 编译 libjingle0.6.2 步骤 titre : VS2010 编译 libjingle0.6.2 步骤是...知识点解释:编译 libjingle 库是编译 libjingle 0.6.2 库的最后一步骤。在 vs2010 命令行中运行 hammer 命令,以编译 libjingle 库。
这个项目的核心是提供一个跨平台的库,使得开发者能够轻松地在他们的应用程序中集成VoIP(Voice over IP)和视频聊天功能。在本案例中,我们关注的是使用Visual Studio 2010编译libjingle的场景。 在Windows平台上...
标题"libjingle源码(linux版本)"指的是开源项目libjingle的一个特定版本,针对Linux操作系统。libjingle是Google开发的一个跨平台库,主要用于实现P2P(Peer-to-Peer)通信,它包含了音视频通话、即时消息等多种实时...
目前GOOGLECODE上的最新更新删除了libjingle.vcproj文件,采用scons脚本进行编译,增加了学习门槛,本次下载包增加了libjingle.vcproj文件并且已经通过了vs2005编译,方便大家学习使用。 Libjingle - Google Talk ...
### libjingle在Windows与Ubuntu-Linux上的编译方法 #### 概述 本文主要针对libjingle(版本包括但不限于0.6.6、0.6.9和最新的0.6.10)在Windows与Ubuntu Linux操作系统上的编译过程进行详细介绍,并分享了在编译...
libjingle 中文 手册,很不错的哦,描述的很清楚,还有使用范例
作者:Group ArmTalk 文档:2011-11-30 指导文档内容: 1. Libjingle是什么 ...3. 怎么交叉编译Libjingle(arm-linux-) 以下是个人说明: 要在ARM架构的嵌入式设备使用libjingle,可以参考该文档进行操作
标题 "带GIPS的libjingle source" 指的是一个包含GIPS(Global IP Sound)技术的libjingle源代码库。libjingle是Google开发的一个开源项目,主要用于实现跨平台的实时通信(RTC)功能,特别是网络音视频通话。GIPS是...
8. **libjingle-0.5.1**:这个版本的libjingle包含了0.5.1版的源代码、库文件和其他资源,可能包括头文件、编译脚本、示例代码等,供开发者在构建自己的WebRTC应用时使用。 总的来说,“libjingle-0.5.1.zip”对于...
android需要的libjingle_peerconnection.jar和 arm64-v8a、armeabi-v7a、x86和x86_64下的libjingle_peerconnection_so.so文件
它最初是为Google Talk服务设计的,现在已经成为WebRTC(Web Real-Time Communication)的核心组件之一。在本篇中,我们将深入探讨libjingle的开发者指南、源码索引,并了解如何从0.4.0版本的源码入手进行学习和开发...
总结而言,libjingle_peerconnection是WebRTC技术的基石,其强大的功能和灵活的架构使其成为构建实时通信应用的首选组件。通过深入了解和熟练运用这个库,开发者可以创造出高效、安全且用户友好的实时通信解决方案。
标题"libjingle0.6.14"指的是一个特定版本的libjingle库,这是Google开发的一个开源项目,主要用于实现P2P(Peer-to-Peer)通信。描述中的"libjingle0.6.14 版本,p2p学习"暗示了这个压缩包可能是为了学习libjingle...
Libjingle是一个开源的跨平台通信库,由Google开发并维护,主要用于实现实时音视频通信和即时消息(IM)功能。它基于XMPP(Extensible Messaging and Presence Protocol)协议,为开发者提供了一套底层接口,可以...