自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Up to Me

那一年,我也十七岁

  • 博客(105)
  • 资源 (8)
  • 收藏
  • 关注

翻译 【译】ARM GCC Inline Assembler Cookbook

关于本文档用于 ARM RISC 处理器的 GNU C 编译器提供了将汇编语言代码嵌入到 C 程序中。这个很酷的特性可以用来手动优化软件的关键部分或者使用 C 语言中无法使用的处理器指令。这里假设您熟悉编写 ARM 汇编程序,因为这不是一个 ARM 汇编程序编程教程。 它也不是C语言教程。所有示例都在 GCC version 4 上测试通过,但是大多数也能在更早的版本上运行。GCC asm 语句我们先从一个简单的示例开始。 下面的语句可以像其他C语句一样包含在代码中。/* NO

2022-04-28 14:10:17 310

原创 CMake 跳过编译器检查的方法

1. 直接跳过所有编译器检查```shellSET(CMAKE_C_COMPILER_WORKS TRUE)SET(CMAKE_CXX_COMPILER_WORKS TRUE)```2. 跳过可执行文件rdynamic 检查```shellSET(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY")```

2021-12-20 14:26:23 2864

原创 CMake 编译静态库的同时打包所有依赖静态库的方法

在 CMakeLists.txt 末尾添加set(libalgo ${PROJECT_SOURCE_DIR}/libs/armv8-64/libalgo.a)set(libftkmath ${PROJECT_SOURCE_DIR}/libs/armv8-64/libftkmath.a)add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_AR} x ${l

2021-10-25 19:37:34 3853

原创 CMake 使用 strip 减小so(动态)库的文件体积

在CMakeLists.txt 文件末尾添加project(xxx)...target_link_libraries( ${PROJECT_NAME} ...)add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_STRIP} "$<TARGET_FILE:${PROJECT_NAME}>" COMMENT "Strip

2021-09-26 16:08:12 1390

原创 编程拾遗

算法、技巧的文章太多,讲一点朴素的Coding方法。命名如何命名,讲这个的文章也特别多。驼峰还是下划线方式,这个其实没有那么重要,关键还是可读性和代码风格的统一。我这里聊一下我自己的经验。类型、结构体、枚举的命名使用名词。 越详细越好,不要怕太长。 不是常用词的话,不要用缩写。变量、参数的命名,词能达意即可。变量、参数一般可以分作三类:数值, 比如xxxCnt,xxxNum,xxxVal,xxxName,xxxPath,注意尽量使用名词。 布尔值(bool),比如 isX

2021-05-07 14:52:28 108 1

原创 C++ 使用强制类型转换引入临时变量的问题(续)

今天没事回顾了一下以前写的东西,发现这一篇写的模棱两可https://blog.csdn.net/niino/article/details/6286558时隔多年,再来回来看这篇文章只能说还是太年轻,看待问题太片面了问题确实是出在强转上,而且也确实会产生一个临时变量。如何证明产生了临时变量?只需要将 const int &tt 的 const 修饰符去掉,就编译不过了,这时候会报错Non-const lvalue reference to type 'int' cannot b

2021-03-31 18:22:10 757

翻译 C++的单例模式为什么不能是线程安全的

原文:DDJ_Jul_Aug_2004_revised.pdf没有按照原文一字一句的排版和翻译,总体内容都是在的,原文见附件。首先,先简单讲一下什么是DCLP。DCLP是 double check locking pattern的缩写,它的出现旨在为共享资源(比如单例模式)的初始化添加高效的线程安全性。单例模式,分为 lazy-initialization 和 eager-initialization,两种创建静态对象的方式。lazy-initialization 就是在调用 getIns.

2021-01-15 14:53:44 607 1

原创 WSL通过cmake生成windows路径的compile_commands.json

最近新起了一个项目,准备全盘使用cmake,放弃之前用的 Android.mk,于是遇到一个问题,那就是直接在WSL下使用cmake生成的compile_commands.json中,路径都是linux形式的,windows 的vscode C/C++ 插件无法解析到正确的路径。那么就想到通过 cmd.exe 来在执行windows的cmake。shell 脚本代码如下:CMAKE_OPTIONS='-DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DANDROID_ABI=arm

2021-01-06 17:09:27 1632 1

原创 WSL 中执行windows脚本的方法

/mnt/c/Windows/System32/cmd.exe /C ndk-build.cmd

2020-09-14 19:03:55 1112

原创 win10中wsl如何配置文件(夹)名区分大小写

win10版本1803,内部版本17134.885由于最近卸载了以前安装的 Legacy 版本的 wsl(ubuntu 16.04),然后重新安装了 ubuntu 18.04. 之后偶然发现居然只在wsl的根目录下创建的文件(夹)区分大小写,而 /mnt/c 和 /mnt/d 都不能区分大小写了。网上的文章大多是让大家使用 fsutil 工具来修改CaseSensitive Flag,但是这样并...

2019-07-25 21:00:24 2906 1

原创 pthread优先级的实践与结果分析

更新额外信息:由于以下试验测试环境为 PC 以及 Android O 的手机,由于Android 在9.0 之前并未在内核真正实现PTHREAD_EXPLICIT_SCHED 的设置,因此在线程优先级是否有效上的结论并不准确。目前可以知道的是,在Android P之前的版本上,native 层的线程优先级设置并不会有预期的效果。而由于我手上目前没有 root 的 Android P 设备,也...

2017-04-05 21:28:37 1170 3

原创 TI 8127 Appro 框架简析

这也许是我接触的最后一个嵌入式项目了Appro框架是Ti发布的

2014-08-21 11:45:12 2812

原创 多路视频策略显示

最近在ubuntu 12.04 上做了一个基于SDL 1.3版本的多路视频按策略显示的程序,最早是想通过寻找到某种规律来通过程序内部自己来决议显示策略,后来发现,还是使用配置文件比较好。这个项目接触到的新东西不太多,最关键的几个点:1. 串口读写    打开设备,配置参数,write/read,需要注意的是,串口读写不能简单的只调用一次read或者write,要判断返回值,确保读写内容完整

2013-10-29 15:06:59 2423

原创 最近工作总结

最近搞了一些多线程的网络编程,用到的一些东西在这里总结一下.1. socket的阻塞与非阻塞, 封装了两个安全发送和接收的函数,不过在阻塞模式下,还真没发现收不完或者发不完,而socket还健在的情况.另外,对于大家为何在TCP连接中诟病非阻塞方式socket,我不太理解,这个项目其实对于数据的实时性要求是相当高的,甚至有考虑过使用UDP,如果使用阻塞发送,那么就是将延时因素完全交给操作系统掌

2012-09-14 23:37:16 888

原创 多线程socket编程的2B设计

最近做一个local socket(domain socket)服务器,来进行进程间通信,使用线程池管理多个线程与不同的客户端连接...在设计QUERY_CAPABILITY(能力查询)的时候,犯了一个2B的错误...现在假设我有两个客户端C1, C2, 服务器S分别启动两个线程T1, T2来处理与他们的通信此时C1发送命令QUERY_CAPABILITY到T1, T1做的决策是调用线

2012-06-04 16:57:12 1332

原创 H264 NALU slice 模式

slice模式下一个完整的NALU需要判断每一个slice包得第5个字节与上0x80是否等于80.还是举个例子来说明好了....比如:第一个包 00 00 00 01 65 9A …第二个包 00 00 00 01 65 00 ...第三个包 00 00 00 01 65 01

2011-07-28 09:24:04 5328 10

原创 最近的一些心得

1.fork()函数   以前了解过一些,但是搞得很糊涂,今天又花了2个小时来看,终于搞清楚了.   在调用fork()后,系统会立即copy一份当前进程到内存中作为子进程运行.而这两份内存,并没有任何共享资源,只有通过pid(fork()的返回值)来判断哪一个是父进程(pid等

2011-07-20 18:49:49 728

原创 Android Audio HAL層的研究

Android 對於聲音的處理分四層:1.java-JNI2.libmedia中的AudioSystem,AudioStreamIn,AudioStreamOut3.libmedia中的AudioFlinger,IAudioxxx系列4.libaudio,HAL層,在S5PV210上是對ALSA的封裝.既然三星已經做了ALSA的封裝,那就直接在HAL層下手吧,只是參數的值和參數的類型,需要研究

2011-06-01 12:40:00 3177 4

原创 畫中畫相關

<br />很久沒來寫點什麽了...因為一直都在忙啊<br />三星搞個NV12T的YUV格式,要搞死人了啊...終於在今天是徹底弄懂了...<br />但是還不能熟練的操作<br />另外...Android他喵的就不支持畫中畫啊~~<br />在視頻圖層上可以疊加一層靜態圖片,但是兩個動態視頻圖層,他就不行啊~~<br /> <br />直接操作解碼出來的數據,又有參考幀的問題啊~~每次解碼器解碼會使用上一(或者幾)幀的數據作為參考啊...<br />memcpy上去的圖像邊緣模糊不說,如果有背景物體從

2011-05-24 17:16:00 937 7

原创 放棄OpenCore,還是自己設計框架好

<br />    __

2011-04-28 09:48:00 1096

原创 C++ 使用强制类型转换引入临时变量的问题

<br />这两天发现Android中java上层传递下来的ISurface,我在底层居然画不出图像,但是如果我在底层自己创建ISurface却是可以的...<br />这让我和我同事纠结无比,四处找原因...<br /><br />由于这个现象很像是因为上层传递下来的ISurface并不是上层所管理的那一个...所以我把怀疑方向放在了接口传递参数的时候...当然了,现在看来我所遇到的这个问题并非接口传递参数导致的.<br />其中很多地方有返回sp<T>& 的函数调用,并且返回值又是一个强制类型转换的结

2011-03-29 16:39:00 2989 3

原创 近期工作经验总结

<br />最近在Android下层做rtp发送的模块,算是工作以来,最正规的coding mission吧<br />虽然代码不多,但是让我对于项目的开发略有一些心得.<br />从我的感觉来看,最重要的就是一个整体的规划,首先定义与android层的接口,接口调用一旦定义下来,<br />那么后期的coding工作,都将以此为中心,所有功能模块的功能实现,都需要考虑接口的问题.<br /> <br />但是,这次的工作也完成的并不算完美,整体框架是依托于上层的框架来的,但是上层框架并未决定下来,所以到最

2011-03-05 12:16:00 682

原创 Via OpenCore decoding H.264 ES stream(RTP) from net

Working on

2011-01-28 11:49:00 1390

原创 Via OpenCore FileOutputNode getting RAW H.264 data

Success!

2011-01-26 16:38:00 1095 1

原创 Android 2.2 Froyo 上的VideoCamera 数据流程

图画得很山寨... 我也是图方便。

2011-01-18 16:30:00 1184

原创 Sipdroid 简要评估

<br /><br />1.音频格式:<br />  G722 HD Voice (64kbit) - only over WLAN and 3G (requires paid account)<br />  PCMA (64kbit) - only over WLAN and 3G<br />  PCMU (64kbit) - only over WLAN and 3G<br />  speex (11kbit) - always try<br />  GSM (13kbit) - always try<

2011-01-12 15:16:00 1951 2

原创 pv210+Froyo

总算拿到三星pv210的开发板了,迫不及待的翻看了一下光盘上的Froyo的源代码。唔,编解码这一块居然是直接copy的pc110的代码,估计是把pc110上external/opencore 文件夹直接复制过来的=.= 其主要是在external/opencore/codecs_v2/omx/目录下新做了5个component,"omx_mfc_h264","omx_mfc_h264enc","omx_mfc_m4v","omx_mfc_m4venc","omx_mfc_wmv"。在实现硬解的方式上居然和我

2011-01-06 14:53:00 1432 15

原创 Android 1.5 告别篇

     唉,为了在上Android 2.2后能够轻松一些,花了近两个月时间在1.5上完善前一个项目的移植,虽然新项目的开发板和系统版本都换了,但是OpenCore的框架,OpenMAX的框架还是不变的...不过,Android 2.2已经开始使用stagefright了,Android 2.3 就完全用stagefright替换掉OpenCore了,怎么想,都觉得这段时间的工作没有太多的成就.     Android 1.5虽然做了libopencoremp4.so,但是其实他只支持.3gp的本地文件播放

2010-12-29 11:12:00 1095 1

转载 悲催的程序员,以及程序员的悲催

<br />原文地址:http://blog.csdn.net/Oneway102/archive/2010/12/20/6086741.aspx<br /> <br /><br />我尽量用平和一点的口吻跟你说说关于程序员的那点事儿。<br />1.<br />我在一个叫摩托罗拉的公司干过,那地方有50%的人整天干的事情就是催另外25%的人没完没了的解剩下那25%的人造成的bug。我是个程序员,每天敲敲打打,哪天电脑崩溃了你会发现我这辈子啥都没留下。大多数人甚至都没有想过我们是怎么把手机捣鼓出来的,包括是

2010-12-22 17:52:00 569

转载 程序员阿士顿的故事

原文地址http://www.zhuoqun.net/html/y2010/1565.html前几天有人在 Stack Exchange 上提了一个问题 How can a new programmer impress the software engineer (boss)?(作为新手程序员如何给软件工程师出身的老板留下好印象?),Joel Spolsky(Joel on Software 的主人,《软件随想录》的作者) 看到了这个问题,他没有正面回答,而是在下面讲了悲催的程序员阿士顿的故事。我很喜欢这个

2010-12-22 17:50:00 745

原创 Android 文件解析->解码->输出 的个人分析

花了一个月的时间熟悉Opencore和OpenMax,又花了近半个月,来研究这玩意儿,终于有了一些结论了.在这里记录下来,帮助后来者,更重要的是怕自己以后忘记...以下分析适用与.3gp文件的播放,Android版本为1.5...暂时还有几个地方没有弄清楚,一个是Mp4ParserNode如何将parse(解析)后的数据向下交给解码Node,另一个是解码出来的OutputBuffer是如何send到显示输出的地方,这两处,代码中都使用的PVMFPortInterface* 来完成的.如果以后能够完成,我会来

2010-12-15 18:05:00 1087

原创 函数指针.回调函数.学习

<br />最近看Android代码,发现很多回调函数的使用,由于本来对回调函数的不熟悉,感觉很生涩.于是自己写了几行代码来熟悉熟悉.<br />回调函数首先就得有一个函数指针.<br />typedef void (*callback_fun)(char *ptr); <br /> <br />其次,得有供函数指针指向的函数<br />void output_int(char *x){ cout << "output_int:" << x << endl;} <br />void out

2010-12-10 17:12:00 919

原创 Android 2.3 发布

<br />昨天Android 2.3 发布,听说多媒体框架完全弃用了OpenCore...<br />Shit! 应该是换用straightfright 了,现在还拿不到源代码,具体还不清楚...<br /> <br />哎,不知道使用android进行多媒体开发的公司的成本压力,能不能暂缓用户们升级新系统的需求啊...

2010-12-08 11:31:00 594

原创 Android视频文件格式解析相关分析

引用:http://blog.csdn.net/wstarx/archive/2008/12/17/3541458.aspx目录结构OpenCore的代码在以下目录中:external/opencore/。这个目录是OpenCore的根目录,其中包含的子目录如下所示: * android:这里面是一个上层的库,它基于PVPlayer和PVAuthor的SDK实现了一个为Android使用的Player和Author。 * baselibs:包含数据结构和线程安全等内容的底层库

2010-12-06 17:30:00 2356 2

原创 随笔

就目前来看,我觉得目前的研究方向是有问题的...目前的共识是:做硬件加速,必然要做HAL层.但是分歧的地方在于,HAL层的范围到底如何界定.我个人持的观点是,HAL层仅限于hardware/libhardware/include/hardware/目录下,参考http://my.unix-center.net/~Simon_fu/?p=630但是,也有其他的观点,并且让我暂时找不到反驳的地方,就是HAL层不仅在上面的目录下,还包括omx的component和opencore的node,参考http://bl

2010-12-03 10:16:00 648

原创 .3gp 文件播放初窥

近日在同事的帮助下,写了一个最简单的播放器apk,当然,是播放视频的,唔,没想到代码量真是少...package VideoPlayer.norz;import android.app.Activity;import android.graphics.PixelFormat;import android.media.AudioManager;import android.os.Bundle;import android.view.Menu;import android.view.Me

2010-12-02 09:58:00 826

原创 The relationship between OpenCore and OMX

OpenCore does not use the OpenMax component interface natively.Support for OpenMax codecs comes through an adapter node.On Jan 20, 1:55 am, Sachin pandhare wrote:> Hi Dave,> Could you please elaborate on "OpenCore is not based on OMX"?> Thanks,

2010-11-29 14:39:00 804

原创 live555 在网络异常断开后卡死的问题

<br /><br /> <br />如上图,只需要在GroupsockHelper.cpp中的select加上一个额外的时间判断,即可.如果传递进来的时间为null,那么自己加上超时时间

2010-11-24 10:31:00 3824 1

转载 Linux系统当前可用内存

<br />你可以在Linux中,敲入free命令获得当前系统的内存使用情况。<br />#busybox free<br />total used free shared buffers<br />Mem: 55636 52808 2828 0 3132<br />Swap: 0 0 0<br />Total: 55636 52808 2828<br />当我满心欢喜的敲入上面的命令时,收到的却是一阵阵的冷汗,2828k,我的系统只剩下了2M多的内存,系统还能跑吗,是不是命令有错误!!!<br />让我们

2010-09-19 09:47:00 4141

原创 怪事

这两天发现,修改了live555库之后,重新编译uml后,添加在库中的调试信息无法被打印出来...今天才找到原因,uml的Makefile是从../lib路径下去找库文件,而修改了之后的BasicUsageEnvironment生成的libBasicUsageEnvironment.a是在其本身路径下,所以我想,直接将其复制到../lib下应该就可以了吧?可是复制过来后,在uml中make会报错... skipping incompatible libBasicUsageEnvironment.a when

2010-09-15 16:45:00 556

Windows 空白图标资源 blank.ico

Windows 空白图标资源,blank.ico,windows系统资源,通过修改注册表,去除windows图标箭头

2019-06-10

H.264-ES H.264裸数据

H.264-ES H.264裸数据 通过Android获取,编码器为三星提供

2011-01-27

RFC3261 中文讲解

SIP协议RFC3261的中文讲解 1、SIP协议介绍 Internet的许多应用都需要建立和管理一个会话,会话在这里的含义是在参与者之间的数据的交换。由于考虑到参与者的实际情况,这些应用的实现往往是很复杂的:参与者可能是在代理间移动,他们可能可以有多个名字,他们中间的通讯可能是基于不同的媒介(比如文本,多媒体,视频,音频等)-有时候是多种媒介一起交互。人们创造了无数种通讯协议应用于实时的多媒体会话数据比如声音,影像,或者文本。本SIP(会话初始协议)和这些协议一样,同样允许使用Internet端点(用户代理)来寻找参与者并且允许建立一个可共享的会话描述。为了能够定位精确的会话参与者,并且也为了其他的目的,SIP允许创建基础的network hosts(叫做代理服务器),并且允许终端用户注册上去,发出会话邀请,或者发出其他请求。SIP是一个轻形的,多用途的工具,可以用来创建,修改和终止会话,它独立运作于通讯协议之下,并且不依赖建立的会话类型。 2、SIP协议功能概况 SIP是一个应用层的控制协议,可以用来建立、修改、和终止多媒体会话(或者会议)例如Internet 电话。SIP也可以邀请参与者参加已经存在的会话,比如多方会议。媒体可以在一个已经存在的会话中方便的增加(或者删除)。SIP显示的支持名字映射和重定向服务,这个用于支持个人移动业务-用户可以使用一个唯一的外部标志而不用关系他们的实际网络地点。SIP在建立和维持终止多媒体会话协议上,支持5个方面: 用户定位: 检查终端用户的位置,用于通讯。 用户有效性:检查用户参与会话的意愿程度。 用户能力:检查媒体和媒体的参数。 建立会话:”ringing”,建立会话参数在呼叫方和被叫方。 会话管理:包括发送和终止会话,修改会话参数,激活服务等等。 SIP不是一个垂直集成的通讯系统。SIP可能叫做是一个部件更合适,它可以用作其他IETF协议的一个部分,用来构造完整的多媒体架构。比如,这些架构将会包含实时数据传输协议(RTP)(RFC 1889)用来传输实时的数据并且提供QoS反馈,实时流协议(RSTP)(RFC 2326)用于控制流媒体的传输,媒体网关控制协议(MEGACO)(RFC 3015)用来控制到公共电话交换网(PSTN)的网关,还有会话描述协议(SDP)(RFC 2327)用于描述多媒体会话。因此,SIP应该和其他的协议一起工作,才能提供完整的对终端用户的服务。虽然基本的SIP协议的功能组件并不依赖于这些协议。 SIP本身并不提供服务。但是,SIP提供了一个基础,可以用来实现不同的服务。比如,SIP可以定位用户和传输一个封装好的对象到对方的当前位置。并且如果我们利用这点来通过SDP传输会话的描述,立刻,对方的用户代理可以得到这个会话的参数。如果我们用这个像传输会话描述(SESSION DESCRIPTION SD)一样传输呼叫方的照片,一个”呼叫ID”服务很容易就建立了。这个简单的例子说明了,SIP作为一个基础,可以在其上提供很多不同的服务。 SIP并不提供会议控制服务(比如议席控制或者投票系统),并且并没有建议会议应该则那样管理。可以通过在SIP上建立其他的会议控制协议来发起一个会议。由于SIP可以管理参与会议的各方的会话,所以会议可以跨异构的网络,SIP 并不能,也不打算提供任何形式的网络资源预留管理。 安全对于提供的服务来说特别重要。要达到理想的安全程度,SIP提供了一套安全服务,包括防止拒绝服务,认证服务(用户到用户,代理到用户),完整性保证,加密和隐私服务。 SIP可以基于IPV4也可以基于IPV6 3、术语 在这个文档中,关键词”必须”,”不允许”,”要求”,”可以”,”不可以”,”应该”,”不应该”,”建议”,”不建议”,”可能”,”可选” 是根据BCP14,RFC 2119[2]的规范描述SIP实现需要的不同层次 4、实施概览 这节通过简单的示例介绍了SIP的基本实现。本节是通过自然的而非标准的示例来介绍的。 第一个例子说明了SIP的基本功能:定位一个端点,发出通讯请求,通过协商会话参数建立会话,拆卸刚才建立的会话。 图一表示一个典型的Alice和Bob两个用户间的SIP消息交易交换例子.(每一个消息采用字母”F”和一个用来指向正文的一个数字做标记)在这个例子里,Alice在她的PC上使用一个SIP的应用程序(比如说一个软的电话),呼叫Bob在Internet上的一个SIP电话。这个例子也掩饰了两个SIP代理之间,怎样为Alice和Bob建立会话连接。This typical arrangement is often referred to as the "SIP trapezoid" as shown by the geometric shape of the dotted lines in Figure 1. Alice 通过Bob的SIP标志 “呼叫” Bob,这个SIP标志是统一分配的资源(Uniform Resource Identifier URI)称作SIP URI。SIP URI在19.1节中定义。它很像一个email地址,典型的SIP URI包括一个用户名和一个主机名。在这个范例中,SIP URI是sip:[email protected],biloxi.com是Bob的SIP服务提供商。Alice有一个SIP URI: sip:[email protected]。 Alice可以输入Bob的URI,也可以直接在地址本的一个超级链接上点击一下Bob的URI。SIP也提供保密URI,称作SIPS URI。例如:sips: [email protected]。 一个基于SIPS URI的通话保证这个通话是安全的,并且对呼叫者和被叫的所有的SIP消息是加密传输的(叫做TLS)。在TLS中,请求是通过加密方式传输给被叫方,但是这个加密机制是基于被叫方宿主服务器的实现的。 SIP是基于一个类似HTTP协议的请求应答的通讯模式。每一个通讯都包含对某个功能的请求,并且起码需要一个应答。在这个应答中,Alice的软电话发送一个含有Bob的SIP URI地址的INVITE通讯请求。INVITE是一个SIP请求的例子,表示请求方(Alice)希望服务方(Bob)应答。INVTE请求包含一系列的包头域(Header fields)。包头中包含很多属性并且包含了传输消息的附加信息。在INVITE中有如下的字段:呼叫的唯一标志,目的地址,Alice的地址,Alice和Bob建立会话的类型。INVITE请求(图1中的F1)可能看起来像这样的: INVITE sip:[email protected] SIP/2.0 Via: SIP/2.0/UDP pc33.atlanta.com; branch=z9hG4bK776asdhds Max-Forwards: 70 To: Bob <sip:[email protected]> From: Alice <sip:[email protected]>;tag=1928301774 Call-ID: [email protected] CSeq: 314159 INVITE [Via vs. from vs. contact 解答:VIA~~路径 From~~会话的发起端,在消息的送过去送回来的过程中都不会改便,它和to一起来标志一个会话。所以即使时接受方再将消息返回到发送端,from,to里的内容也不会变 Contact~~直接回送消息的地址。会话过程中随着接、收双方的互换是会改变的它不会该act

2010-07-14

The 3G IP Multimedia Subsystem (IMS) 3rd Edition

The 3G IP Multimedia Subsystem (IMS) 3rd Edition

2010-06-24

SIPpGUISetup.exe

SIPpGUI版,使用FrameWork库

2010-06-23

PDF-XChange_Viewer_2.0.46.0_Special

艾伦家园破解的PDF阅读、编辑器,功能强大,无需注册

2010-06-23

SIP协议RFC3261

SIP协议的详细介绍,RFC 3261技术文档

2010-06-23

Understanding SIP Servlet 1.1

最新Sip Servlet API讲解与示例

2010-06-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除