1 /* 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 11 #ifndef PC_MEDIA_STREAM_OBSERVER_H_ 12 #define PC_MEDIA_STREAM_OBSERVER_H_ 13 14 #include "api/media_stream_interface.h" 15 #include "api/scoped_refptr.h" 16 #include "rtc_base/third_party/sigslot/sigslot.h" 17 18 namespace webrtc { 19 20 // Helper class which will listen for changes to a stream and emit the 21 // corresponding signals. 22 class MediaStreamObserver : public ObserverInterface { 23 public: 24 explicit MediaStreamObserver(MediaStreamInterface* stream); 25 ~MediaStreamObserver() override; 26 stream()27 const MediaStreamInterface* stream() const { return stream_; } 28 29 void OnChanged() override; 30 31 sigslot::signal2<AudioTrackInterface*, MediaStreamInterface*> 32 SignalAudioTrackAdded; 33 sigslot::signal2<AudioTrackInterface*, MediaStreamInterface*> 34 SignalAudioTrackRemoved; 35 sigslot::signal2<VideoTrackInterface*, MediaStreamInterface*> 36 SignalVideoTrackAdded; 37 sigslot::signal2<VideoTrackInterface*, MediaStreamInterface*> 38 SignalVideoTrackRemoved; 39 40 private: 41 rtc::scoped_refptr<MediaStreamInterface> stream_; 42 AudioTrackVector cached_audio_tracks_; 43 VideoTrackVector cached_video_tracks_; 44 }; 45 46 } // namespace webrtc 47 48 #endif // PC_MEDIA_STREAM_OBSERVER_H_ 49