strcmp,stricmp:
原型:int strcmp(const void *s1, const void *s2);
功能:比较字符串s1和s2是否相同,区分大小写。
说明:如果s1=s2则返回零,否则返回非零值。
原型:int stricmp(char s1,char s2);
功能:比较字符串s1和s2,但不区分字母的大小写。
说明:strcmpi是到stricmp的宏定义,实际未提供此函数。
当s1<s2时,返回值<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0
assert:
原型:
void assert( int expression );
作用是发现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,
然后通过调用 abort 来终止程序运行。
缺点:
频繁的调用会极大的影响程序的性能,增加额外的开销。
在调试结束后,可以通过在包含#include <assert.h>的语句之前插入 #define NDEBUG 来禁用assert调用,
示例代码如下:
#include <stdio.h>
#define NDEBUG
#include <assert.h>
assert()都只是在DEBUG的模式下才起作用的,如果定义了NDEBUG,编译器会认为是非DEBUG的模式
(虽然编译出来的程序还是很大,而且还可以进行调试),此时assert()就没有用了.
unlink
原型:int unlink(const char * pathname);
函数说明:unlink()会删除参数pathname 指定的文件. 如果该文件名为最后连接点,
但有其他进程打开了此文件, 则在所有关于此文件的文件描述词皆关闭后才会删除.
如果参数pathname 为一符号连接, 则此连接会被删除。
返回值:成功则返回0, 失败返回-1, 错误原因存于errno
错误代码:
1、EROFS 文件存在于只读文件系统内。
2、EFAULT 参数pathname 指针超出可存取内存空间。
3、ENAMETOOLONG 参数pathname 太长。
4、ENOMEM 核心内存不足。
5、ELOOP 参数pathname 有过多符号连接问题。
6、EIO I/O 存取错误。
Sip采用offer/answer(请求、应答)机制来协商。
请求发起的一方提供(offer)自己支持的媒体编码列表,被请求的一方比较自己支持的媒体列表最终选择
一种(或几种)编码以应答(answer)方法通知请求者,然后他们就可以使用兼容的编码进行通信了。
rtp和rtcp:
数据包传输协议。rtcp :实时传输控制协议是实时传输协议的一个姊妹协议,rtp使用一个偶数udp端口,
而rtcp则使用rtp的下一个相邻的奇数端口。rtcp本身并不传输数据,但会和rtp一起协作将多媒体数据
打包并发送出去。rtcp的主要功能是为rtp提供的服务的质量提供反馈信息。
转码
Freeswitch是一个b2bua,因而在桥接两条腿时,如果两条腿分别使用不同的编码,则需要经过一个转码
过程分别转成对方需要的编码。在需要转码时,freeswitch会将收到的音频数据转成一种中间格式,称为
L16,即线性16位的编码。这种格式可以与其他各种编码进行切换。
另外,即使呼叫的双发采用同样的编码,但如果有ivr或录,放音等中间环节时,也需要转码。