blob: 7f8810c6509602f28f760c4bbac067d98dec55c2 [file] [log] [blame]
Jon Hjelle81028792016-01-11 13:16:13 -08001/*
2 * Copyright 2015 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Anders Carlsson7bca8ca2018-08-30 09:30:29 +020011#import "RTCMediaStreamTrack.h"
Jon Hjelle81028792016-01-11 13:16:13 -080012
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020013#include "api/mediastreaminterface.h"
Jon Hjelle81028792016-01-11 13:16:13 -080014
Jon Hjelleca91e382016-01-21 15:36:47 -080015typedef NS_ENUM(NSInteger, RTCMediaStreamTrackType) {
16 RTCMediaStreamTrackTypeAudio,
17 RTCMediaStreamTrackTypeVideo,
18};
19
Jon Hjelle81028792016-01-11 13:16:13 -080020NS_ASSUME_NONNULL_BEGIN
21
Yura Yaroshevich01cee072018-07-11 15:35:40 +030022@class RTCPeerConnectionFactory;
23
Jon Hjelle81028792016-01-11 13:16:13 -080024@interface RTCMediaStreamTrack ()
25
Yura Yaroshevich01cee072018-07-11 15:35:40 +030026@property(nonatomic, readonly) RTCPeerConnectionFactory *factory;
27
Jon Hjelle81028792016-01-11 13:16:13 -080028/**
Jon Hjelleca91e382016-01-21 15:36:47 -080029 * The native MediaStreamTrackInterface passed in or created during
30 * construction.
Jon Hjelle81028792016-01-11 13:16:13 -080031 */
Yves Gerey665174f2018-06-19 15:03:05 +020032@property(nonatomic, readonly) rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> nativeTrack;
Jon Hjelle81028792016-01-11 13:16:13 -080033
34/**
35 * Initialize an RTCMediaStreamTrack from a native MediaStreamTrackInterface.
36 */
Yura Yaroshevich01cee072018-07-11 15:35:40 +030037- (instancetype)initWithFactory:(RTCPeerConnectionFactory *)factory
38 nativeTrack:(rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeTrack
39 type:(RTCMediaStreamTrackType)type NS_DESIGNATED_INITIALIZER;
Jon Hjelle81028792016-01-11 13:16:13 -080040
Yura Yaroshevich01cee072018-07-11 15:35:40 +030041- (instancetype)initWithFactory:(RTCPeerConnectionFactory *)factory
42 nativeTrack:(rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeTrack;
skvlad79b4b872016-04-08 17:28:55 -070043
44- (BOOL)isEqualToTrack:(RTCMediaStreamTrack *)track;
45
Jon Hjelle81028792016-01-11 13:16:13 -080046+ (webrtc::MediaStreamTrackInterface::TrackState)nativeTrackStateForState:
Yves Gerey665174f2018-06-19 15:03:05 +020047 (RTCMediaStreamTrackState)state;
Jon Hjelle81028792016-01-11 13:16:13 -080048
49+ (RTCMediaStreamTrackState)trackStateForNativeState:
Yves Gerey665174f2018-06-19 15:03:05 +020050 (webrtc::MediaStreamTrackInterface::TrackState)nativeState;
Jon Hjelle81028792016-01-11 13:16:13 -080051
52+ (NSString *)stringForState:(RTCMediaStreamTrackState)state;
53
Yura Yaroshevich415920b2018-02-22 13:55:22 +030054+ (RTCMediaStreamTrack *)mediaTrackForNativeTrack:
Yura Yaroshevich01cee072018-07-11 15:35:40 +030055 (rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeTrack
56 factory:(RTCPeerConnectionFactory *)factory;
Yura Yaroshevich415920b2018-02-22 13:55:22 +030057
Jon Hjelle81028792016-01-11 13:16:13 -080058@end
59
60NS_ASSUME_NONNULL_END