Skip to content

Commit 61cce45

Browse files
committed
demo: bind transceiver direction to the configuration
1 parent 86bd776 commit 61cce45

File tree

2 files changed

+44
-4
lines changed

2 files changed

+44
-4
lines changed

webrtc-demo/webrtc-demo-api/src/main/java/dev/onvoid/webrtc/demo/config/AudioConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public BooleanProperty receiveAudioProperty() {
6666
return receiveAudio;
6767
}
6868

69-
public boolean getAudioVideo() {
69+
public boolean getReceiveAudio() {
7070
return receiveAudio.get();
7171
}
7272

webrtc-demo/webrtc-demo-api/src/main/java/dev/onvoid/webrtc/demo/service/PeerConnectionService.java

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
import dev.onvoid.webrtc.RTCSdpType;
2626
import dev.onvoid.webrtc.RTCSessionDescription;
2727
import dev.onvoid.webrtc.RTCStatsReport;
28+
import dev.onvoid.webrtc.demo.config.AudioConfiguration;
2829
import dev.onvoid.webrtc.demo.config.Configuration;
30+
import dev.onvoid.webrtc.demo.config.VideoConfiguration;
2931
import dev.onvoid.webrtc.demo.model.Contact;
3032
import dev.onvoid.webrtc.demo.model.ContactEventType;
3133
import dev.onvoid.webrtc.demo.model.Contacts;
@@ -75,14 +77,39 @@ public class PeerConnectionService implements SignalingListener {
7577

7678
connections = new HashMap<>();
7779

80+
final AudioConfiguration audioConfig = config.getAudioConfiguration();
81+
final VideoConfiguration videoConfig = config.getVideoConfiguration();
82+
7883
peerConnectionContext = new PeerConnectionContext();
79-
peerConnectionContext.audioDirection = RTCRtpTransceiverDirection.SEND_RECV;
80-
peerConnectionContext.videoDirection = RTCRtpTransceiverDirection.SEND_RECV;
84+
peerConnectionContext.audioDirection = getDirection(
85+
audioConfig.getReceiveAudio(), audioConfig.getSendAudio());
86+
peerConnectionContext.videoDirection = getDirection(
87+
videoConfig.getReceiveVideo(), videoConfig.getSendVideo());
88+
89+
audioConfig.receiveAudioProperty()
90+
.addListener((observable, oldValue, newValue) -> {
91+
peerConnectionContext.audioDirection = getDirection(
92+
newValue, audioConfig.getSendAudio());
93+
});
94+
audioConfig.sendAudioProperty()
95+
.addListener((observable, oldValue, newValue) -> {
96+
peerConnectionContext.audioDirection = getDirection(
97+
audioConfig.getReceiveAudio(), newValue);
98+
});
99+
videoConfig.receiveVideoProperty()
100+
.addListener((observable, oldValue, newValue) -> {
101+
peerConnectionContext.videoDirection = getDirection(
102+
newValue, videoConfig.getSendVideo());
103+
});
104+
videoConfig.sendVideoProperty()
105+
.addListener((observable, oldValue, newValue) -> {
106+
peerConnectionContext.videoDirection = getDirection(
107+
videoConfig.getReceiveVideo(), newValue);
108+
});
81109
}
82110

83111
@Override
84112
public void onRoomJoined(RoomParameters parameters) {
85-
peerConnectionContext.videoDirection = RTCRtpTransceiverDirection.SEND_RECV;
86113
activeContact = new Contact();
87114

88115
config.getRTCConfig().iceServers.clear();
@@ -338,4 +365,17 @@ private PeerConnectionClient createPeerConnection(Contact contact) {
338365
return peerConnectionClient;
339366
}
340367

368+
private RTCRtpTransceiverDirection getDirection(boolean receive, boolean send) {
369+
if (receive && send) {
370+
return RTCRtpTransceiverDirection.SEND_RECV;
371+
}
372+
else if (receive) {
373+
return RTCRtpTransceiverDirection.RECV_ONLY;
374+
}
375+
else if (send) {
376+
return RTCRtpTransceiverDirection.SEND_ONLY;
377+
}
378+
379+
throw new IllegalArgumentException();
380+
}
341381
}

0 commit comments

Comments
 (0)