src/com/beem/project/beem/jingle/RTPReceiver.java
author nikita@mapiproxy
Thu, 27 Aug 2009 01:21:14 +0200
changeset 356 e46f634c629c
parent 355 b11d01c264a3
child 358 6b9900c70fa1
permissions -rw-r--r--
menage
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
     1
package com.beem.project.beem.jingle;
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
     2
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
     3
import java.io.IOException;
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
     4
import java.net.DatagramSocket;
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
     5
import java.net.ServerSocket;
356
nikita@mapiproxy
parents: 355
diff changeset
     6
import java.net.SocketException;
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
     7
353
91bf7d256964 merge avec mon debut de rtp
nikita@mapiproxy
parents: 212
diff changeset
     8
import org.jlibrtp.jlibrtp.DataFrame;
91bf7d256964 merge avec mon debut de rtp
nikita@mapiproxy
parents: 212
diff changeset
     9
import org.jlibrtp.jlibrtp.Participant;
91bf7d256964 merge avec mon debut de rtp
nikita@mapiproxy
parents: 212
diff changeset
    10
import org.jlibrtp.jlibrtp.RTPAppIntf;
91bf7d256964 merge avec mon debut de rtp
nikita@mapiproxy
parents: 212
diff changeset
    11
import org.jlibrtp.jlibrtp.RTPSession;
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    12
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    13
public class RTPReceiver implements Runnable, RTPAppIntf {
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    14
356
nikita@mapiproxy
parents: 355
diff changeset
    15
    private RTPSession mRtpSession;
nikita@mapiproxy
parents: 355
diff changeset
    16
    private boolean mKillme;
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    17
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    18
    public RTPReceiver(int rtpPort) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    19
	DatagramSocket rtpSocket = null;
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    20
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    21
	try {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    22
	    rtpSocket = new DatagramSocket(rtpPort);
356
nikita@mapiproxy
parents: 355
diff changeset
    23
	} catch (SocketException e) {
nikita@mapiproxy
parents: 355
diff changeset
    24
	    e.printStackTrace();
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    25
	    return;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    26
	}
353
91bf7d256964 merge avec mon debut de rtp
nikita@mapiproxy
parents: 212
diff changeset
    27
	mRtpSession = new RTPSession(rtpSocket, null);
91bf7d256964 merge avec mon debut de rtp
nikita@mapiproxy
parents: 212
diff changeset
    28
	mRtpSession.naivePktReception(true);
91bf7d256964 merge avec mon debut de rtp
nikita@mapiproxy
parents: 212
diff changeset
    29
	mRtpSession.RTPSessionRegister(this, null, null);
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    30
    }
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    31
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    32
    @Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    33
    public int frameSize(int payloadType) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    34
	return 1;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    35
    }
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    36
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    37
    protected int getFreePort() {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    38
	ServerSocket ss;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    39
	int freePort = 0;
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    40
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    41
	for (int i = 0; i < 10; i++) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    42
	    freePort = (int) (10000 + Math.round(Math.random() * 10000));
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    43
	    try {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    44
		ss = new ServerSocket(freePort);
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    45
		freePort = ss.getLocalPort();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    46
		ss.close();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    47
		return freePort;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    48
	    } catch (IOException e) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    49
		e.printStackTrace();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    50
	    }
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    51
	}
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    52
	try {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    53
	    ss = new ServerSocket(0);
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    54
	    freePort = ss.getLocalPort();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    55
	    ss.close();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    56
	} catch (IOException e) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    57
	    e.printStackTrace();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    58
	}
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    59
	return freePort;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    60
    }
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    61
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    62
    @Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    63
    public void receiveData(DataFrame frame, Participant participant) {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    64
	// byte[] data = frame.getConcatenatedData();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    65
    }
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    66
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    67
    @Override
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    68
    public void run() {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    69
	start();
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    70
    }
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    71
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    72
    private void start() {
353
91bf7d256964 merge avec mon debut de rtp
nikita@mapiproxy
parents: 212
diff changeset
    73
	while (!mKillme) {
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    74
	    try {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    75
		Thread.sleep(1000);
356
nikita@mapiproxy
parents: 355
diff changeset
    76
	    } catch (InterruptedException e) {
nikita@mapiproxy
parents: 355
diff changeset
    77
		// TODO Auto-generated catch block
nikita@mapiproxy
parents: 355
diff changeset
    78
		e.printStackTrace();
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    79
	    }
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    80
	}
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    81
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    82
	try {
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    83
	    Thread.sleep(200);
356
nikita@mapiproxy
parents: 355
diff changeset
    84
	} catch (InterruptedException e) {
nikita@mapiproxy
parents: 355
diff changeset
    85
	    // TODO Auto-generated catch block
nikita@mapiproxy
parents: 355
diff changeset
    86
	    e.printStackTrace();
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    87
	}
353
91bf7d256964 merge avec mon debut de rtp
nikita@mapiproxy
parents: 212
diff changeset
    88
	this.mRtpSession.endSession();
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    89
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    90
    }
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    91
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    92
    public void stop() {
353
91bf7d256964 merge avec mon debut de rtp
nikita@mapiproxy
parents: 212
diff changeset
    93
	this.mKillme = true;
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    94
    }
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
    95
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
    96
    @Override
353
91bf7d256964 merge avec mon debut de rtp
nikita@mapiproxy
parents: 212
diff changeset
    97
    public void userEvent(int arg0, Participant[] arg1) {
91bf7d256964 merge avec mon debut de rtp
nikita@mapiproxy
parents: 212
diff changeset
    98
	// TODO Auto-generated method stub
355
b11d01c264a3 debut de l'audit de mon code
nikita@mapiproxy
parents: 353
diff changeset
    99
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 63
diff changeset
   100
    }
53
ef115770432d un tres vieux commit pas fait sur du rtp.
nikita@nikita-rack
parents:
diff changeset
   101
}