1package eu.siacs.conversations.xmpp.jingle;
2
3import com.google.common.base.Optional;
4import com.google.common.base.Preconditions;
5
6import org.webrtc.MediaStreamTrack;
7import org.webrtc.PeerConnection;
8import org.webrtc.RtpSender;
9
10class TrackWrapper<T extends MediaStreamTrack> {
11 private final T track;
12 private final RtpSender rtpSender;
13
14 private TrackWrapper(final T track, final RtpSender rtpSender) {
15 Preconditions.checkNotNull(track);
16 Preconditions.checkNotNull(rtpSender);
17 this.track = track;
18 this.rtpSender = rtpSender;
19 }
20
21 public static <T extends MediaStreamTrack> TrackWrapper<T> addTrack(
22 final PeerConnection peerConnection, final T mediaStreamTrack) {
23 final RtpSender rtpSender = peerConnection.addTrack(mediaStreamTrack);
24 return new TrackWrapper<>(mediaStreamTrack, rtpSender);
25 }
26
27 public static <T extends MediaStreamTrack> Optional<T> get(
28 final TrackWrapper<T> trackWrapper) {
29 return trackWrapper == null ? Optional.absent() : Optional.of(trackWrapper.track);
30 }
31}