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