sdp_message_t* sdp = NULL;
sdp_message_init(&sdp); //初始化sdp包
sdp_message_v_version_set(sdp, osip_strdup("0")); //设置版本
sdp_message_o_origin_set(sdp,osip_strdup("-"),osip_strdup("0"),osip_strdup("0"),osip_strdup("IN"),osip_strdup("IP4"),osip_strdup("0.0.0.0")); //设置
sdp_message_s_name_set(sdp, osip_strdup("session navigation")); //名字
sdp_message_t_time_descr_add(sdp,osip_strdup("0"), osip_strdup("0")); //时间?
char* ip =(char*) osip_malloc(32);
memset(ip,0,32);
eXosip_guess_localip(AF_INET,ip, 32); //获得本地ip
printf("ip = %s\n",ip);
sdp_message_c_connection_add(sdp,-1,osip_strdup("IN"),osip_strdup("IP4"),osip_strdup(ip),NULL,NULL); //连接数据
osip_free(ip);
ip = NULL;
//sdp_message_a_attribute_add(sdp,1,NULL,"sendrecv");
sdp_message_m_media_add(sdp,osip_strdup("audio"),osip_strdup(LOCAL_AUDIO_PORT), NULL, osip_strdup("RTP/AVP")); //音频
sdp_message_m_payload_add(sdp,0,osip_strdup("18"));
sdp_message_a_attribute_add(sdp,0,osip_strdup("rtpmap"),osip_strdup("18 G729/8000/2"));
//sdp_message_a_attribute_add(sdp,0,NULL,"sendrecv");
sdp_message_m_media_add(sdp,osip_strdup("video"),osip_strdup(LOCAL_VIDEO_PORT), NULL, osip_strdup("RTP/AVP")); //视频
sdp_message_m_payload_add(sdp,1,osip_strdup("99"));
sdp_message_a_attribute_add(sdp,1,osip_strdup("rtpmap"),osip_strdup("99 H264/90000"));
//sdp_message_a_attribute_add(sdp,1,"fmtp","99 profile-level-id=428014; packetization-mode=0; sprop-parameter-sets=Z0KADJWgUH5A,aM4JyA==");
//sdp_message_a_attribute_add(sdp,0,"framerate","15");
char* dest = NULL;
sdp_message_to_str(sdp,&dest);//将sdp转换为字符串
sdp_message_free(sdp);
sdp = NULL;
//osip_list_remove(&invite->contacts, 0);
osip_message_set_body(invite, dest,strlen(dest)); //将sip头和sdp体连接起来
osip_message_set_content_type(invite,"application/sdp"); //设置sip头为sdp
osip_free(dest);//need free?
dest = NULL;
#ifdef SHOW_SIP_MESSAGE
char* inte;
size_t len;
osip_message_to_str(invite,&inte,&len);
printf("==========================+++++++++++++++++++++++++>invite = %s\n",inte);
osip_free(inte)
|