Reason for revert: Relanding after known downstream breakages have been fixed. Original issue's description: > Revert of Delete all use of cricket::VideoFrame and cricket::WebRtcVideoFrame. (patchset #7 id:120001 of https://codereview.webrtc.org/2383093002/ ) > > Reason for revert: > Breaks chrome, see https://build.chromium.org/p/chromium.webrtc.fyi/builders/Mac%20Builder/builds/19019/steps/compile/logs/stdio > > Analysis: Chrome uses cricket::VideoFrame, without explicitly including webrtc/media/base/videoframe.h, and breaks when that file is no longer included by any other webrtc headers. Will reland after updating Chrome. > > Original issue's description: > > Delete all use of cricket::VideoFrame and cricket::WebRtcVideoFrame. > > > > Replaced with webrtc::VideoFrame. > > > > TBR=mflodman@webrtc.org > > BUG=webrtc:5682 > > > > Committed: https://crrev.com/45c8b8940042bd2574c39920804ade8343cefdba > > Cr-Commit-Position: refs/heads/master@{#14885} > > TBR=perkj@webrtc.org,pthatcher@webrtc.org,tkchin@webrtc.org,mflodman@webrtc.org,stefan@webrtc.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=webrtc:5682 > > Committed: https://crrev.com/7341ab8e2505c9763d208e069bda269018357e7d > Cr-Commit-Position: refs/heads/master@{#14886} TBR=perkj@webrtc.org,pthatcher@webrtc.org,tkchin@webrtc.org,mflodman@webrtc.org,stefan@webrtc.org # Not skipping CQ checks because original CL landed more than 1 days ago. BUG=webrtc:5682 Review-Url: https://codereview.webrtc.org/2487633002 Cr-Commit-Position: refs/heads/master@{#15039}
59 lines
1.8 KiB
C++
59 lines
1.8 KiB
C++
/*
|
|
* Copyright (c) 2016 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.
|
|
*/
|
|
|
|
#include "webrtc/media/base/videosourcebase.h"
|
|
|
|
#include "webrtc/base/checks.h"
|
|
|
|
namespace rtc {
|
|
|
|
VideoSourceBase::VideoSourceBase() {
|
|
thread_checker_.DetachFromThread();
|
|
}
|
|
|
|
void VideoSourceBase::AddOrUpdateSink(
|
|
VideoSinkInterface<webrtc::VideoFrame>* sink,
|
|
const VideoSinkWants& wants) {
|
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
|
RTC_DCHECK(sink != nullptr);
|
|
|
|
SinkPair* sink_pair = FindSinkPair(sink);
|
|
if (!sink_pair) {
|
|
sinks_.push_back(SinkPair(sink, wants));
|
|
} else {
|
|
sink_pair->wants = wants;
|
|
}
|
|
}
|
|
|
|
void VideoSourceBase::RemoveSink(VideoSinkInterface<webrtc::VideoFrame>* sink) {
|
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
|
RTC_DCHECK(sink != nullptr);
|
|
RTC_DCHECK(FindSinkPair(sink));
|
|
sinks_.erase(std::remove_if(sinks_.begin(), sinks_.end(),
|
|
[sink](const SinkPair& sink_pair) {
|
|
return sink_pair.sink == sink;
|
|
}),
|
|
sinks_.end());
|
|
}
|
|
|
|
VideoSourceBase::SinkPair* VideoSourceBase::FindSinkPair(
|
|
const VideoSinkInterface<webrtc::VideoFrame>* sink) {
|
|
RTC_DCHECK(thread_checker_.CalledOnValidThread());
|
|
auto sink_pair_it = std::find_if(
|
|
sinks_.begin(), sinks_.end(),
|
|
[sink](const SinkPair& sink_pair) { return sink_pair.sink == sink; });
|
|
if (sink_pair_it != sinks_.end()) {
|
|
return &*sink_pair_it;
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
} // namespace rtc
|