blob: ee51e27b2dca058352140ad85b230c61b192c2e2 [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
Steve Anton10542f22019-01-11 09:11:00 -080013#include "api/media_stream_interface.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
Mirko Bonadeia81e9c82020-05-04 16:14:32 +020022@class RTC_OBJC_TYPE(RTCPeerConnectionFactory);
Yura Yaroshevich01cee072018-07-11 15:35:40 +030023
Mirko Bonadeia81e9c82020-05-04 16:14:32 +020024@interface RTC_OBJC_TYPE (RTCMediaStreamTrack)
25()
Jon Hjelle81028792016-01-11 13:16:13 -080026
Mirko Bonadeia81e9c82020-05-04 16:14:32 +020027 @property(nonatomic, readonly) RTC_OBJC_TYPE(RTCPeerConnectionFactory) *
28 factory;
Yura Yaroshevich01cee072018-07-11 15:35:40 +030029
Jon Hjelle81028792016-01-11 13:16:13 -080030/**
Jon Hjelleca91e382016-01-21 15:36:47 -080031 * The native MediaStreamTrackInterface passed in or created during
32 * construction.
Jon Hjelle81028792016-01-11 13:16:13 -080033 */
Yves Gerey665174f2018-06-19 15:03:05 +020034@property(nonatomic, readonly) rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> nativeTrack;
Jon Hjelle81028792016-01-11 13:16:13 -080035
36/**
37 * Initialize an RTCMediaStreamTrack from a native MediaStreamTrackInterface.
38 */
Mirko Bonadeia81e9c82020-05-04 16:14:32 +020039- (instancetype)initWithFactory:(RTC_OBJC_TYPE(RTCPeerConnectionFactory) *)factory
Yura Yaroshevich01cee072018-07-11 15:35:40 +030040 nativeTrack:(rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeTrack
41 type:(RTCMediaStreamTrackType)type NS_DESIGNATED_INITIALIZER;
Jon Hjelle81028792016-01-11 13:16:13 -080042
Mirko Bonadeia81e9c82020-05-04 16:14:32 +020043- (instancetype)initWithFactory:(RTC_OBJC_TYPE(RTCPeerConnectionFactory) *)factory
Yura Yaroshevich01cee072018-07-11 15:35:40 +030044 nativeTrack:(rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeTrack;
skvlad79b4b872016-04-08 17:28:55 -070045
Mirko Bonadeia81e9c82020-05-04 16:14:32 +020046- (BOOL)isEqualToTrack:(RTC_OBJC_TYPE(RTCMediaStreamTrack) *)track;
skvlad79b4b872016-04-08 17:28:55 -070047
Jon Hjelle81028792016-01-11 13:16:13 -080048+ (webrtc::MediaStreamTrackInterface::TrackState)nativeTrackStateForState:
Yves Gerey665174f2018-06-19 15:03:05 +020049 (RTCMediaStreamTrackState)state;
Jon Hjelle81028792016-01-11 13:16:13 -080050
51+ (RTCMediaStreamTrackState)trackStateForNativeState:
Yves Gerey665174f2018-06-19 15:03:05 +020052 (webrtc::MediaStreamTrackInterface::TrackState)nativeState;
Jon Hjelle81028792016-01-11 13:16:13 -080053
54+ (NSString *)stringForState:(RTCMediaStreamTrackState)state;
55
Mirko Bonadeia81e9c82020-05-04 16:14:32 +020056+ (RTC_OBJC_TYPE(RTCMediaStreamTrack) *)
57 mediaTrackForNativeTrack:(rtc::scoped_refptr<webrtc::MediaStreamTrackInterface>)nativeTrack
58 factory:(RTC_OBJC_TYPE(RTCPeerConnectionFactory) *)factory;
Yura Yaroshevich415920b2018-02-22 13:55:22 +030059
Jon Hjelle81028792016-01-11 13:16:13 -080060@end
61
62NS_ASSUME_NONNULL_END