diff options
Diffstat (limited to 'src/main/java/eu/siacs/conversations/xmpp/jingle/TrackWrapper.java')
-rw-r--r-- | src/main/java/eu/siacs/conversations/xmpp/jingle/TrackWrapper.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/TrackWrapper.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/TrackWrapper.java new file mode 100644 index 000000000..4e2952127 --- /dev/null +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/TrackWrapper.java @@ -0,0 +1,31 @@ +package eu.siacs.conversations.xmpp.jingle; + +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; + +import org.webrtc.MediaStreamTrack; +import org.webrtc.PeerConnection; +import org.webrtc.RtpSender; + +class TrackWrapper<T extends MediaStreamTrack> { + private final T track; + private final RtpSender rtpSender; + + private TrackWrapper(final T track, final RtpSender rtpSender) { + Preconditions.checkNotNull(track); + Preconditions.checkNotNull(rtpSender); + this.track = track; + this.rtpSender = rtpSender; + } + + public static <T extends MediaStreamTrack> TrackWrapper<T> addTrack( + final PeerConnection peerConnection, final T mediaStreamTrack) { + final RtpSender rtpSender = peerConnection.addTrack(mediaStreamTrack); + return new TrackWrapper<>(mediaStreamTrack, rtpSender); + } + + public static <T extends MediaStreamTrack> Optional<T> get( + final TrackWrapper<T> trackWrapper) { + return trackWrapper == null ? Optional.absent() : Optional.of(trackWrapper.track); + } +} |