13
|
1 |
/** |
|
2 |
* Java RTP Library (jlibrtp) |
|
3 |
* Copyright (C) 2006 Arne Kepp |
|
4 |
* |
|
5 |
* This library is free software; you can redistribute it and/or |
|
6 |
* modify it under the terms of the GNU Lesser General Public |
|
7 |
* License as published by the Free Software Foundation; either |
|
8 |
* version 2.1 of the License, or (at your option) any later version. |
|
9 |
* |
|
10 |
* This library is distributed in the hope that it will be useful, |
|
11 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
13 |
* Lesser General Public License for more details. |
|
14 |
* |
|
15 |
* You should have received a copy of the GNU Lesser General Public |
|
16 |
* License along with this library; if not, write to the Free Software |
|
17 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
|
18 |
*/ |
|
19 |
package jlibrtp; |
|
20 |
|
|
21 |
import java.util.*; |
|
22 |
import java.net.*; |
|
23 |
|
|
24 |
public class ValidateRtcpPkt { |
|
25 |
|
|
26 |
public static void main(String[] args) { |
|
27 |
DatagramSocket rtpSock = null; |
|
28 |
DatagramSocket rtcpSock = null; |
|
29 |
|
|
30 |
try { |
|
31 |
rtpSock = new DatagramSocket(1233); |
|
32 |
rtcpSock = new DatagramSocket(1234); |
|
33 |
} catch (Exception e) { |
|
34 |
//do nothing |
|
35 |
} |
|
36 |
RTPSession rtpSession = new RTPSession(rtpSock, rtcpSock); |
|
37 |
|
|
38 |
System.out.println("************************** SSRC: " + rtpSession.ssrc + " **************************"); |
|
39 |
ParticipantDatabase partDb = new ParticipantDatabase(rtpSession); |
|
40 |
//InetAddress test = InetAddress.getByName("127.0.0.1"); |
|
41 |
Participant part1 = new Participant("127.0.0.1",12, 34); |
|
42 |
Participant part2 = new Participant("127.0.0.2",56, 78); |
|
43 |
|
|
44 |
part1.ssrc = 123; |
|
45 |
part2.ssrc = 345; |
|
46 |
|
|
47 |
InetSocketAddress testadr = null; |
|
48 |
|
|
49 |
try { |
|
50 |
testadr = InetSocketAddress.createUnresolved("localhost", 12371); |
|
51 |
} catch (Exception e) { |
|
52 |
// Do nothing |
|
53 |
} |
|
54 |
|
|
55 |
part1.cname = "test3"; |
|
56 |
part2.cname = "test2"; |
|
57 |
part1.loc = "1231231231"; |
|
58 |
part2.loc = "Asker"; |
|
59 |
part1.phone = "+452 1231231"; |
|
60 |
part2.phone = "aasdasda.asdasdas"; |
|
61 |
part1.lastSeqNumber = 111; |
|
62 |
part2.lastSeqNumber = 222; |
|
63 |
part1.timeStampLSR = 111111; |
|
64 |
part2.timeStampLSR = 222222; |
|
65 |
partDb.addParticipant(0,part1); |
|
66 |
partDb.addParticipant(0,part2); |
|
67 |
|
|
68 |
Participant[] partArray = new Participant[2]; |
|
69 |
partArray[0] = part1; |
|
70 |
partArray[1] = part2; |
|
71 |
|
|
72 |
RtcpPktRR rrpkt = new RtcpPktRR(partArray,123456789); |
|
73 |
RtcpPktSR srpkt = new RtcpPktSR(rtpSession.ssrc,12,21,rrpkt); |
|
74 |
//RtcpPktSR srpkt2 = new RtcpPktSR(rtpSession.ssrc,12,21,null); |
|
75 |
//rrpkt = new RtcpPktRR(partArray,1234512311); |
|
76 |
|
|
77 |
//srpkt.debugPrint(); |
|
78 |
//rrpkt.debugPrint(); |
|
79 |
|
|
80 |
CompRtcpPkt compkt = new CompRtcpPkt(); |
|
81 |
compkt.addPacket(srpkt); |
|
82 |
compkt.addPacket(rrpkt); |
|
83 |
compkt.addPacket(rrpkt); |
|
84 |
|
|
85 |
byte[] test2 = compkt.encode(); |
|
86 |
//System.out.print(StaticProcs.bitsOfBytes(test)); |
|
87 |
System.out.println("****************************** DONE ENCODING *******************************"); |
|
88 |
CompRtcpPkt decomppkt = new CompRtcpPkt(test2,test2.length,testadr,rtpSession); |
|
89 |
System.out.println("****************************** DONE DECODING *******************************"); |
|
90 |
System.out.println("Problem code:" + decomppkt.problem); |
|
91 |
|
|
92 |
ListIterator iter = decomppkt.rtcpPkts.listIterator(); |
|
93 |
int i = 0; |
|
94 |
|
|
95 |
while(iter.hasNext()) { |
|
96 |
System.out.println(" i:" + i + " "); |
|
97 |
i++; |
|
98 |
|
|
99 |
Object aPkt = iter.next(); |
|
100 |
if( aPkt.getClass() == RtcpPktRR.class) { |
|
101 |
RtcpPktRR pkt = (RtcpPktRR) aPkt; |
|
102 |
pkt.debugPrint(); |
|
103 |
} else if(aPkt.getClass() == RtcpPktSR.class) { |
|
104 |
RtcpPktSR pkt = (RtcpPktSR) aPkt; |
|
105 |
pkt.debugPrint(); |
|
106 |
} |
|
107 |
} |
|
108 |
|
|
109 |
System.out.println("****************************** BYE *******************************"); |
|
110 |
long[] tempArray = {rtpSession.ssrc}; |
|
111 |
byte[] tempReason = "tas".getBytes(); |
|
112 |
RtcpPktBYE byepkt = new RtcpPktBYE(tempArray,tempReason); |
|
113 |
//byepkt.debugPrint(); |
|
114 |
byepkt.encode(); |
|
115 |
byte[] rawpktbye = byepkt.rawPkt; |
|
116 |
|
|
117 |
RtcpPktBYE byepkt2 = new RtcpPktBYE(rawpktbye,0); |
|
118 |
byepkt2.debugPrint(); |
|
119 |
|
|
120 |
System.out.println("****************************** SDES *******************************"); |
|
121 |
RtcpPktSDES sdespkt = new RtcpPktSDES(true,rtpSession,null); |
|
122 |
rtpSession.cname = "cname123@localhost"; |
|
123 |
//rtpSession.loc = "right here"; |
|
124 |
sdespkt.encode(); |
|
125 |
//rtpSession.cname = "cname124@localhost"; |
|
126 |
//rtpSession.loc = "right hera"; |
|
127 |
byte[] rawpktsdes = sdespkt.rawPkt; |
|
128 |
InetSocketAddress tmpAdr = (InetSocketAddress) rtpSock.getLocalSocketAddress(); |
|
129 |
RtcpPktSDES decsdespkt = new RtcpPktSDES(rawpktsdes, 0, (InetSocketAddress) rtpSock.getLocalSocketAddress() , partDb); |
|
130 |
decsdespkt.debugPrint(); |
|
131 |
//partDb.debugPrint(); |
|
132 |
|
|
133 |
CompRtcpPkt compkt2 = new CompRtcpPkt(); |
|
134 |
compkt2.addPacket(srpkt); |
|
135 |
compkt2.addPacket(sdespkt); |
|
136 |
byte[] compkt2Raw = compkt.encode(); |
|
137 |
|
|
138 |
CompRtcpPkt compkt3 = new CompRtcpPkt(compkt2Raw,compkt2Raw.length,tmpAdr,rtpSession); |
|
139 |
} |
|
140 |
} |