TrackWrapper.java

 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}