private void cleanMediaResources() { // Release media resources mediaSession.release(); mediaSession = null; mediaGroup = null; mediaMixer = null; }
private Parameters createMixerParams() { Parameters mixerParams = mediaSession.createParameters(); mixerParams.put(MediaMixer.MAX_PORTS, 900); return mixerParams; } }
private void configureVideoMediaSession(final MediaAttributes mediaAttributes) { // resolution configuration mediaSession.setAttribute("NC_VIDEO_SIZE", mediaAttributes.getVideoResolution().toString()); }
public void run() throws MsControlException, InterruptedException { MediaSession session = factory.createMediaSession(); final NetworkConnection c1 = session.createNetworkConnection(NetworkConnection.BASIC); final NetworkConnection c2 = session.createNetworkConnection(NetworkConnection.BASIC); MediaGroup g1 = session.createMediaGroup(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR); MediaGroup g2 = session.createMediaGroup(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR); session.release();
.createNetworkConnection(NetworkConnection.BASIC); MediaGroup mg = mediaSession.createMediaGroup(MediaGroup.PLAYER_SIGNALDETECTOR); sipServletRequest.getSession().setAttribute("mediaGroup", mg); sipServletRequest.getSession().setAttribute("mediaSession", mediaSession);
mediaGroup = mediaSession.createMediaGroup(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR); networkConnection = mediaSession.createNetworkConnection(NetworkConnection.BASIC); Parameters sdpParameters = mediaSession.createParameters(); Map<String, String> configurationData = new HashMap<String, String>(); if (webrtc) {
@Override public void execute(Object message) throws Exception { try { CreateMediaSession msg = (CreateMediaSession) message; MediaAttributes mediaAttributes = msg.mediaAttributes(); // Create media session mediaSession = msControlFactory.createMediaSession(); // Create the media group with recording capabilities mediaGroup = mediaSession.createMediaGroup(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR); mediaGroup.getPlayer().addListener(playerListener); if (!MediaAttributes.MediaType.AUDIO_ONLY.equals(mediaAttributes.getMediaType())) { // video only or audio and video (video only is controlled by codec policy) configureVideoMediaSession(mediaAttributes); Parameters mixerParams = createMixerParams(); mediaMixer = mediaSession.createMediaMixer(MediaMixer.AUDIO_VIDEO, mixerParams); } else { // audio only Parameters mixerParams = createMixerParams(); mediaMixer = mediaSession.createMediaMixer(MediaMixer.AUDIO, mixerParams); } mediaMixer.addListener(mixerAllocationListener); mediaMixer.confirm(); // Wait for event confirmation before sending response to the conference } catch (MsControlException e) { // Move to a failed state, cleaning all resources and closing media session fsm.transition(e, failed); } }
private void finishMediaSessionSetup( ActivityContextInterface networkConnectionAci) throws MsControlException { NetworkConnection connection = (NetworkConnection) networkConnectionAci .getActivity(); MediaSession session = connection.getMediaSession(); MediaGroup mediaGroup = session .createMediaGroup(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR); connection.joinInitiate(Direction.DUPLEX, mediaGroup, "context"); ActivityContextInterface mediaGroupACI = mscRaAciFactory .getActivityContextInterface(mediaGroup); mediaGroupACI.attach(sbbContext.getSbbLocalObject()); setMediaGroupACI(mediaGroupACI); }
private void initialMediaSessionSetup(ServerTransaction serverTransaction) throws MsControlException { // create media session MediaSession session = msRaSbbInterface.createMediaSession(); ActivityContextInterface mediaSessionACI = mscRaAciFactory .getActivityContextInterface(session); SbbLocalObject sbbLocalObject = sbbContext.getSbbLocalObject(); mediaSessionACI.attach(sbbLocalObject); // store the media session aci in a cmp shortcut setMediaSessionACI(mediaSessionACI); tracer.info("Created media session: " + session); // create network connection NetworkConnection connection = session .createNetworkConnection(NetworkConnection.BASIC); ActivityContextInterface connectionACI = mscRaAciFactory .getActivityContextInterface(connection); connectionACI.attach(sbbLocalObject); // store the network connection aci in a cmp shortcut setNetworkConnectionACI(connectionACI); tracer.info("Created network connection: " + connection); // process the received sdp SdpPortManager sdpManager = connection.getSdpPortManager(); tracer.info("Created SDP Manager, sending client sdp..."); sdpManager.processSdpOffer((byte[]) serverTransaction.getRequest() .getContent()); }
public void run() throws MsControlException, InterruptedException { MediaSession session = factory.createMediaSession(); final NetworkConnection c1 = session.createNetworkConnection(NetworkConnection.BASIC); final NetworkConnection c2 = session.createNetworkConnection(NetworkConnection.BASIC); MediaGroup g1 = session.createMediaGroup(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR); MediaGroup g2 = session.createMediaGroup(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR); session.release();
.createNetworkConnection(NetworkConnection.BASIC); MediaGroup mg = mediaSession.createMediaGroup(MediaGroup.PLAYER_SIGNALDETECTOR); sipServletRequest.getSession().setAttribute("customerName", customerName); sipServletRequest.getSession().setAttribute("customerPhone", customerPhone);
@Override public void execute(Object message) throws Exception { try { CreateMediaSession msg = (CreateMediaSession) message; MediaAttributes mediaAttributes = msg.mediaAttributes(); // Create media session mediaSession = msControlFactory.createMediaSession(); // Create the media group with recording capabilities mediaGroup = mediaSession.createMediaGroup(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR); mediaGroup.getRecorder().addListener(recorderListener); if (!MediaAttributes.MediaType.AUDIO_ONLY.equals(mediaAttributes.getMediaType())) { // video only or audio and video (video only is controlled by codec policy) configureVideoMediaSession(mediaAttributes); Parameters mixerParams = createMixerParams(); mediaMixer = mediaSession.createMediaMixer(MediaMixer.AUDIO_VIDEO, mixerParams); } else { // audio only Parameters mixerParams = createMixerParams(); mediaMixer = mediaSession.createMediaMixer(MediaMixer.AUDIO, mixerParams); } mediaMixer.addListener(mixerAllocationListener); mediaMixer.confirm(); // Wait for event confirmation before sending response to the conference } catch (MsControlException e) { // Move to a failed state, cleaning all resources and closing media session fsm.transition(e, failed); } }
private void finishMediaSessionSetup( ActivityContextInterface networkConnectionAci) throws MsControlException { NetworkConnection connection = (NetworkConnection) networkConnectionAci .getActivity(); MediaSession session = connection.getMediaSession(); MediaGroup mediaGroup = session .createMediaGroup(MediaGroup.PLAYER_RECORDER_SIGNALDETECTOR); connection.joinInitiate(Direction.DUPLEX, mediaGroup, "context"); ActivityContextInterface mediaGroupACI = mscRaAciFactory .getActivityContextInterface(mediaGroup); mediaGroupACI.attach(sbbContext.getSbbLocalObject()); setMediaGroupACI(mediaGroupACI); }
private void initialMediaSessionSetup(ServerTransaction serverTransaction) throws MsControlException { // create media session MediaSession session = msRaSbbInterface.createMediaSession(); ActivityContextInterface mediaSessionACI = mscRaAciFactory .getActivityContextInterface(session); SbbLocalObject sbbLocalObject = sbbContext.getSbbLocalObject(); mediaSessionACI.attach(sbbLocalObject); // store the media session aci in a cmp shortcut setMediaSessionACI(mediaSessionACI); tracer.info("Created media session: " + session); // create network connection NetworkConnection connection = session .createNetworkConnection(NetworkConnection.BASIC); ActivityContextInterface connectionACI = mscRaAciFactory .getActivityContextInterface(connection); connectionACI.attach(sbbLocalObject); // store the network connection aci in a cmp shortcut setNetworkConnectionACI(connectionACI); tracer.info("Created network connection: " + connection); // process the received sdp SdpPortManager sdpManager = connection.getSdpPortManager(); tracer.info("Created SDP Manager, sending client sdp..."); sdpManager.processSdpOffer((byte[]) serverTransaction.getRequest() .getContent()); }
.createNetworkConnection(NetworkConnection.BASIC); SdpPortManager sdpManag = conn.getSdpPortManager(); sdpManag.generateSdpOffer(); MediaGroup mg = mediaSession.createMediaGroup(MediaGroup.PLAYER_SIGNALDETECTOR); sipServletRequest.getSession().setAttribute("mediaGroup", mg); sipServletRequest.getSession().setAttribute("mediaSession", mediaSession);
private void cleanMediaResources() { // Release media resources mediaSession.release(); mediaSession = null; mediaGroup = null; mediaMixer = null; }
private void configureVideoMediaSession(final MediaAttributes mediaAttributes) { // mode configuration if (MediaAttributes.VideoMode.SFU.equals(mediaAttributes.getVideoMode())) { // sfu not fully supported yet, waiting for next jsr309 connector release, using default mcu // mediaSession.setAttribute("mediaMixerMode", mediaAttributes.getVideoMode().toString()); } // resolution configuration mediaSession.setAttribute("CONFERENCE_VIDEO_SIZE", mediaAttributes.getVideoResolution().toString()); // layout configuration mediaSession.setAttribute("REGION", mediaAttributes.getVideoLayout().toString()); }
private Parameters createMixerParams() { // Allow only two participants and one media group Parameters mixerParams = mediaSession.createParameters(); mixerParams.put(MediaMixer.MAX_PORTS, 3); return mixerParams; }
private void cleanMediaResources() { mediaSession.release(); mediaSession = null; mediaGroup = null; mediaMixer = null; }
private void onJoinConference(JoinConference message, ActorRef self, ActorRef sender) throws Exception { if (is(active)) { try { // join call leg to bridge // overlay configuration MediaAttributes ma = message.mediaAttributes(); if (!StringUtils.isEmpty(ma.getVideoOverlay())) { mediaSession.setAttribute("CAPTION", ma.getVideoOverlay()); } this.bridge = sender; this.mediaMixer = (MediaMixer) message.getEndpoint(); this.networkConnection.join(Direction.DUPLEX, mediaMixer); // alert call has joined successfully this.call.tell(new JoinComplete(), self); } catch (MsControlException e) { logger.error("Call bridging failed: " + e.getMessage()); fsm.transition(e, failed); } } }