@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); } }
@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); } }