Index: webrtc/api/videotrack.cc |
diff --git a/webrtc/api/videotrack.cc b/webrtc/api/videotrack.cc |
index 54c3cce91a11d084ee99b475c53149fe66f53e37..30e2da2107e41fd1000a6eb362fc3495966ccf5b 100644 |
--- a/webrtc/api/videotrack.cc |
+++ b/webrtc/api/videotrack.cc |
@@ -20,9 +20,12 @@ VideoTrack::VideoTrack(const std::string& label, |
VideoTrackSourceInterface* video_source) |
: MediaStreamTrack<VideoTrackInterface>(label), |
video_source_(video_source) { |
+ RTC_CHECK(video_source); |
+ video_source_->RegisterObserver(this); |
} |
VideoTrack::~VideoTrack() { |
+ video_source_->UnregisterObserver(this); |
} |
std::string VideoTrack::kind() const { |
@@ -46,6 +49,10 @@ void VideoTrack::RemoveSink( |
video_source_->RemoveSink(sink); |
} |
+void VideoTrack::GetInfo(rtc::VideoSourceInfo *info) { |
+ video_source_->GetInfo(info); |
+} |
+ |
bool VideoTrack::set_enabled(bool enable) { |
RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
for (auto& sink_pair : sink_pairs()) { |
@@ -56,6 +63,15 @@ bool VideoTrack::set_enabled(bool enable) { |
return MediaStreamTrack<VideoTrackInterface>::set_enabled(enable); |
} |
+void VideoTrack::OnChanged() { |
+ RTC_DCHECK(thread_checker_.CalledOnValidThread()); |
+ if (video_source_->state() == MediaSourceInterface::kEnded) { |
+ set_state(kEnded); |
+ } else { |
+ set_state(kLive); |
+ } |
+} |
+ |
rtc::scoped_refptr<VideoTrack> VideoTrack::Create( |
const std::string& id, |
VideoTrackSourceInterface* source) { |