This interface represents one participant in an RTP session.
Within a session, a participant is defined to be the application
sending and receiving data on that session. Note that this doesn't
necessarily imply that participants are human. A single participant
may be the source of zero or more streams of RTP data packets, each
of which is represented by an RTPStream object obtainable via the
getStreams().
RTPSM only creates instances of the two subclasses of this class,
RTPRemoteParticipant and RTPLocalParticipant. Of all the
Participants objects managed by the RTPSessionManager, only one
is the local participant and thus an instance of
RTPLocalParticipant.
All the other Participants in the session (obtainable via
RTPSM.getRemoteParticipants()) are "remote" and are instances of
RTPRemoteParticipant; calls to getStreams() on remote participants
return a Vector of ReceiveStream objects. The client can determine
whether an Participant is local doing a simple "instanceof" test.
Participants are identified by the CNAME string, which is
transmitted in every RTCP packet.Since a participant may begin
sending data packets *before* the CNAME of the participant has
arrived in an RTCP packet, it is possible that a data stream will
exist, for a short time, as "unassociated" with any participant.
See ReceiveStream for more details.
Note that this abstraction defines a participant *within* a
session; in real life, "participants"
can be involved in more than one RTP session at a time. |