-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathSipUserAgentCallBack.cpp
More file actions
133 lines (114 loc) · 3.34 KB
/
SipUserAgentCallBack.cpp
File metadata and controls
133 lines (114 loc) · 3.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/*
* Copyright (C) 2012 Yee Young Han <websearch@naver.com> (http://blog.naver.com/websearch)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "SipUserAgent.h"
#include "MemoryDebug.h"
/**
* @ingroup SipUserAgent
* @brief RTP IP/Port 를 수정한다.
* @param pszIp IP 주소
* @param iPort Port 번호
* @param iSocketCountPerMedia 미디어마다 생성하는 소켓 개수
*/
void CSipCallRtp::SetIpPort( const char * pszIp, int iPort, int iSocketCountPerMedia )
{
m_strIp = pszIp;
m_iPort = iPort;
#ifdef USE_MEDIA_LIST
SDP_MEDIA_LIST::iterator itMedia;
int iIndex = 0;
for( itMedia = m_clsMediaList.begin(); itMedia != m_clsMediaList.end(); ++itMedia )
{
itMedia->m_iPort = m_iPort + iIndex * iSocketCountPerMedia;
itMedia->DeleteAttribute( "rtcp" );
++iIndex;
}
#endif
}
/**
* @ingroup SipUserAgent
* @brief RTP 전송/수신 방향을 설정한다.
* @param eDirection RTP 전송/수신 방향
*/
void CSipCallRtp::SetDirection( ERtpDirection eDirection )
{
m_eDirection = eDirection;
#ifdef USE_MEDIA_LIST
SDP_MEDIA_LIST::iterator itMedia;
const char * pszDirection = GetRtpDirectionString( eDirection );
for( itMedia = m_clsMediaList.begin(); itMedia != m_clsMediaList.end(); ++itMedia )
{
itMedia->SetDirection( pszDirection );
}
#endif
}
/**
* @ingroup SipUserAgent
* @brief 미디어 개수를 리턴한다.
* @returns 미디어 개수를 리턴한다.
*/
int CSipCallRtp::GetMediaCount( )
{
int iCount = 1;
#ifdef USE_MEDIA_LIST
iCount = (int)m_clsMediaList.size();
if( iCount == 0 ) iCount = 1;
#endif
return iCount;
}
/**
* @ingroup SipUserAgent
* @brief 미디어 리스트에서 audio media 를 검색한 후, audio media 에 대한 포트 번호를 리턴한다.
* @returns 성공하면 audio media 에 대한 포트 번호를 리턴하고 실패하면 -1 를 리턴한다.
*/
int CSipCallRtp::GetAudioPort( )
{
int iPort = -1;
#ifdef USE_MEDIA_LIST
SDP_MEDIA_LIST::iterator itList;
for( itList = m_clsMediaList.begin(); itList != m_clsMediaList.end(); ++itList )
{
if( !strcmp( itList->m_strMedia.c_str(), "audio" ) )
{
iPort = itList->m_iPort;
break;
}
}
#endif
return iPort;
}
/**
* @ingroup SipUserAgent
* @brief 미디어 리스트에서 video media 를 검색한 후, video media 에 대한 포트 번호를 리턴한다.
* @returns 성공하면 video media 에 대한 포트 번호를 리턴하고 실패하면 -1 를 리턴한다.
*/
int CSipCallRtp::GetVideoPort( )
{
int iPort = -1;
#ifdef USE_MEDIA_LIST
SDP_MEDIA_LIST::iterator itList;
for( itList = m_clsMediaList.begin(); itList != m_clsMediaList.end(); ++itList )
{
if( !strcmp( itList->m_strMedia.c_str(), "video" ) )
{
iPort = itList->m_iPort;
break;
}
}
#endif
return iPort;
}