Switching some interfaces to use std::unique_ptr<>.
This helps show where ownership is transfered between objects.
Specifically, this CL wraps cricket::VideoCapturer, MediaEngineInterface
and DataEngineInterface in unique_ptr.
BUG=None
TBR=magjed@webrtc.org
Review-Url: https://codereview.webrtc.org/2685093002
Cr-Commit-Position: refs/heads/master@{#16548}
diff --git a/webrtc/pc/channelmanager.cc b/webrtc/pc/channelmanager.cc
index d0957a7..d8ecc9a 100644
--- a/webrtc/pc/channelmanager.cc
+++ b/webrtc/pc/channelmanager.cc
@@ -28,28 +28,26 @@
using rtc::Bind;
-static DataEngineInterface* ConstructDataEngine() {
- return new RtpDataEngine();
-}
-
-ChannelManager::ChannelManager(MediaEngineInterface* me,
- DataEngineInterface* dme,
+ChannelManager::ChannelManager(std::unique_ptr<MediaEngineInterface> me,
+ std::unique_ptr<DataEngineInterface> dme,
rtc::Thread* thread) {
- Construct(me, dme, thread, thread);
+ Construct(std::move(me), std::move(dme), thread, thread);
}
-ChannelManager::ChannelManager(MediaEngineInterface* me,
+ChannelManager::ChannelManager(std::unique_ptr<MediaEngineInterface> me,
rtc::Thread* worker_thread,
rtc::Thread* network_thread) {
- Construct(me, ConstructDataEngine(), worker_thread, network_thread);
+ Construct(std::move(me),
+ std::unique_ptr<DataEngineInterface>(new RtpDataEngine()),
+ worker_thread, network_thread);
}
-void ChannelManager::Construct(MediaEngineInterface* me,
- DataEngineInterface* dme,
+void ChannelManager::Construct(std::unique_ptr<MediaEngineInterface> me,
+ std::unique_ptr<DataEngineInterface> dme,
rtc::Thread* worker_thread,
rtc::Thread* network_thread) {
- media_engine_.reset(me);
- data_media_engine_.reset(dme);
+ media_engine_ = std::move(me);
+ data_media_engine_ = std::move(dme);
initialized_ = false;
main_thread_ = rtc::Thread::Current();
worker_thread_ = worker_thread;
diff --git a/webrtc/pc/channelmanager.h b/webrtc/pc/channelmanager.h
index 879ea4d..052c363 100644
--- a/webrtc/pc/channelmanager.h
+++ b/webrtc/pc/channelmanager.h
@@ -38,13 +38,12 @@
class ChannelManager {
public:
// For testing purposes. Allows the media engine and data media
- // engine and dev manager to be mocks. The ChannelManager takes
- // ownership of these objects.
- ChannelManager(MediaEngineInterface* me,
- DataEngineInterface* dme,
+ // engine and dev manager to be mocks.
+ ChannelManager(std::unique_ptr<MediaEngineInterface> me,
+ std::unique_ptr<DataEngineInterface> dme,
rtc::Thread* worker_and_network);
// Same as above, but gives an easier default DataEngine.
- ChannelManager(MediaEngineInterface* me,
+ ChannelManager(std::unique_ptr<MediaEngineInterface> me,
rtc::Thread* worker,
rtc::Thread* network);
~ChannelManager();
@@ -157,8 +156,8 @@
typedef std::vector<VideoChannel*> VideoChannels;
typedef std::vector<RtpDataChannel*> RtpDataChannels;
- void Construct(MediaEngineInterface* me,
- DataEngineInterface* dme,
+ void Construct(std::unique_ptr<MediaEngineInterface> me,
+ std::unique_ptr<DataEngineInterface> dme,
rtc::Thread* worker_thread,
rtc::Thread* network_thread);
bool InitMediaEngine_w();
diff --git a/webrtc/pc/channelmanager_unittest.cc b/webrtc/pc/channelmanager_unittest.cc
index 74c3590..deba6a1 100644
--- a/webrtc/pc/channelmanager_unittest.cc
+++ b/webrtc/pc/channelmanager_unittest.cc
@@ -8,6 +8,8 @@
* be found in the AUTHORS file in the root of the source tree.
*/
+#include <memory>
+
#include "webrtc/base/gunit.h"
#include "webrtc/base/logging.h"
#include "webrtc/base/thread.h"
@@ -40,34 +42,28 @@
ChannelManagerTest()
: fme_(new cricket::FakeMediaEngine()),
fdme_(new cricket::FakeDataEngine()),
- cm_(new cricket::ChannelManager(fme_, fdme_, rtc::Thread::Current())),
+ cm_(new cricket::ChannelManager(
+ std::unique_ptr<MediaEngineInterface>(fme_),
+ std::unique_ptr<DataEngineInterface>(fdme_),
+ rtc::Thread::Current())),
fake_call_(webrtc::Call::Config(&event_log_)),
- fake_mc_(cm_, &fake_call_),
+ fake_mc_(cm_.get(), &fake_call_),
transport_controller_(
- new cricket::FakeTransportController(ICEROLE_CONTROLLING)) {}
-
- virtual void SetUp() {
+ new cricket::FakeTransportController(ICEROLE_CONTROLLING)) {
fme_->SetAudioCodecs(MAKE_VECTOR(kAudioCodecs));
fme_->SetVideoCodecs(MAKE_VECTOR(kVideoCodecs));
}
- virtual void TearDown() {
- delete transport_controller_;
- delete cm_;
- cm_ = NULL;
- fdme_ = NULL;
- fme_ = NULL;
- }
-
webrtc::RtcEventLogNullImpl event_log_;
rtc::Thread network_;
rtc::Thread worker_;
+ // |fme_| and |fdme_| are actually owned by |cm_|.
cricket::FakeMediaEngine* fme_;
cricket::FakeDataEngine* fdme_;
- cricket::ChannelManager* cm_;
+ std::unique_ptr<cricket::ChannelManager> cm_;
cricket::FakeCall fake_call_;
cricket::FakeMediaController fake_mc_;
- cricket::FakeTransportController* transport_controller_;
+ std::unique_ptr<cricket::FakeTransportController> transport_controller_;
};
// Test that we startup/shutdown properly.
@@ -133,9 +129,8 @@
EXPECT_TRUE(cm_->set_worker_thread(&worker_));
EXPECT_TRUE(cm_->set_network_thread(&network_));
EXPECT_TRUE(cm_->Init());
- delete transport_controller_;
- transport_controller_ =
- new cricket::FakeTransportController(&network_, ICEROLE_CONTROLLING);
+ transport_controller_.reset(
+ new cricket::FakeTransportController(&network_, ICEROLE_CONTROLLING));
cricket::DtlsTransportInternal* rtp_transport =
transport_controller_->CreateDtlsTransport(
cricket::CN_AUDIO, cricket::ICE_CANDIDATE_COMPONENT_RTP);
diff --git a/webrtc/pc/peerconnection_unittest.cc b/webrtc/pc/peerconnection_unittest.cc
index b7ddc24..df87135 100644
--- a/webrtc/pc/peerconnection_unittest.cc
+++ b/webrtc/pc/peerconnection_unittest.cc
@@ -588,8 +588,9 @@
fake_capturer->SetRotation(capture_rotation_);
video_capturers_.push_back(fake_capturer);
rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> source =
- peer_connection_factory_->CreateVideoSource(fake_capturer,
- &source_constraints);
+ peer_connection_factory_->CreateVideoSource(
+ std::unique_ptr<cricket::VideoCapturer>(fake_capturer),
+ &source_constraints);
std::string label = stream_label + kVideoTrackLabelBase;
rtc::scoped_refptr<webrtc::VideoTrackInterface> track(
diff --git a/webrtc/pc/peerconnectionfactory.cc b/webrtc/pc/peerconnectionfactory.cc
index 4adee15..1de7284 100644
--- a/webrtc/pc/peerconnectionfactory.cc
+++ b/webrtc/pc/peerconnectionfactory.cc
@@ -211,13 +211,13 @@
// TODO: Need to make sure only one VoE is created inside
// WebRtcMediaEngine.
- cricket::MediaEngineInterface* media_engine =
- worker_thread_->Invoke<cricket::MediaEngineInterface*>(
+ std::unique_ptr<cricket::MediaEngineInterface> media_engine =
+ worker_thread_->Invoke<std::unique_ptr<cricket::MediaEngineInterface>>(
RTC_FROM_HERE,
rtc::Bind(&PeerConnectionFactory::CreateMediaEngine_w, this));
channel_manager_.reset(new cricket::ChannelManager(
- media_engine, worker_thread_, network_thread_));
+ std::move(media_engine), worker_thread_, network_thread_));
channel_manager_->SetVideoRtxEnabled(true);
channel_manager_->SetCryptoOptions(options_.crypto_options);
@@ -254,21 +254,23 @@
rtc::scoped_refptr<VideoTrackSourceInterface>
PeerConnectionFactory::CreateVideoSource(
- cricket::VideoCapturer* capturer,
+ std::unique_ptr<cricket::VideoCapturer> capturer,
const MediaConstraintsInterface* constraints) {
RTC_DCHECK(signaling_thread_->IsCurrent());
rtc::scoped_refptr<VideoTrackSourceInterface> source(
- VideoCapturerTrackSource::Create(worker_thread_, capturer, constraints,
- false));
+ VideoCapturerTrackSource::Create(worker_thread_, std::move(capturer),
+ constraints, false));
return VideoTrackSourceProxy::Create(signaling_thread_, worker_thread_,
source);
}
rtc::scoped_refptr<VideoTrackSourceInterface>
-PeerConnectionFactory::CreateVideoSource(cricket::VideoCapturer* capturer) {
+PeerConnectionFactory::CreateVideoSource(
+ std::unique_ptr<cricket::VideoCapturer> capturer) {
RTC_DCHECK(signaling_thread_->IsCurrent());
rtc::scoped_refptr<VideoTrackSourceInterface> source(
- VideoCapturerTrackSource::Create(worker_thread_, capturer, false));
+ VideoCapturerTrackSource::Create(worker_thread_, std::move(capturer),
+ false));
return VideoTrackSourceProxy::Create(signaling_thread_, worker_thread_,
source);
}
@@ -389,11 +391,14 @@
return network_thread_;
}
-cricket::MediaEngineInterface* PeerConnectionFactory::CreateMediaEngine_w() {
+std::unique_ptr<cricket::MediaEngineInterface>
+PeerConnectionFactory::CreateMediaEngine_w() {
RTC_DCHECK(worker_thread_ == rtc::Thread::Current());
- return cricket::WebRtcMediaEngineFactory::Create(
- default_adm_.get(), audio_decoder_factory_, video_encoder_factory_.get(),
- video_decoder_factory_.get(), external_audio_mixer_);
+ return std::unique_ptr<cricket::MediaEngineInterface>(
+ cricket::WebRtcMediaEngineFactory::Create(
+ default_adm_.get(), audio_decoder_factory_,
+ video_encoder_factory_.get(), video_decoder_factory_.get(),
+ external_audio_mixer_));
}
} // namespace webrtc
diff --git a/webrtc/pc/peerconnectionfactory.h b/webrtc/pc/peerconnectionfactory.h
index 932821f..53c6745 100644
--- a/webrtc/pc/peerconnectionfactory.h
+++ b/webrtc/pc/peerconnectionfactory.h
@@ -33,6 +33,12 @@
class PeerConnectionFactory : public PeerConnectionFactoryInterface {
public:
+ // Use the overloads of CreateVideoSource that take raw VideoCapturer
+ // pointers from PeerConnectionFactoryInterface.
+ // TODO(deadbeef): Remove this using statement once those overloads are
+ // removed.
+ using PeerConnectionFactoryInterface::CreateVideoSource;
+
void SetOptions(const Options& options) override;
// Deprecated, use version without constraints.
@@ -61,13 +67,13 @@
const MediaConstraintsInterface* constraints) override;
virtual rtc::scoped_refptr<VideoTrackSourceInterface> CreateVideoSource(
- cricket::VideoCapturer* capturer) override;
+ std::unique_ptr<cricket::VideoCapturer> capturer) override;
// This version supports filtering on width, height and frame rate.
// For the "constraints=null" case, use the version without constraints.
// TODO(hta): Design a version without MediaConstraintsInterface.
// https://bugs.chromium.org/p/webrtc/issues/detail?id=5617
rtc::scoped_refptr<VideoTrackSourceInterface> CreateVideoSource(
- cricket::VideoCapturer* capturer,
+ std::unique_ptr<cricket::VideoCapturer> capturer,
const MediaConstraintsInterface* constraints) override;
rtc::scoped_refptr<VideoTrackInterface> CreateVideoTrack(
@@ -118,7 +124,7 @@
virtual ~PeerConnectionFactory();
private:
- cricket::MediaEngineInterface* CreateMediaEngine_w();
+ std::unique_ptr<cricket::MediaEngineInterface> CreateMediaEngine_w();
bool owns_ptrs_;
bool wraps_current_thread_;
diff --git a/webrtc/pc/peerconnectionfactory_unittest.cc b/webrtc/pc/peerconnectionfactory_unittest.cc
index 3fa523e..9a6e543 100644
--- a/webrtc/pc/peerconnectionfactory_unittest.cc
+++ b/webrtc/pc/peerconnectionfactory_unittest.cc
@@ -336,9 +336,11 @@
// local video track.
TEST_F(PeerConnectionFactoryTest, LocalRendering) {
cricket::FakeVideoCapturer* capturer = new cricket::FakeVideoCapturer();
- // The source take ownership of |capturer|.
+ // The source takes ownership of |capturer|, but we keep a raw pointer to
+ // inject fake frames.
rtc::scoped_refptr<VideoTrackSourceInterface> source(
- factory_->CreateVideoSource(capturer, NULL));
+ factory_->CreateVideoSource(
+ std::unique_ptr<cricket::VideoCapturer>(capturer), NULL));
ASSERT_TRUE(source.get() != NULL);
rtc::scoped_refptr<VideoTrackInterface> track(
factory_->CreateVideoTrack("testlabel", source));
diff --git a/webrtc/pc/peerconnectioninterface_unittest.cc b/webrtc/pc/peerconnectioninterface_unittest.cc
index 84bfa3a..7f73db8 100644
--- a/webrtc/pc/peerconnectioninterface_unittest.cc
+++ b/webrtc/pc/peerconnectioninterface_unittest.cc
@@ -801,7 +801,9 @@
rtc::scoped_refptr<MediaStreamInterface> stream(
pc_factory_->CreateLocalMediaStream(label));
rtc::scoped_refptr<VideoTrackSourceInterface> video_source(
- pc_factory_->CreateVideoSource(new cricket::FakeVideoCapturer(), NULL));
+ pc_factory_->CreateVideoSource(std::unique_ptr<cricket::VideoCapturer>(
+ new cricket::FakeVideoCapturer()),
+ NULL));
rtc::scoped_refptr<VideoTrackInterface> video_track(
pc_factory_->CreateVideoTrack(label + "v0", video_source));
stream->AddTrack(video_track.get());
@@ -834,8 +836,9 @@
stream->AddTrack(audio_track.get());
rtc::scoped_refptr<VideoTrackInterface> video_track(
pc_factory_->CreateVideoTrack(
- video_track_label,
- pc_factory_->CreateVideoSource(new cricket::FakeVideoCapturer())));
+ video_track_label, pc_factory_->CreateVideoSource(
+ std::unique_ptr<cricket::VideoCapturer>(
+ new cricket::FakeVideoCapturer()))));
stream->AddTrack(video_track.get());
EXPECT_TRUE(pc_->AddStream(stream));
EXPECT_TRUE_WAIT(observer_.renegotiation_needed_, kTimeout);
@@ -1385,8 +1388,9 @@
pc_factory_->CreateAudioTrack("audio_track", nullptr));
rtc::scoped_refptr<VideoTrackInterface> video_track(
pc_factory_->CreateVideoTrack(
- "video_track",
- pc_factory_->CreateVideoSource(new cricket::FakeVideoCapturer())));
+ "video_track", pc_factory_->CreateVideoSource(
+ std::unique_ptr<cricket::VideoCapturer>(
+ new cricket::FakeVideoCapturer()))));
auto audio_sender = pc_->AddTrack(audio_track, stream_list);
auto video_sender = pc_->AddTrack(video_track, stream_list);
EXPECT_EQ(1UL, audio_sender->stream_ids().size());
@@ -1456,8 +1460,9 @@
pc_factory_->CreateAudioTrack("audio_track", nullptr));
rtc::scoped_refptr<VideoTrackInterface> video_track(
pc_factory_->CreateVideoTrack(
- "video_track",
- pc_factory_->CreateVideoSource(new cricket::FakeVideoCapturer())));
+ "video_track", pc_factory_->CreateVideoSource(
+ std::unique_ptr<cricket::VideoCapturer>(
+ new cricket::FakeVideoCapturer()))));
auto audio_sender =
pc_->AddTrack(audio_track, std::vector<MediaStreamInterface*>());
auto video_sender =
@@ -1618,8 +1623,9 @@
// Add video track to the audio-only stream.
rtc::scoped_refptr<VideoTrackInterface> video_track(
pc_factory_->CreateVideoTrack(
- "video_label",
- pc_factory_->CreateVideoSource(new cricket::FakeVideoCapturer())));
+ "video_label", pc_factory_->CreateVideoSource(
+ std::unique_ptr<cricket::VideoCapturer>(
+ new cricket::FakeVideoCapturer()))));
stream->AddTrack(video_track.get());
std::unique_ptr<SessionDescriptionInterface> offer;
diff --git a/webrtc/pc/rtcstatscollector_unittest.cc b/webrtc/pc/rtcstatscollector_unittest.cc
index 715da56..adace3f 100644
--- a/webrtc/pc/rtcstatscollector_unittest.cc
+++ b/webrtc/pc/rtcstatscollector_unittest.cc
@@ -277,9 +277,10 @@
network_thread_(rtc::Thread::Current()),
signaling_thread_(rtc::Thread::Current()),
media_engine_(new cricket::FakeMediaEngine()),
- channel_manager_(new cricket::ChannelManager(media_engine_,
- worker_thread_,
- network_thread_)),
+ channel_manager_(new cricket::ChannelManager(
+ std::unique_ptr<cricket::MediaEngineInterface>(media_engine_),
+ worker_thread_,
+ network_thread_)),
media_controller_(
MediaControllerInterface::Create(cricket::MediaConfig(),
worker_thread_,
@@ -489,6 +490,7 @@
rtc::Thread* const worker_thread_;
rtc::Thread* const network_thread_;
rtc::Thread* const signaling_thread_;
+ // |media_engine_| is actually owned by |channel_manager_|.
cricket::FakeMediaEngine* media_engine_;
std::unique_ptr<cricket::ChannelManager> channel_manager_;
std::unique_ptr<MediaControllerInterface> media_controller_;
diff --git a/webrtc/pc/rtpsenderreceiver_unittest.cc b/webrtc/pc/rtpsenderreceiver_unittest.cc
index c02da58..99380e9 100644
--- a/webrtc/pc/rtpsenderreceiver_unittest.cc
+++ b/webrtc/pc/rtpsenderreceiver_unittest.cc
@@ -61,9 +61,10 @@
: // Create fake media engine/etc. so we can create channels to use to
// test RtpSenders/RtpReceivers.
media_engine_(new cricket::FakeMediaEngine()),
- channel_manager_(media_engine_,
- rtc::Thread::Current(),
- rtc::Thread::Current()),
+ channel_manager_(
+ std::unique_ptr<cricket::MediaEngineInterface>(media_engine_),
+ rtc::Thread::Current(),
+ rtc::Thread::Current()),
fake_call_(Call::Config(&event_log_)),
fake_media_controller_(&channel_manager_, &fake_call_),
stream_(MediaStream::Create(kStreamLabel1)) {
@@ -251,6 +252,7 @@
protected:
webrtc::RtcEventLogNullImpl event_log_;
+ // |media_engine_| is actually owned by |channel_manager_|.
cricket::FakeMediaEngine* media_engine_;
cricket::FakeTransportController fake_transport_controller_;
cricket::ChannelManager channel_manager_;
diff --git a/webrtc/pc/statscollector_unittest.cc b/webrtc/pc/statscollector_unittest.cc
index 1bb6d1d..c9affa1 100644
--- a/webrtc/pc/statscollector_unittest.cc
+++ b/webrtc/pc/statscollector_unittest.cc
@@ -504,9 +504,10 @@
: worker_thread_(rtc::Thread::Current()),
network_thread_(rtc::Thread::Current()),
media_engine_(new cricket::FakeMediaEngine()),
- channel_manager_(new cricket::ChannelManager(media_engine_,
- worker_thread_,
- network_thread_)),
+ channel_manager_(new cricket::ChannelManager(
+ std::unique_ptr<cricket::MediaEngineInterface>(media_engine_),
+ worker_thread_,
+ network_thread_)),
media_controller_(
webrtc::MediaControllerInterface::Create(cricket::MediaConfig(),
worker_thread_,
@@ -780,6 +781,7 @@
webrtc::RtcEventLogNullImpl event_log_;
rtc::Thread* const worker_thread_;
rtc::Thread* const network_thread_;
+ // |media_engine_| is actually owned by |channel_manager_|.
cricket::FakeMediaEngine* media_engine_;
std::unique_ptr<cricket::ChannelManager> channel_manager_;
std::unique_ptr<webrtc::MediaControllerInterface> media_controller_;
diff --git a/webrtc/pc/test/peerconnectiontestwrapper.cc b/webrtc/pc/test/peerconnectiontestwrapper.cc
index c433699..e5ead48 100644
--- a/webrtc/pc/test/peerconnectiontestwrapper.cc
+++ b/webrtc/pc/test/peerconnectiontestwrapper.cc
@@ -269,7 +269,9 @@
rtc::scoped_refptr<webrtc::VideoTrackSourceInterface> source =
peer_connection_factory_->CreateVideoSource(
- new webrtc::FakePeriodicVideoCapturer(), &constraints);
+ std::unique_ptr<cricket::VideoCapturer>(
+ new webrtc::FakePeriodicVideoCapturer()),
+ &constraints);
std::string videotrack_label = label + kVideoTrackLabelBase;
rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track(
peer_connection_factory_->CreateVideoTrack(videotrack_label, source));
diff --git a/webrtc/pc/videocapturertracksource.cc b/webrtc/pc/videocapturertracksource.cc
index 771429a..2bb29da 100644
--- a/webrtc/pc/videocapturertracksource.cc
+++ b/webrtc/pc/videocapturertracksource.cc
@@ -258,39 +258,39 @@
rtc::scoped_refptr<VideoTrackSourceInterface> VideoCapturerTrackSource::Create(
rtc::Thread* worker_thread,
- cricket::VideoCapturer* capturer,
+ std::unique_ptr<cricket::VideoCapturer> capturer,
const webrtc::MediaConstraintsInterface* constraints,
bool remote) {
RTC_DCHECK(worker_thread != NULL);
RTC_DCHECK(capturer != NULL);
rtc::scoped_refptr<VideoCapturerTrackSource> source(
- new rtc::RefCountedObject<VideoCapturerTrackSource>(worker_thread,
- capturer, remote));
+ new rtc::RefCountedObject<VideoCapturerTrackSource>(
+ worker_thread, std::move(capturer), remote));
source->Initialize(constraints);
return source;
}
rtc::scoped_refptr<VideoTrackSourceInterface> VideoCapturerTrackSource::Create(
rtc::Thread* worker_thread,
- cricket::VideoCapturer* capturer,
+ std::unique_ptr<cricket::VideoCapturer> capturer,
bool remote) {
RTC_DCHECK(worker_thread != NULL);
RTC_DCHECK(capturer != NULL);
rtc::scoped_refptr<VideoCapturerTrackSource> source(
- new rtc::RefCountedObject<VideoCapturerTrackSource>(worker_thread,
- capturer, remote));
+ new rtc::RefCountedObject<VideoCapturerTrackSource>(
+ worker_thread, std::move(capturer), remote));
source->Initialize(nullptr);
return source;
}
VideoCapturerTrackSource::VideoCapturerTrackSource(
rtc::Thread* worker_thread,
- cricket::VideoCapturer* capturer,
+ std::unique_ptr<cricket::VideoCapturer> capturer,
bool remote)
- : VideoTrackSource(capturer, remote),
+ : VideoTrackSource(capturer.get(), remote),
signaling_thread_(rtc::Thread::Current()),
worker_thread_(worker_thread),
- video_capturer_(capturer),
+ video_capturer_(std::move(capturer)),
started_(false) {
video_capturer_->SignalStateChange.connect(
this, &VideoCapturerTrackSource::OnStateChange);
diff --git a/webrtc/pc/videocapturertracksource.h b/webrtc/pc/videocapturertracksource.h
index 30991a1..af87cc9 100644
--- a/webrtc/pc/videocapturertracksource.h
+++ b/webrtc/pc/videocapturertracksource.h
@@ -34,18 +34,18 @@
public sigslot::has_slots<> {
public:
// Creates an instance of VideoCapturerTrackSource.
- // VideoCapturerTrackSource take ownership of |capturer|.
+ // VideoCapturerTrackSource takes ownership of |capturer|.
// |constraints| can be NULL and in that case the camera is opened using a
// default resolution.
static rtc::scoped_refptr<VideoTrackSourceInterface> Create(
rtc::Thread* worker_thread,
- cricket::VideoCapturer* capturer,
+ std::unique_ptr<cricket::VideoCapturer> capturer,
const webrtc::MediaConstraintsInterface* constraints,
bool remote);
static rtc::scoped_refptr<VideoTrackSourceInterface> Create(
rtc::Thread* worker_thread,
- cricket::VideoCapturer* capturer,
+ std::unique_ptr<cricket::VideoCapturer> capturer,
bool remote);
bool is_screencast() const override {
@@ -59,7 +59,7 @@
protected:
VideoCapturerTrackSource(rtc::Thread* worker_thread,
- cricket::VideoCapturer* capturer,
+ std::unique_ptr<cricket::VideoCapturer> capturer,
bool remote);
virtual ~VideoCapturerTrackSource();
void Initialize(const webrtc::MediaConstraintsInterface* constraints);
diff --git a/webrtc/pc/videocapturertracksource_unittest.cc b/webrtc/pc/videocapturertracksource_unittest.cc
index 144d4b4..3fe726a 100644
--- a/webrtc/pc/videocapturertracksource_unittest.cc
+++ b/webrtc/pc/videocapturertracksource_unittest.cc
@@ -109,9 +109,8 @@
protected:
VideoCapturerTrackSourceTest() { InitCapturer(false); }
void InitCapturer(bool is_screencast) {
- capturer_cleanup_ = std::unique_ptr<TestVideoCapturer>(
- new TestVideoCapturer(is_screencast));
- capturer_ = capturer_cleanup_.get();
+ capturer_ = new TestVideoCapturer(is_screencast);
+ capturer_cleanup_.reset(capturer_);
}
void InitScreencast() { InitCapturer(true); }
@@ -120,9 +119,8 @@
void CreateVideoCapturerSource(
const webrtc::MediaConstraintsInterface* constraints) {
- // VideoSource take ownership of |capturer_|
source_ = VideoCapturerTrackSource::Create(rtc::Thread::Current(),
- capturer_cleanup_.release(),
+ std::move(capturer_cleanup_),
constraints, false);
ASSERT_TRUE(source_.get() != NULL);
@@ -132,7 +130,7 @@
source_->AddOrUpdateSink(&renderer_, rtc::VideoSinkWants());
}
- std::unique_ptr<TestVideoCapturer> capturer_cleanup_;
+ std::unique_ptr<cricket::VideoCapturer> capturer_cleanup_;
TestVideoCapturer* capturer_;
cricket::FakeVideoRenderer renderer_;
std::unique_ptr<StateObserver> state_observer_;
diff --git a/webrtc/pc/webrtcsession_unittest.cc b/webrtc/pc/webrtcsession_unittest.cc
index e9017d4..f785151 100644
--- a/webrtc/pc/webrtcsession_unittest.cc
+++ b/webrtc/pc/webrtcsession_unittest.cc
@@ -369,9 +369,10 @@
WebRtcSessionTest()
: media_engine_(new cricket::FakeMediaEngine()),
data_engine_(new cricket::FakeDataEngine()),
- channel_manager_(new cricket::ChannelManager(media_engine_,
- data_engine_,
- rtc::Thread::Current())),
+ channel_manager_(new cricket::ChannelManager(
+ std::unique_ptr<cricket::MediaEngineInterface>(media_engine_),
+ std::unique_ptr<cricket::DataEngineInterface>(data_engine_),
+ rtc::Thread::Current())),
fake_call_(webrtc::Call::Config(&event_log_)),
media_controller_(
webrtc::MediaControllerInterface::Create(cricket::MediaConfig(),
@@ -1504,6 +1505,8 @@
}
webrtc::RtcEventLogNullImpl event_log_;
+ // |media_engine_| and |data_engine_| are actually owned by
+ // |channel_manager_|.
cricket::FakeMediaEngine* media_engine_;
cricket::FakeDataEngine* data_engine_;
// Actually owned by session_.