/* * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_OBJCVIDEOTRACKSOURCE_H_ #define WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_OBJCVIDEOTRACKSOURCE_H_ #import #include "webrtc/base/timestampaligner.h" #include "webrtc/media/base/adaptedvideotracksource.h" namespace webrtc { class ObjcVideoTrackSource : public rtc::AdaptedVideoTrackSource { public: ObjcVideoTrackSource(); // This class can not be used for implementing screen casting. Hopefully, this // function will be removed before we add that to iOS/Mac. bool is_screencast() const override { return false; } // Indicates that the encoder should denoise video before encoding it. // If it is not set, the default configuration is used which is different // depending on video codec. rtc::Optional needs_denoising() const override { return rtc::Optional(false); } SourceState state() const override { return SourceState::kLive; } bool remote() const override { return false; } // Called by RTCVideoSource. void OnCapturedFrame(RTCVideoFrame* frame); void OnOutputFormatRequest(int width, int height, int fps); private: rtc::VideoBroadcaster broadcaster_; rtc::TimestampAligner timestamp_aligner_; }; } // namespace webrtc #endif // WEBRTC_SDK_OBJC_FRAMEWORK_CLASSES_OBJCVIDEOTRACKSOURCE_H_