GB28181开发(二) pjsip库SDP协议扩展

本文介绍了如何在项目中利用pjsip库扩展支持GB28181协议。由于pjsip默认的SDP编解码不支持GB28181的y参数等扩展,需要修改源码进行增强。主要修改了pjmedia/include/pjmedia/sdp.h和pjmedia/src/pjmedia/sdp.c文件。具体包括在`sdp.h`中扩展`sdp_session`结构,增加对other参数的解码和编码处理,并在`sdp.c`中实现了解析和复制其他参数的函数。

项目使用pjsip库作为底层协议库,扩展支持GB28181协议,但pjsip的sdp编解码不支持额外参数解析,需要修改源代码,以便支持GB28181中关于SDP协议的扩展(例如y参数)。源码主要在pjmedia/include/pjmedia/sdp.h和pjmedia/src/pjmedia/sdp.c上修改。

1、在sdp.h中扩展pjmedia_sdp_session定义,增加other_count和other字段,后面的修改都是在sdp.c中

/**
 * This structure describes SDP session description. A SDP session descriptor
 * contains complete information about a session, and normally is exchanged
 * with remote media peer using signaling protocol such as SIP.
 */
struct pjmedia_sdp_session
{
    /** Session origin (o= line) */
    struct
    {
	pj_str_t    user;	    /**< User 				*/
	pj_uint32_t id;		    /**< Session ID			*/
	pj_uint32_t version;	    /**< Session version		*/
	pj_str_t    net_type;	    /**< Network type ("IN")		*/
	pj_str_t    addr_type;	    /**< Address type ("IP4", "IP6")	*/
	pj_str_t    addr;	    /**< The address.			*/
    } origin;

    pj_str_t	       name;	    /**< Subject line (s=)		*/
    pjmedia_sdp_conn  *conn;	    /**< Connection line (c=)		*/
    unsigned	       bandw_count; /**< Number of bandwidth info (b=)	*/
    pjmedia_sdp_bandw *bandw[PJMEDIA_MAX_SDP_BANDW];
				    /**< Bandwidth info array (b=)	*/
    
    /** Session time (t= line)	*/
    struct
    {
	pj_uint32_t start;	    /**< Start time.			*/
	pj_uint32_t stop;	    /**< Stop time.			*/
    } time;

    unsigned	       attr_count;		/**< Number of attributes.  */
    pjmedia_sdp_attr  *attr[PJMEDIA_MAX_SDP_ATTR]; /**< Attributes array.   */

    unsigned	       media_count;		/**< Number of media.	    */
    pjmedia
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值