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.
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.
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(). |