git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4980 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Anthony Minessale 2007-04-19 22:49:01 +00:00
parent d70893d808
commit 1647d3e568
2 changed files with 16 additions and 5 deletions

View File

@ -312,6 +312,8 @@ struct private_object {
nua_handle_t *nh; nua_handle_t *nh;
nua_handle_t *nh2; nua_handle_t *nh2;
sip_contact_t *contact; sip_contact_t *contact;
uint32_t owner_id;
uint32_t session_id;
/** VIDEO **/ /** VIDEO **/
switch_frame_t video_read_frame; switch_frame_t video_read_frame;
switch_codec_t video_read_codec; switch_codec_t video_read_codec;

View File

@ -40,7 +40,6 @@ switch_status_t sofia_glue_tech_set_video_codec(private_object_t *tech_pvt, int
void sofia_glue_set_local_sdp(private_object_t *tech_pvt, char *ip, uint32_t port, char *sr, int force) void sofia_glue_set_local_sdp(private_object_t *tech_pvt, char *ip, uint32_t port, char *sr, int force)
{ {
char buf[2048]; char buf[2048];
switch_time_t now = switch_time_now();
int ptime = 0; int ptime = 0;
int rate = 0; int rate = 0;
uint32_t v_port; uint32_t v_port;
@ -65,13 +64,23 @@ void sofia_glue_set_local_sdp(private_object_t *tech_pvt, char *ip, uint32_t por
sr = "sendrecv"; sr = "sendrecv";
} }
if (!tech_pvt->owner_id) {
tech_pvt->owner_id = (uint32_t) time(NULL) - port;
}
if (!tech_pvt->session_id) {
tech_pvt->session_id = tech_pvt->owner_id ;
}
tech_pvt->session_id++;
snprintf(buf, sizeof(buf), snprintf(buf, sizeof(buf),
"v=0\n" "v=0\n"
"o=FreeSWITCH %d%" SWITCH_TIME_T_FMT " %d%" SWITCH_TIME_T_FMT " IN IP4 %s\n" "o=FreeSWITCH %010u %010u IN IP4 %s\n"
"s=FreeSWITCH\n" "s=FreeSWITCH\n"
"c=IN IP4 %s\n" "t=0 0\n" "c=IN IP4 %s\n" "t=0 0\n"
"a=%s\n" "a=%s\n"
"m=audio %d RTP/AVP", port, now, port, now, ip, ip, sr, port); "m=audio %d RTP/AVP", tech_pvt->owner_id, tech_pvt->session_id, ip, ip, sr, port);
if (tech_pvt->rm_encoding) { if (tech_pvt->rm_encoding) {
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), " %d", tech_pvt->pt); snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), " %d", tech_pvt->pt);
@ -277,7 +286,7 @@ void sofia_glue_check_video_codecs(private_object_t *tech_pvt)
{ {
if (tech_pvt->num_codecs && !switch_test_flag(tech_pvt, TFLAG_VIDEO)) { if (tech_pvt->num_codecs && !switch_test_flag(tech_pvt, TFLAG_VIDEO)) {
int i; int i;
tech_pvt->video_count = 0;
for (i = 0; i < tech_pvt->num_codecs; i++) { for (i = 0; i < tech_pvt->num_codecs; i++) {
if (tech_pvt->codecs[i]->codec_type == SWITCH_CODEC_TYPE_VIDEO) { if (tech_pvt->codecs[i]->codec_type == SWITCH_CODEC_TYPE_VIDEO) {
tech_pvt->video_count++; tech_pvt->video_count++;