Skip to content

Commit 958ca86

Browse files
committed
Migration of attribute CAPTION from conference media session to participant media session. Issue #1552.
1 parent 7644fb6 commit 958ca86

File tree

7 files changed

+45
-9
lines changed

7 files changed

+45
-9
lines changed

Diff for: restcomm/restcomm.interpreter/src/main/java/org/restcomm/connect/interpreter/VoiceInterpreter.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ public final class VoiceInterpreter extends BaseVoiceInterpreter {
199199
Tag conferenceVerb;
200200
List<URI> conferenceWaitUris;
201201
private boolean playMusicForConference = false;
202+
private MediaAttributes mediaAttributes;
202203
//Used for system apps, such as when WebRTC client is dialing out.
203204
//The rcml will be used instead of download the RCML
204205
private String rcml;
@@ -433,6 +434,7 @@ public VoiceInterpreter(final Configuration configuration, final Sid account, fi
433434
this.asImsUa = asImsUa;
434435
this.imsUaLogin = imsUaLogin;
435436
this.imsUaPassword = imsUaPassword;
437+
this.mediaAttributes = new MediaAttributes();
436438
}
437439

438440
private boolean is(State state) {
@@ -2057,7 +2059,6 @@ public void execute(final Object message) throws Exception {
20572059
final Tag child = conference(verb);
20582060
if (child != null) {
20592061
String name = null;
2060-
MediaAttributes mediaAttributes = new MediaAttributes();
20612062
final Tag grandchild = video(child);
20622063
if (grandchild == null) {
20632064
name = child.text();
@@ -2720,7 +2721,7 @@ public void execute(final Object message) throws Exception {
27202721
//Adding conference record in DB
27212722
//For outbound call the CDR will be updated at Call.InProgress()
27222723
addConferenceStuffInCDR(conferenceSid);
2723-
final AddParticipant request = new AddParticipant(call);
2724+
final AddParticipant request = new AddParticipant(call, mediaAttributes);
27242725
conference.tell(request, source);
27252726
} else {
27262727
// Ask the parser for the next action to take.

Diff for: restcomm/restcomm.mscontrol.api/src/main/java/org/restcomm/connect/mscontrol/api/messages/JoinCall.java

+11
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
import akka.actor.ActorRef;
2929
import org.restcomm.connect.commons.dao.Sid;
30+
import org.restcomm.connect.dao.entities.MediaAttributes;
3031

3132
/**
3233
* @author Henrique Rosa ([email protected])
@@ -38,15 +39,21 @@ public final class JoinCall {
3839
private final ActorRef call;
3940
private final ConnectionMode connectionMode;
4041
private final Sid sid;
42+
private final MediaAttributes mediaAttributes;
4143

4244
public JoinCall(final ActorRef call, final ConnectionMode connectionMode) {
4345
this(call, connectionMode, null);
4446
}
4547

4648
public JoinCall(final ActorRef call, final ConnectionMode connectionMode, final Sid sid) {
49+
this(call, connectionMode, sid, new MediaAttributes());
50+
}
51+
52+
public JoinCall(final ActorRef call, final ConnectionMode connectionMode, final Sid sid, final MediaAttributes mediaAttributes){
4753
this.call = call;
4854
this.connectionMode = connectionMode;
4955
this.sid = sid;
56+
this.mediaAttributes = mediaAttributes;
5057
}
5158

5259
public ActorRef getCall() {
@@ -60,4 +67,8 @@ public ConnectionMode getConnectionMode() {
6067
public Sid getSid () {
6168
return sid;
6269
}
70+
71+
public MediaAttributes mediaAttributes(){
72+
return mediaAttributes;
73+
}
6374
}

Diff for: restcomm/restcomm.mscontrol.api/src/main/java/org/restcomm/connect/mscontrol/api/messages/JoinConference.java

+11
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import jain.protocol.ip.mgcp.message.parms.ConnectionMode;
2727
import org.restcomm.connect.commons.dao.Sid;
28+
import org.restcomm.connect.dao.entities.MediaAttributes;
2829

2930
/**
3031
* @author Henrique Rosa ([email protected])
@@ -36,11 +37,17 @@ public final class JoinConference {
3637
private final Object endpoint;
3738
private final ConnectionMode connectionMode;
3839
private final Sid sid;
40+
private final MediaAttributes mediaAttributes;
3941

4042
public JoinConference(final Object endpoint, final ConnectionMode connectionMode, final Sid sid) {
43+
this(endpoint, connectionMode, sid, new MediaAttributes());
44+
}
45+
46+
public JoinConference(final Object endpoint, final ConnectionMode connectionMode, final Sid sid, final MediaAttributes mediaAttributes) {
4147
this.endpoint = endpoint;
4248
this.connectionMode = connectionMode;
4349
this.sid = sid;
50+
this.mediaAttributes = mediaAttributes;
4451
}
4552

4653
public Object getEndpoint() {
@@ -54,4 +61,8 @@ public ConnectionMode getConnectionMode() {
5461
public Sid getSid () {
5562
return sid;
5663
}
64+
65+
public MediaAttributes mediaAttributes(){
66+
return mediaAttributes;
67+
}
5768
}

Diff for: restcomm/restcomm.mscontrol.jsr309/src/main/java/org/restcomm/connect/mscontrol/jsr309/Jsr309CallController.java

+7
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,11 @@
5858
import javax.sound.sampled.UnsupportedAudioFileException;
5959

6060
import org.apache.commons.configuration.Configuration;
61+
import org.apache.commons.lang.StringUtils;
6162
import org.joda.time.DateTime;
6263
import org.restcomm.connect.dao.DaoManager;
6364
import org.restcomm.connect.dao.RecordingsDao;
65+
import org.restcomm.connect.dao.entities.MediaAttributes;
6466
import org.restcomm.connect.dao.entities.Recording;
6567
import org.restcomm.connect.commons.dao.Sid;
6668
import org.restcomm.connect.commons.fsm.FiniteStateMachine;
@@ -743,6 +745,11 @@ private void onJoinConference(JoinConference message, ActorRef self, ActorRef se
743745
if (is(active)) {
744746
try {
745747
// join call leg to bridge
748+
// overlay configuration
749+
MediaAttributes ma = message.mediaAttributes();
750+
if (!StringUtils.isEmpty(ma.getVideoOverlay())) {
751+
mediaSession.setAttribute("CAPTION", ma.getVideoOverlay());
752+
}
746753
this.bridge = sender;
747754
this.mediaMixer = (MediaMixer) message.getEndpoint();
748755
this.networkConnection.join(Direction.DUPLEX, mediaMixer);

Diff for: restcomm/restcomm.mscontrol.jsr309/src/main/java/org/restcomm/connect/mscontrol/jsr309/Jsr309ConferenceController.java

+1-6
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
import javax.media.mscontrol.resource.AllocationEventListener;
4545
import javax.media.mscontrol.resource.RTC;
4646

47-
import org.apache.commons.lang.StringUtils;
4847
import org.mobicents.servlet.restcomm.mscontrol.messages.MediaServerConferenceControllerStateChanged;
4948
import org.restcomm.connect.commons.fsm.FiniteStateMachine;
5049
import org.restcomm.connect.commons.fsm.State;
@@ -342,7 +341,7 @@ private void onStopMediaGroup(StopMediaGroup message, ActorRef self, ActorRef se
342341
private void onJoinCall(JoinCall message, ActorRef self, ActorRef sender) {
343342
if (is(active)) {
344343
// Tell call to join conference by passing reference of the media mixer
345-
final JoinConference join = new JoinConference(this.mediaMixer, message.getConnectionMode(), message.getSid());
344+
final JoinConference join = new JoinConference(this.mediaMixer, message.getConnectionMode(), message.getSid(), message.mediaAttributes());
346345
message.getCall().tell(join, sender);
347346
}
348347
}
@@ -423,10 +422,6 @@ private void configureVideoMediaSession(final MediaAttributes mediaAttributes) {
423422
mediaSession.setAttribute("CONFERENCE_VIDEO_SIZE", mediaAttributes.getVideoResolution().toString());
424423
// layout configuration
425424
mediaSession.setAttribute("REGION", mediaAttributes.getVideoLayout().toString());
426-
// overlay configuration
427-
if (!StringUtils.isEmpty(mediaAttributes.getVideoOverlay())) {
428-
mediaSession.setAttribute("CAPTION", mediaAttributes.getVideoOverlay());
429-
}
430425
}
431426

432427
private Parameters createMixerParams() {

Diff for: restcomm/restcomm.telephony.api/src/main/java/org/restcomm/connect/telephony/api/AddParticipant.java

+11
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,31 @@
2222
import akka.actor.ActorRef;
2323

2424
import org.restcomm.connect.commons.annotations.concurrency.Immutable;
25+
import org.restcomm.connect.dao.entities.MediaAttributes;
2526

2627
/**
2728
* @author [email protected] (Thomas Quintana)
2829
*/
2930
@Immutable
3031
public final class AddParticipant {
3132
private final ActorRef call;
33+
private final MediaAttributes mediaAttributes;
3234

3335
public AddParticipant(final ActorRef call) {
36+
this(call, new MediaAttributes());
37+
}
38+
39+
public AddParticipant(final ActorRef call, final MediaAttributes mediaAttributes){
3440
super();
3541
this.call = call;
42+
this.mediaAttributes = mediaAttributes;
3643
}
3744

3845
public ActorRef call() {
3946
return call;
4047
}
48+
49+
public MediaAttributes mediaAttributes(){
50+
return mediaAttributes;
51+
}
4152
}

Diff for: restcomm/restcomm.telephony/src/main/java/org/restcomm/connect/telephony/Conference.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ private void onConferenceModeratorPresent(ConferenceModeratorPresent message, Ac
416416

417417
private void onAddParticipant(AddParticipant message, ActorRef self, ActorRef sender) {
418418
if (isRunning()) {
419-
final JoinCall joinCall = new JoinCall(message.call(), ConnectionMode.Confrnce, this.sid);
419+
final JoinCall joinCall = new JoinCall(message.call(), ConnectionMode.Confrnce, this.sid, message.mediaAttributes());
420420
this.mscontroller.tell(joinCall, self);
421421
}
422422
}

0 commit comments

Comments
 (0)