src/jlibrtp/RTCPReceiverThread.java
author nikita@jibe-desktop
Fri, 20 Nov 2009 19:29:42 +0100
changeset 823 2036ebfaccda
permissions -rw-r--r--
debut de la gestion de l'audio, faut tester avec des pcs distincts
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
823
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     1
/**
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     2
 * Java RTP Library (jlibrtp)
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     3
 * Copyright (C) 2006 Arne Kepp
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     4
 * 
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     5
 * This library is free software; you can redistribute it and/or
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     6
 * modify it under the terms of the GNU Lesser General Public
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     7
 * License as published by the Free Software Foundation; either
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     8
 * version 2.1 of the License, or (at your option) any later version.
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
     9
 *
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    10
 * This library is distributed in the hope that it will be useful,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    13
 * Lesser General Public License for more details.
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    14
 * 
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    15
 * You should have received a copy of the GNU Lesser General Public
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    16
 * License along with this library; if not, write to the Free Software
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    18
 */
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    19
package jlibrtp;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    20
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    21
import java.io.IOException;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    22
import java.net.DatagramPacket;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    23
import java.net.InetSocketAddress;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    24
import java.util.Enumeration;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    25
import java.util.Iterator;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    26
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    27
import org.sipdroid.net.tools.DatagramPool;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    28
import org.sipdroid.net.tools.GenericPool;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    29
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    30
/**
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    31
 * This thread hangs on the RTCP socket and waits for new packets
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    32
 * 
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    33
 * @author Arne Kepp
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    34
 * 
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    35
 */
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    36
public class RTCPReceiverThread extends Thread {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    37
	/** Parent RTP Session */
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    38
	private RTPSession rtpSession = null;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    39
	/** Parent RTCP Session */
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    40
	private RTCPSession rtcpSession = null;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    41
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    42
	private GenericPool<CompRtcpPkt> rtcpPacketPool;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    43
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    44
	/**
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    45
	 * Constructor for new thread
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    46
	 * 
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    47
	 * @param rtcpSession
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    48
	 *            parent RTCP session
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    49
	 * @param rtpSession
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    50
	 *            parent RTP session
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    51
	 */
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    52
	RTCPReceiverThread(RTCPSession rtcpSession, RTPSession rtpSession) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    53
		this.rtpSession = rtpSession;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    54
		this.rtcpSession = rtcpSession;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    55
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    56
		rtcpPacketPool = new GenericPool<CompRtcpPkt>(10);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    57
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    58
		if (RTPSession.rtpDebugLevel > 1) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    59
			System.out.println("<-> RTCPReceiverThread created");
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    60
		}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    61
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    62
	}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    63
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    64
	/**
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    65
	 * Find out whether a participant with this SSRC is known.
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    66
	 * 
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    67
	 * If the user is unknown, and the system is operating in unicast mode, try
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    68
	 * to match the ip-address of the sender to the ip address of a previously
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    69
	 * unmatched target
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    70
	 * 
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    71
	 * @param ssrc
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    72
	 *            the SSRC of the participant
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    73
	 * @param packet
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    74
	 *            the packet that notified us
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    75
	 * @return the relevant participant, possibly newly created
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    76
	 */
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    77
	private Participant findParticipant(long ssrc, DatagramPacket packet) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    78
		Participant p = rtpSession.partDb.getParticipant(ssrc);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    79
		if (p == null) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    80
			Enumeration<Participant> enu = rtpSession.partDb.getParticipants();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    81
			while (enu.hasMoreElements()) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    82
				Participant tmp = (Participant) enu.nextElement();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    83
				if (tmp.ssrc < 0
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    84
						&& (tmp.rtcpAddress.getAddress().equals(
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    85
								packet.getAddress()) || tmp.rtpAddress
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    86
								.getAddress().equals(packet.getAddress()))) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    87
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    88
					// Best guess
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    89
					System.out
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    90
					.println("RTCPReceiverThread: Got an unexpected packet from SSRC:"
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    91
							+ ssrc
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    92
							+ " @"
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    93
							+ packet.getAddress().toString()
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    94
							+ ", WAS able to match it.");
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    95
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    96
					tmp.ssrc = ssrc;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    97
					return tmp;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    98
				}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
    99
			}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   100
			// Create an unknown sender
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   101
			System.out
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   102
			.println("RTCPReceiverThread: Got an unexpected packet from SSRC:"
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   103
					+ ssrc
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   104
					+ " @"
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   105
					+ packet.getAddress().toString()
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   106
					+ ", was NOT able to match it.");
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   107
			p = new Participant((InetSocketAddress) null,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   108
					(InetSocketAddress) packet.getSocketAddress(), ssrc);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   109
			rtpSession.partDb.addParticipant(2, p);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   110
		}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   111
		return p;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   112
	}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   113
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   114
	/**
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   115
	 * Parse a received UDP packet
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   116
	 * 
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   117
	 * Perform the header checks and extract the RTCP packets in it
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   118
	 * 
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   119
	 * @param packet
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   120
	 *            the packet to be parsed
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   121
	 * @return -1 if there was a problem, 0 if successfully parsed
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   122
	 */
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   123
	private int parsePacket(DatagramPacket packet) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   124
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   125
		if (packet.getLength() % 4 != 0) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   126
			if (RTPSession.rtcpDebugLevel > 2) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   127
				System.out
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   128
				.println("RTCPReceiverThread.parsePacket got packet that had length "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   129
						+ packet.getLength());
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   130
			}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   131
			return -1;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   132
		} else {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   133
			byte[] rawPkt = packet.getData();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   134
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   135
			// Parse the received compound RTCP (?) packet
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   136
			CompRtcpPkt compPkt = rtcpPacketPool.borrowItem();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   137
			compPkt.init(rawPkt, packet.getLength(),
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   138
					(InetSocketAddress) packet.getSocketAddress(), rtpSession);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   139
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   140
			if (this.rtpSession.debugAppIntf != null) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   141
				String intfStr;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   142
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   143
				if (rtpSession.mcSession) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   144
					intfStr = this.rtcpSession.rtcpMCSock
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   145
					.getLocalSocketAddress().toString();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   146
				} else {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   147
					intfStr = this.rtpSession.rtpSock.getLocalSocketAddress()
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   148
					.toString();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   149
				}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   150
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   151
				if (compPkt.problem == 0) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   152
					String str = new String(
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   153
							"Received compound RTCP packet of size "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   154
							+ packet.getLength() + " from "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   155
							+ packet.getSocketAddress().toString()
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   156
							+ " via " + intfStr + " containing "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   157
							+ compPkt.rtcpPkts.size() + " packets");
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   158
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   159
					this.rtpSession.debugAppIntf.packetReceived(1,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   160
							(InetSocketAddress) packet.getSocketAddress(), str);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   161
				} else {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   162
					String str = new String(
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   163
							"Received invalid RTCP packet of size "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   164
							+ packet.getLength() + " from "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   165
							+ packet.getSocketAddress().toString()
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   166
							+ " via " + intfStr + ": "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   167
							+ this.debugErrorString(compPkt.problem));
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   168
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   169
					this.rtpSession.debugAppIntf.packetReceived(-2,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   170
							(InetSocketAddress) packet.getSocketAddress(), str);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   171
				}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   172
			}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   173
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   174
			if (RTPSession.rtcpDebugLevel > 5) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   175
				Iterator<RtcpPkt> iter = compPkt.rtcpPkts.iterator();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   176
				String str = " ";
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   177
				while (iter.hasNext()) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   178
					RtcpPkt aPkt = iter.next();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   179
					str += (aPkt.getClass().toString() + ":" + aPkt.itemCount + ", ");
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   180
				}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   181
				System.out.println("<-> RTCPReceiverThread.parsePacket() from "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   182
						+ packet.getSocketAddress().toString() + str);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   183
			}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   184
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   185
			// Loop over the information
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   186
			Iterator iter = compPkt.rtcpPkts.iterator();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   187
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   188
			long curTime = System.currentTimeMillis();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   189
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   190
			while (iter.hasNext()) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   191
				RtcpPkt aPkt = (RtcpPkt) iter.next();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   192
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   193
				// Our own packets should already have been filtered out.
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   194
				if (aPkt.ssrc == rtpSession.ssrc) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   195
					System.out
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   196
					.println("RTCPReceiverThread() received RTCP packet"
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   197
							+ " with conflicting SSRC from "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   198
							+ packet.getSocketAddress().toString());
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   199
					rtpSession.resolveSsrcConflict();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   200
					return -1;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   201
				}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   202
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   203
				/** Receiver Reports **/
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   204
				if (aPkt.getClass() == RtcpPktRR.class) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   205
					RtcpPktRR rrPkt = (RtcpPktRR) aPkt;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   206
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   207
					Participant p = findParticipant(rrPkt.ssrc, packet);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   208
					p.lastRtcpPkt = curTime;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   209
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   210
					if (rtpSession.rtcpAppIntf != null) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   211
						rtpSession.rtcpAppIntf.RRPktReceived(rrPkt.ssrc,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   212
								rrPkt.reporteeSsrc, rrPkt.lossFraction,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   213
								rrPkt.lostPktCount, rrPkt.extHighSeqRecv,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   214
								rrPkt.interArvJitter, rrPkt.timeStampLSR,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   215
								rrPkt.delaySR);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   216
					}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   217
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   218
					/** Sender Reports **/
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   219
				} else if (aPkt.getClass() == RtcpPktSR.class) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   220
					RtcpPktSR srPkt = (RtcpPktSR) aPkt;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   221
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   222
					Participant p = findParticipant(srPkt.ssrc, packet);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   223
					p.lastRtcpPkt = curTime;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   224
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   225
					if (p != null) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   226
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   227
						if (p.ntpGradient < 0 && p.lastNtpTs1 > -1) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   228
							// Calculate gradient NTP vs RTP
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   229
							long newTime = StaticProcs.undoNtpMess(
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   230
									srPkt.ntpTs1, srPkt.ntpTs2);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   231
							p.ntpGradient = ((double) (newTime - p.ntpOffset))
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   232
							/ ((double) srPkt.rtpTs - p.lastSRRtpTs);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   233
							if (RTPSession.rtcpDebugLevel > 4) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   234
								System.out
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   235
								.println("RTCPReceiverThread calculated NTP vs RTP gradient: "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   236
										+ Double
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   237
										.toString(p.ntpGradient));
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   238
							}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   239
						} else {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   240
							// Calculate sum of ntpTs1 and ntpTs2 in
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   241
							// milliseconds
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   242
							p.ntpOffset = StaticProcs.undoNtpMess(srPkt.ntpTs1,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   243
									srPkt.ntpTs2);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   244
							p.lastNtpTs1 = srPkt.ntpTs1;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   245
							p.lastNtpTs2 = srPkt.ntpTs2;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   246
							p.lastSRRtpTs = srPkt.rtpTs;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   247
						}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   248
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   249
						// For the next RR
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   250
						p.timeReceivedLSR = curTime;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   251
						p.setTimeStampLSR(srPkt.ntpTs1, srPkt.ntpTs2);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   252
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   253
					}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   254
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   255
					if (rtpSession.rtcpAppIntf != null) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   256
						if (srPkt.rReports != null) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   257
							rtpSession.rtcpAppIntf.SRPktReceived(srPkt.ssrc,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   258
									srPkt.ntpTs1, srPkt.ntpTs2, srPkt.rtpTs,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   259
									srPkt.sendersPktCount,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   260
									srPkt.sendersPktCount,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   261
									srPkt.rReports.reporteeSsrc,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   262
									srPkt.rReports.lossFraction,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   263
									srPkt.rReports.lostPktCount,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   264
									srPkt.rReports.extHighSeqRecv,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   265
									srPkt.rReports.interArvJitter,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   266
									srPkt.rReports.timeStampLSR,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   267
									srPkt.rReports.delaySR);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   268
						} else {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   269
							rtpSession.rtcpAppIntf.SRPktReceived(srPkt.ssrc,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   270
									srPkt.ntpTs1, srPkt.ntpTs2, srPkt.rtpTs,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   271
									srPkt.sendersPktCount,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   272
									srPkt.sendersPktCount, null, null, null,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   273
									null, null, null, null);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   274
						}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   275
					}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   276
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   277
					/** Source Descriptions **/
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   278
				} else if (aPkt.getClass() == RtcpPktSDES.class) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   279
					RtcpPktSDES sdesPkt = (RtcpPktSDES) aPkt;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   280
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   281
					// The the participant database is updated
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   282
					// when the SDES packet is reconstructed by CompRtcpPkt
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   283
					if (rtpSession.rtcpAppIntf != null) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   284
						rtpSession.rtcpAppIntf
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   285
						.SDESPktReceived(sdesPkt.participants);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   286
					}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   287
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   288
					/** Bye Packets **/
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   289
				} else if (aPkt.getClass() == RtcpPktBYE.class) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   290
					RtcpPktBYE byePkt = (RtcpPktBYE) aPkt;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   291
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   292
					long time = System.currentTimeMillis();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   293
					Participant[] partArray = new Participant[byePkt.ssrcArray.length];
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   294
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   295
					for (int i = 0; i < byePkt.ssrcArray.length; i++) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   296
						partArray[i] = rtpSession.partDb
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   297
						.getParticipant(byePkt.ssrcArray[i]);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   298
						if (partArray[i] != null)
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   299
							partArray[i].timestampBYE = time;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   300
					}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   301
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   302
					if (rtpSession.rtcpAppIntf != null) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   303
						rtpSession.rtcpAppIntf.BYEPktReceived(partArray,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   304
								new String(byePkt.reason));
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   305
					}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   306
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   307
					/** Application specific Packets **/
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   308
				} else if (aPkt.getClass() == RtcpPktAPP.class) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   309
					RtcpPktAPP appPkt = (RtcpPktAPP) aPkt;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   310
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   311
					Participant part = findParticipant(appPkt.ssrc, packet);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   312
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   313
					if (rtpSession.rtcpAppIntf != null) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   314
						rtpSession.rtcpAppIntf.APPPktReceived(part,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   315
								appPkt.itemCount, appPkt.pktName,
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   316
								appPkt.pktData);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   317
					}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   318
				}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   319
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   320
			}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   321
		}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   322
		return 0;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   323
	}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   324
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   325
	/**
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   326
	 * Returns a legible message when an error occurs
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   327
	 * 
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   328
	 * @param errorCode
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   329
	 *            the internal error code, commonly negative of packet type
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   330
	 * @return a string that is hopefully somewhat informative
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   331
	 */
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   332
	private String debugErrorString(int errorCode) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   333
		String aStr = "";
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   334
		switch (errorCode) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   335
		case -1:
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   336
			aStr = "The first packet was not of type SR or RR.";
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   337
			break;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   338
		case -2:
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   339
			aStr = "The padding bit was set for the first packet.";
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   340
			break;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   341
		case -200:
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   342
			aStr = " Error parsing Sender Report packet.";
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   343
			break;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   344
		case -201:
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   345
			aStr = " Error parsing Receiver Report packet.";
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   346
			break;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   347
		case -202:
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   348
			aStr = " Error parsing SDES packet";
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   349
			break;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   350
		case -203:
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   351
			aStr = " Error parsing BYE packet.";
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   352
			break;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   353
		case -204:
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   354
			aStr = " Error parsing Application specific packet.";
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   355
			break;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   356
		case -205:
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   357
			aStr = " Error parsing RTP Feedback packet.";
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   358
			break;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   359
		case -206:
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   360
			aStr = " Error parsing Payload-Specific Feedback packet.";
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   361
			break;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   362
		default:
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   363
			aStr = "Unknown error code " + errorCode + ".";
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   364
		}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   365
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   366
		return aStr;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   367
	}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   368
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   369
	/**
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   370
	 * Start the RTCP receiver thread.
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   371
	 * 
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   372
	 * It will 1) run when it receives a packet 2) parse the packet 3) call any
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   373
	 * relevant callback functions, update database 4) block until the next one
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   374
	 * arrives.
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   375
	 */
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   376
	public void run() {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   377
		if (RTPSession.rtcpDebugLevel > 1) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   378
			if (rtpSession.mcSession) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   379
				System.out
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   380
				.println("-> RTCPReceiverThread.run() starting on MC "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   381
						+ rtcpSession.rtcpMCSock.getLocalPort());
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   382
			} else {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   383
				System.out.println("-> RTCPReceiverThread.run() starting on "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   384
						+ rtcpSession.rtcpSock.getLocalPort());
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   385
			}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   386
		}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   387
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   388
		while (!rtpSession.endSession) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   389
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   390
			if (RTPSession.rtcpDebugLevel > 4) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   391
				if (rtpSession.mcSession) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   392
					System.out
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   393
					.println("-> RTCPReceiverThread.run() waiting for packet on MC "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   394
							+ rtcpSession.rtcpMCSock.getLocalPort());
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   395
				} else {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   396
					System.out
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   397
					.println("-> RTCPReceiverThread.run() waiting for packet on "
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   398
							+ rtcpSession.rtcpSock.getLocalPort());
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   399
				}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   400
			}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   401
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   402
			// Prepare a packet
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   403
			DatagramPacket packet = DatagramPool.getInstance().borrowPacket();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   404
			
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   405
			// Wait for it to arrive
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   406
			if (!rtpSession.mcSession) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   407
				// Unicast
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   408
				try {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   409
					rtcpSession.rtcpSock.receive(packet);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   410
				} catch (IOException e) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   411
					if (!rtpSession.endSession) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   412
						e.printStackTrace();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   413
					} else {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   414
						continue;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   415
					}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   416
				}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   417
			} else {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   418
				// Multicast
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   419
				try {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   420
					rtcpSession.rtcpMCSock.receive(packet);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   421
				} catch (IOException e) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   422
					if (!rtpSession.endSession) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   423
						e.printStackTrace();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   424
					} else {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   425
						continue;
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   426
					}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   427
				}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   428
			}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   429
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   430
			// Check whether this is one of our own
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   431
			if ((rtpSession.mcSession && !packet.getSocketAddress().equals(
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   432
					rtcpSession.rtcpMCSock))
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   433
					|| !packet.getSocketAddress().equals(rtcpSession.rtcpSock)) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   434
				// System.out.println("Packet received from: " +
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   435
				// packet.getSocketAddress().toString());
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   436
				parsePacket(packet);
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   437
				// rtpSession.partDb.debugPrint();
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   438
			}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   439
		}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   440
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   441
		if (RTPSession.rtcpDebugLevel > 1) {
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   442
			System.out.println("<-> RTCPReceiverThread terminating");
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   443
		}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   444
	}
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   445
2036ebfaccda debut de la gestion de l'audio, faut tester avec des pcs distincts
nikita@jibe-desktop
parents:
diff changeset
   446
}