src/net/java/sip/communicator/impl/protocol/jabber/CallPeerMediaHandlerJabberImpl.java
/**
     * Notifies this instance that a specific <tt>ColibriConferenceIQ</tt> has
     * been received. This <tt>CallPeerMediaHandler</tt> uses the part of the
     * information provided in the specified <tt>conferenceIQ</tt> which
     * concerns it only.
     *
     * @param conferenceIQ the <tt>ColibriConferenceIQ</tt> which has been
     * received
     */
Notifies this instance that a specific ColibriConferenceIQ has
been received. This CallPeerMediaHandler uses the part of the
information provided in the specified conferenceIQ which
concerns it only.

@param conferenceIQ the ColibriConferenceIQ which has been
received
Notifies this instance that a specific ColibriConferenceIQ has been received . This CallPeerMediaHandler uses the part of the information provided in the specified conferenceIQ which concerns it only . @param conferenceIQ the ColibriConferenceIQ which has been received
void processColibriConferenceIQ(ColibriConferenceIQ conferenceIQ)
    {
        /*
         * This CallPeerMediaHandler stores the media information but it does
         * not store the colibri Channels (which contain both media and transport
         * information). The TransportManager associated with this instance
         * stores the colibri Channels but does not store media information (such
         * as the remote SSRCs). An design/implementation choice has to be made
         * though and the present one is to have this CallPeerMediaHandler
         * transparently (with respect to the TransportManager) store the media
         * information inside the TransportManager.
         */
        TransportManagerJabberImpl transportManager = this.transportManager;
        if (transportManager != null)
        {
            long oldAudioRemoteSSRC = getRemoteSSRC(MediaType.AUDIO);
            long oldVideoRemoteSSRC = getRemoteSSRC(MediaType.VIDEO);
            for (MediaType mediaType : MediaType.values())
            {
                ColibriConferenceIQ.Channel dst
                    = transportManager.getColibriChannel(
                            mediaType,
                            false /* remote */);
                if (dst != null)
                {
                    ColibriConferenceIQ.Content content
                        = conferenceIQ.getContent(mediaType.toString());
                    if (content != null)
                    {
                        ColibriConferenceIQ.Channel src
                            = content.getChannel(dst.getID());
                        if (src != null)
                        {
                            int[] ssrcs = src.getSSRCs();
                            int[] dstSSRCs = dst.getSSRCs();
                            if (!Arrays.equals(dstSSRCs, ssrcs))
                                dst.setSSRCs(ssrcs);
                        }
                    }
                }
            }
            /*
             * Do fire new PropertyChangeEvents for the properties
             * AUDIO_REMOTE_SSRC and VIDEO_REMOTE_SSRC if necessary.
             */
            long newAudioRemoteSSRC = getRemoteSSRC(MediaType.AUDIO);
            long newVideoRemoteSSRC = getRemoteSSRC(MediaType.VIDEO);
            if (oldAudioRemoteSSRC != newAudioRemoteSSRC)
            {
                firePropertyChange(
                        AUDIO_REMOTE_SSRC,
                        oldAudioRemoteSSRC, newAudioRemoteSSRC);
            }
            if (oldVideoRemoteSSRC != newVideoRemoteSSRC)
            {
                firePropertyChange(
                        VIDEO_REMOTE_SSRC,
                        oldVideoRemoteSSRC, newVideoRemoteSSRC);
            }
        }
    }
void processColibriConferenceIQ ( ColibriConferenceIQ conferenceIQ ) { /*
         * This CallPeerMediaHandler stores the media information but it does
         * not store the colibri Channels (which contain both media and transport
         * information). The TransportManager associated with this instance
         * stores the colibri Channels but does not store media information (such
         * as the remote SSRCs). An design/implementation choice has to be made
         * though and the present one is to have this CallPeerMediaHandler
         * transparently (with respect to the TransportManager) store the media
         * information inside the TransportManager.
         */ TransportManagerJabberImpl transportManager = this . transportManager ; if ( transportManager != null ) { long oldAudioRemoteSSRC = getRemoteSSRC ( MediaType . AUDIO ) ; long oldVideoRemoteSSRC = getRemoteSSRC ( MediaType . VIDEO ) ; for ( MediaType mediaType : MediaType . values ( ) ) { ColibriConferenceIQ . Channel dst = transportManager . getColibriChannel ( mediaType , false /* remote */ ) ; if ( dst != null ) { ColibriConferenceIQ . Content content = conferenceIQ . getContent ( mediaType . toString ( ) ) ; if ( content != null ) { ColibriConferenceIQ . Channel src = content . getChannel ( dst . getID ( ) ) ; if ( src != null ) { int [ ] ssrcs = src . getSSRCs ( ) ; int [ ] dstSSRCs = dst . getSSRCs ( ) ; if ( ! Arrays . equals ( dstSSRCs , ssrcs ) ) dst . setSSRCs ( ssrcs ) ; } } } } /*
             * Do fire new PropertyChangeEvents for the properties
             * AUDIO_REMOTE_SSRC and VIDEO_REMOTE_SSRC if necessary.
             */ long newAudioRemoteSSRC = getRemoteSSRC ( MediaType . AUDIO ) ; long newVideoRemoteSSRC = getRemoteSSRC ( MediaType . VIDEO ) ; if ( oldAudioRemoteSSRC != newAudioRemoteSSRC ) { firePropertyChange ( AUDIO_REMOTE_SSRC , oldAudioRemoteSSRC , newAudioRemoteSSRC ) ; } if ( oldVideoRemoteSSRC != newVideoRemoteSSRC ) { firePropertyChange ( VIDEO_REMOTE_SSRC , oldVideoRemoteSSRC , newVideoRemoteSSRC ) ; } } }
Notifies this instance that a specific <tt>ColibriConferenceIQ</tt> has
 been received.
Notifies this instance that a specific <tt > ColibriConferenceIQ< / tt > has been received .