/*
* @(#)NewReceiveStreamEvent.java 1.6 02/08/21
*
* Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved.
*/
package javax.media.rtp.event;
import javax.media.rtp.*;
/**
* Informs the RTP listener that a new stream of RTP data packets
* has been detected; in RTP parlance, this means that RTP data
* packets have been received from an SSRC that had not previously
* been sending data. <P>
*
* New ReceiveStreams announced with this callback may be created in
* one of two states. If the data packets have an SSRC that the
* RTPSM has already seen in RTCP control packets on this session,
* then the new ReceiveStream is created in the "unorphaned"
* state; in other words, it is permanently associated with an
* Participant. This Participant, whose presence would have
* been announced previously with the newParticipant() callback, is
* obtainable from the getParticipant() method in the
* ReceiveStream.<P>
*
* If, however, the SSRC in the data packets has never before been
* seen, the new ReceiveStream is created in the "orphaned" state
* and (as of yet) has no associated Participant; a call to
* getParticipant on the ReceiveStream will return null. When and
* if an RTCP packet arrives with the same SSRC, the CNAME
* contained therein will be extracted and checked against the CNAMEs of
* existing participants. If there is a match, than we have a case
* where a participant is sending a data stream with an SSRC it was
* not previously using; this should only happen when a
* participant is sending multiple streams. In this situation a
* recvStreamMapped() callback will be invoked by the RTPSM. If the
* CNAME was unrecognized then this is a case of a brand new
* participant, so in addition to recvStreamMapped(), RTPSM will
* also invoke the newParticipant() callback *before* calling
* recvStreamMapped(). <P>
*
*/
public class NewReceiveStreamEvent extends ReceiveStreamEvent{
public NewReceiveStreamEvent(SessionManager from,
ReceiveStream recvStream){
super(from, recvStream, recvStream.getParticipant());
}
}
|