Line data Source code
1 : /*
2 : * Copyright (c) 2016 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 :
11 : #ifndef WEBRTC_MEDIA_BASE_VIDEOSOURCEBASE_H_
12 : #define WEBRTC_MEDIA_BASE_VIDEOSOURCEBASE_H_
13 :
14 : #include <vector>
15 :
16 : #include "webrtc/api/video/video_frame.h"
17 : #include "webrtc/base/thread_checker.h"
18 : #include "webrtc/media/base/videosourceinterface.h"
19 :
20 : namespace rtc {
21 :
22 : // VideoSourceBase is not thread safe.
23 0 : class VideoSourceBase : public VideoSourceInterface<webrtc::VideoFrame> {
24 : public:
25 : VideoSourceBase();
26 : void AddOrUpdateSink(VideoSinkInterface<webrtc::VideoFrame>* sink,
27 : const VideoSinkWants& wants) override;
28 : void RemoveSink(VideoSinkInterface<webrtc::VideoFrame>* sink) override;
29 :
30 : protected:
31 0 : struct SinkPair {
32 0 : SinkPair(VideoSinkInterface<webrtc::VideoFrame>* sink, VideoSinkWants wants)
33 0 : : sink(sink), wants(wants) {}
34 : VideoSinkInterface<webrtc::VideoFrame>* sink;
35 : VideoSinkWants wants;
36 : };
37 : SinkPair* FindSinkPair(const VideoSinkInterface<webrtc::VideoFrame>* sink);
38 :
39 0 : const std::vector<SinkPair>& sink_pairs() const { return sinks_; }
40 : ThreadChecker thread_checker_;
41 :
42 : private:
43 : std::vector<SinkPair> sinks_;
44 : };
45 :
46 : } // namespace rtc
47 :
48 : #endif // WEBRTC_MEDIA_BASE_VIDEOSOURCEBASE_H_
|