Remove unnecessary video factory references in PeerConnectionFactory
The video codec factories should be owned by the video engine instead of by the PeerConnectionFactory. Bug: None Change-Id: If63d47cef565138d51377af3fc9ea973950c9390 Reviewed-on: https://webrtc-review.googlesource.com/1601 Reviewed-by: Anders Carlsson <andersc@webrtc.org> Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org> Commit-Queue: Magnus Jedvert <magjed@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20002}
This commit is contained in:
parent
03ec4f8188
commit
02e7a1981a
@ -1229,8 +1229,6 @@ CreateModularPeerConnectionFactory(
|
|||||||
rtc::Thread* network_thread,
|
rtc::Thread* network_thread,
|
||||||
rtc::Thread* worker_thread,
|
rtc::Thread* worker_thread,
|
||||||
rtc::Thread* signaling_thread,
|
rtc::Thread* signaling_thread,
|
||||||
cricket::WebRtcVideoEncoderFactory* video_encoder_factory,
|
|
||||||
cricket::WebRtcVideoDecoderFactory* video_decoder_factory,
|
|
||||||
std::unique_ptr<cricket::MediaEngineInterface> media_engine,
|
std::unique_ptr<cricket::MediaEngineInterface> media_engine,
|
||||||
std::unique_ptr<CallFactoryInterface> call_factory,
|
std::unique_ptr<CallFactoryInterface> call_factory,
|
||||||
std::unique_ptr<RtcEventLogFactoryInterface> event_log_factory);
|
std::unique_ptr<RtcEventLogFactoryInterface> event_log_factory);
|
||||||
|
|||||||
@ -27,6 +27,11 @@
|
|||||||
#include "rtc_base/gunit.h"
|
#include "rtc_base/gunit.h"
|
||||||
#include "rtc_base/timeutils.h"
|
#include "rtc_base/timeutils.h"
|
||||||
|
|
||||||
|
namespace cricket {
|
||||||
|
class WebRtcVideoEncoderFactory;
|
||||||
|
class WebRtcVideoDecoderFactory;
|
||||||
|
} // namespace cricket
|
||||||
|
|
||||||
#define EXPECT_FRAME_WAIT(c, w, h, t) \
|
#define EXPECT_FRAME_WAIT(c, w, h, t) \
|
||||||
EXPECT_EQ_WAIT((c), renderer_.num_rendered_frames(), (t)); \
|
EXPECT_EQ_WAIT((c), renderer_.num_rendered_frames(), (t)); \
|
||||||
EXPECT_EQ((w), renderer_.width()); \
|
EXPECT_EQ((w), renderer_.width()); \
|
||||||
@ -65,8 +70,8 @@ class VideoMediaChannelTest : public testing::Test,
|
|||||||
protected:
|
protected:
|
||||||
VideoMediaChannelTest<E, C>()
|
VideoMediaChannelTest<E, C>()
|
||||||
: call_(webrtc::Call::Create(webrtc::Call::Config(&event_log_))),
|
: call_(webrtc::Call::Create(webrtc::Call::Config(&event_log_))),
|
||||||
engine_(nullptr /* external_encoder_factory */,
|
engine_(std::unique_ptr<cricket::WebRtcVideoEncoderFactory>(),
|
||||||
nullptr /* external_decoder_factory */) {}
|
std::unique_ptr<cricket::WebRtcVideoDecoderFactory>()) {}
|
||||||
|
|
||||||
virtual cricket::VideoCodec DefaultCodec() = 0;
|
virtual cricket::VideoCodec DefaultCodec() = 0;
|
||||||
|
|
||||||
|
|||||||
@ -40,8 +40,11 @@ MediaEngineInterface* CreateWebRtcMediaEngine(
|
|||||||
rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) {
|
rtc::scoped_refptr<webrtc::AudioProcessing> audio_processing) {
|
||||||
#ifdef HAVE_WEBRTC_VIDEO
|
#ifdef HAVE_WEBRTC_VIDEO
|
||||||
typedef WebRtcVideoEngine VideoEngine;
|
typedef WebRtcVideoEngine VideoEngine;
|
||||||
std::tuple<WebRtcVideoEncoderFactory*, WebRtcVideoDecoderFactory*> video_args(
|
std::tuple<std::unique_ptr<WebRtcVideoEncoderFactory>,
|
||||||
video_encoder_factory, video_decoder_factory);
|
std::unique_ptr<WebRtcVideoDecoderFactory>>
|
||||||
|
video_args(
|
||||||
|
(std::unique_ptr<WebRtcVideoEncoderFactory>(video_encoder_factory)),
|
||||||
|
(std::unique_ptr<WebRtcVideoDecoderFactory>(video_decoder_factory)));
|
||||||
#else
|
#else
|
||||||
typedef NullWebRtcVideoEngine VideoEngine;
|
typedef NullWebRtcVideoEngine VideoEngine;
|
||||||
std::tuple<> video_args;
|
std::tuple<> video_args;
|
||||||
|
|||||||
@ -87,22 +87,18 @@ namespace {
|
|||||||
std::vector<VideoCodec> AssignPayloadTypesAndAddAssociatedRtxCodecs(
|
std::vector<VideoCodec> AssignPayloadTypesAndAddAssociatedRtxCodecs(
|
||||||
const std::vector<VideoCodec>& input_codecs);
|
const std::vector<VideoCodec>& input_codecs);
|
||||||
|
|
||||||
// Wraps cricket::WebRtcVideoEncoderFactory* into common EncoderFactoryAdapter
|
// Wraps cricket::WebRtcVideoEncoderFactory into common EncoderFactoryAdapter
|
||||||
// interface.
|
// interface.
|
||||||
// TODO(magjed): Remove once WebRtcVideoEncoderFactory* is deprecated and
|
// TODO(magjed): Remove once WebRtcVideoEncoderFactory is deprecated and
|
||||||
// webrtc:7925 is fixed.
|
// webrtc:7925 is fixed.
|
||||||
class CricketEncoderFactoryAdapter : public EncoderFactoryAdapter {
|
class CricketEncoderFactoryAdapter : public EncoderFactoryAdapter {
|
||||||
public:
|
public:
|
||||||
explicit CricketEncoderFactoryAdapter(
|
explicit CricketEncoderFactoryAdapter(
|
||||||
WebRtcVideoEncoderFactory* external_encoder_factory)
|
std::unique_ptr<WebRtcVideoEncoderFactory> external_encoder_factory)
|
||||||
: internal_encoder_factory_(new InternalEncoderFactory()),
|
: internal_encoder_factory_(new InternalEncoderFactory()),
|
||||||
external_encoder_factory_(external_encoder_factory) {}
|
external_encoder_factory_(std::move(external_encoder_factory)) {}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit CricketEncoderFactoryAdapter(
|
|
||||||
const CricketEncoderFactoryAdapter& other)
|
|
||||||
: CricketEncoderFactoryAdapter(other.external_encoder_factory_) {}
|
|
||||||
|
|
||||||
AllocatedEncoder CreateVideoEncoder(
|
AllocatedEncoder CreateVideoEncoder(
|
||||||
const VideoCodec& codec,
|
const VideoCodec& codec,
|
||||||
bool is_conference_mode_screenshare) const override;
|
bool is_conference_mode_screenshare) const override;
|
||||||
@ -110,27 +106,23 @@ class CricketEncoderFactoryAdapter : public EncoderFactoryAdapter {
|
|||||||
std::vector<VideoCodec> GetSupportedCodecs() const override;
|
std::vector<VideoCodec> GetSupportedCodecs() const override;
|
||||||
|
|
||||||
const std::unique_ptr<WebRtcVideoEncoderFactory> internal_encoder_factory_;
|
const std::unique_ptr<WebRtcVideoEncoderFactory> internal_encoder_factory_;
|
||||||
WebRtcVideoEncoderFactory* const external_encoder_factory_;
|
const std::unique_ptr<WebRtcVideoEncoderFactory> external_encoder_factory_;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CricketDecoderFactoryAdapter : public DecoderFactoryAdapter {
|
class CricketDecoderFactoryAdapter : public DecoderFactoryAdapter {
|
||||||
public:
|
public:
|
||||||
explicit CricketDecoderFactoryAdapter(
|
explicit CricketDecoderFactoryAdapter(
|
||||||
WebRtcVideoDecoderFactory* external_decoder_factory)
|
std::unique_ptr<WebRtcVideoDecoderFactory> external_decoder_factory)
|
||||||
: internal_decoder_factory_(new InternalDecoderFactory()),
|
: internal_decoder_factory_(new InternalDecoderFactory()),
|
||||||
external_decoder_factory_(external_decoder_factory) {}
|
external_decoder_factory_(std::move(external_decoder_factory)) {}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit CricketDecoderFactoryAdapter(
|
|
||||||
const CricketDecoderFactoryAdapter& other)
|
|
||||||
: CricketDecoderFactoryAdapter(other.external_decoder_factory_) {}
|
|
||||||
|
|
||||||
std::unique_ptr<webrtc::VideoDecoder> CreateVideoDecoder(
|
std::unique_ptr<webrtc::VideoDecoder> CreateVideoDecoder(
|
||||||
const VideoCodec& codec,
|
const VideoCodec& codec,
|
||||||
const VideoDecoderParams& decoder_params) const override;
|
const VideoDecoderParams& decoder_params) const override;
|
||||||
|
|
||||||
const std::unique_ptr<WebRtcVideoDecoderFactory> internal_decoder_factory_;
|
const std::unique_ptr<WebRtcVideoDecoderFactory> internal_decoder_factory_;
|
||||||
WebRtcVideoDecoderFactory* const external_decoder_factory_;
|
const std::unique_ptr<WebRtcVideoDecoderFactory> external_decoder_factory_;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Wraps webrtc::VideoEncoderFactory into common EncoderFactoryAdapter
|
// Wraps webrtc::VideoEncoderFactory into common EncoderFactoryAdapter
|
||||||
@ -455,12 +447,12 @@ void DefaultUnsignalledSsrcHandler::SetDefaultSink(
|
|||||||
}
|
}
|
||||||
|
|
||||||
WebRtcVideoEngine::WebRtcVideoEngine(
|
WebRtcVideoEngine::WebRtcVideoEngine(
|
||||||
WebRtcVideoEncoderFactory* external_video_encoder_factory,
|
std::unique_ptr<WebRtcVideoEncoderFactory> external_video_encoder_factory,
|
||||||
WebRtcVideoDecoderFactory* external_video_decoder_factory)
|
std::unique_ptr<WebRtcVideoDecoderFactory> external_video_decoder_factory)
|
||||||
: decoder_factory_(
|
: decoder_factory_(new CricketDecoderFactoryAdapter(
|
||||||
new CricketDecoderFactoryAdapter(external_video_decoder_factory)),
|
std::move(external_video_decoder_factory))),
|
||||||
encoder_factory_(
|
encoder_factory_(new CricketEncoderFactoryAdapter(
|
||||||
new CricketEncoderFactoryAdapter(external_video_encoder_factory)) {
|
std::move(external_video_encoder_factory))) {
|
||||||
LOG(LS_INFO) << "WebRtcVideoEngine::WebRtcVideoEngine()";
|
LOG(LS_INFO) << "WebRtcVideoEngine::WebRtcVideoEngine()";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1707,10 +1699,10 @@ CricketEncoderFactoryAdapter::CreateVideoEncoder(
|
|||||||
if (CodecNamesEq(codec.name.c_str(), kVp8CodecName)) {
|
if (CodecNamesEq(codec.name.c_str(), kVp8CodecName)) {
|
||||||
// If it's a codec type we can simulcast, create a wrapped encoder.
|
// If it's a codec type we can simulcast, create a wrapped encoder.
|
||||||
external_encoder = std::unique_ptr<webrtc::VideoEncoder>(
|
external_encoder = std::unique_ptr<webrtc::VideoEncoder>(
|
||||||
new webrtc::SimulcastEncoderAdapter(external_encoder_factory_));
|
new webrtc::SimulcastEncoderAdapter(external_encoder_factory_.get()));
|
||||||
} else {
|
} else {
|
||||||
external_encoder =
|
external_encoder =
|
||||||
CreateScopedVideoEncoder(external_encoder_factory_, codec);
|
CreateScopedVideoEncoder(external_encoder_factory_.get(), codec);
|
||||||
}
|
}
|
||||||
if (external_encoder) {
|
if (external_encoder) {
|
||||||
std::unique_ptr<webrtc::VideoEncoder> internal_encoder(
|
std::unique_ptr<webrtc::VideoEncoder> internal_encoder(
|
||||||
@ -2207,7 +2199,7 @@ CricketDecoderFactoryAdapter::CreateVideoDecoder(
|
|||||||
const VideoDecoderParams& decoder_params) const {
|
const VideoDecoderParams& decoder_params) const {
|
||||||
if (external_decoder_factory_ != nullptr) {
|
if (external_decoder_factory_ != nullptr) {
|
||||||
std::unique_ptr<webrtc::VideoDecoder> external_decoder =
|
std::unique_ptr<webrtc::VideoDecoder> external_decoder =
|
||||||
CreateScopedVideoDecoder(external_decoder_factory_, codec,
|
CreateScopedVideoDecoder(external_decoder_factory_.get(), codec,
|
||||||
decoder_params);
|
decoder_params);
|
||||||
if (external_decoder) {
|
if (external_decoder) {
|
||||||
webrtc::VideoCodecType type =
|
webrtc::VideoCodecType type =
|
||||||
|
|||||||
@ -99,11 +99,11 @@ class DefaultUnsignalledSsrcHandler : public UnsignalledSsrcHandler {
|
|||||||
// WebRtcVideoEngine is used for the new native WebRTC Video API (webrtc:1667).
|
// WebRtcVideoEngine is used for the new native WebRTC Video API (webrtc:1667).
|
||||||
class WebRtcVideoEngine {
|
class WebRtcVideoEngine {
|
||||||
public:
|
public:
|
||||||
// Video engine does not take ownership of the video codec factories and the
|
// Internal SW video codecs will be added on top of the external codecs.
|
||||||
// caller needs to make sure they outlive the video engine. Internal SW video
|
WebRtcVideoEngine(
|
||||||
// codecs will be added on top of the external codecs.
|
std::unique_ptr<WebRtcVideoEncoderFactory> external_video_encoder_factory,
|
||||||
WebRtcVideoEngine(WebRtcVideoEncoderFactory* external_video_encoder_factory,
|
std::unique_ptr<WebRtcVideoDecoderFactory>
|
||||||
WebRtcVideoDecoderFactory* external_video_decoder_factory);
|
external_video_decoder_factory);
|
||||||
|
|
||||||
// These video codec factories represents all video codecs, i.e. both software
|
// These video codec factories represents all video codecs, i.e. both software
|
||||||
// and external hardware codecs.
|
// and external hardware codecs.
|
||||||
|
|||||||
@ -151,7 +151,12 @@ class WebRtcVideoEngineTest : public ::testing::Test {
|
|||||||
explicit WebRtcVideoEngineTest(const char* field_trials)
|
explicit WebRtcVideoEngineTest(const char* field_trials)
|
||||||
: override_field_trials_(field_trials),
|
: override_field_trials_(field_trials),
|
||||||
call_(webrtc::Call::Create(webrtc::Call::Config(&event_log_))),
|
call_(webrtc::Call::Create(webrtc::Call::Config(&event_log_))),
|
||||||
engine_(&encoder_factory_, &decoder_factory_) {
|
encoder_factory_(new cricket::FakeWebRtcVideoEncoderFactory),
|
||||||
|
decoder_factory_(new cricket::FakeWebRtcVideoDecoderFactory),
|
||||||
|
engine_(std::unique_ptr<cricket::WebRtcVideoEncoderFactory>(
|
||||||
|
encoder_factory_),
|
||||||
|
std::unique_ptr<cricket::WebRtcVideoDecoderFactory>(
|
||||||
|
decoder_factory_)) {
|
||||||
std::vector<VideoCodec> engine_codecs = engine_.codecs();
|
std::vector<VideoCodec> engine_codecs = engine_.codecs();
|
||||||
RTC_DCHECK(!engine_codecs.empty());
|
RTC_DCHECK(!engine_codecs.empty());
|
||||||
bool codec_set = false;
|
bool codec_set = false;
|
||||||
@ -191,8 +196,9 @@ class WebRtcVideoEngineTest : public ::testing::Test {
|
|||||||
// TODO(magjed): Update all tests to use new video codec factories once the
|
// TODO(magjed): Update all tests to use new video codec factories once the
|
||||||
// old factories are deprecated,
|
// old factories are deprecated,
|
||||||
// https://bugs.chromium.org/p/webrtc/issues/detail?id=7925.
|
// https://bugs.chromium.org/p/webrtc/issues/detail?id=7925.
|
||||||
cricket::FakeWebRtcVideoEncoderFactory encoder_factory_;
|
// These factories are owned by the video engine.
|
||||||
cricket::FakeWebRtcVideoDecoderFactory decoder_factory_;
|
cricket::FakeWebRtcVideoEncoderFactory* encoder_factory_;
|
||||||
|
cricket::FakeWebRtcVideoDecoderFactory* decoder_factory_;
|
||||||
WebRtcVideoEngine engine_;
|
WebRtcVideoEngine engine_;
|
||||||
VideoCodec default_codec_;
|
VideoCodec default_codec_;
|
||||||
std::map<int, int> default_apt_rtx_types_;
|
std::map<int, int> default_apt_rtx_types_;
|
||||||
@ -280,7 +286,7 @@ TEST_F(WebRtcVideoEngineTest, CVOSetHeaderExtensionBeforeCapturer) {
|
|||||||
// dtor is called.
|
// dtor is called.
|
||||||
cricket::FakeVideoCapturer capturer;
|
cricket::FakeVideoCapturer capturer;
|
||||||
|
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP8");
|
encoder_factory_->AddSupportedVideoCodecType("VP8");
|
||||||
|
|
||||||
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
||||||
EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
|
EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
|
||||||
@ -310,7 +316,7 @@ TEST_F(WebRtcVideoEngineTest, CVOSetHeaderExtensionBeforeAddSendStream) {
|
|||||||
// dtor is called.
|
// dtor is called.
|
||||||
cricket::FakeVideoCapturer capturer;
|
cricket::FakeVideoCapturer capturer;
|
||||||
|
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP8");
|
encoder_factory_->AddSupportedVideoCodecType("VP8");
|
||||||
|
|
||||||
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
||||||
// Add CVO extension.
|
// Add CVO extension.
|
||||||
@ -332,8 +338,8 @@ TEST_F(WebRtcVideoEngineTest, CVOSetHeaderExtensionBeforeAddSendStream) {
|
|||||||
TEST_F(WebRtcVideoEngineTest, CVOSetHeaderExtensionAfterCapturer) {
|
TEST_F(WebRtcVideoEngineTest, CVOSetHeaderExtensionAfterCapturer) {
|
||||||
cricket::FakeVideoCapturer capturer;
|
cricket::FakeVideoCapturer capturer;
|
||||||
|
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP8");
|
encoder_factory_->AddSupportedVideoCodecType("VP8");
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP9");
|
encoder_factory_->AddSupportedVideoCodecType("VP9");
|
||||||
|
|
||||||
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
||||||
EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
|
EXPECT_TRUE(channel->AddSendStream(StreamParams::CreateLegacy(kSsrc)));
|
||||||
@ -385,14 +391,14 @@ TEST_F(WebRtcVideoEngineTest, GetStatsWithoutSendCodecsSetDoesNotCrash) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(WebRtcVideoEngineTest, UseExternalFactoryForVp8WhenSupported) {
|
TEST_F(WebRtcVideoEngineTest, UseExternalFactoryForVp8WhenSupported) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP8");
|
encoder_factory_->AddSupportedVideoCodecType("VP8");
|
||||||
|
|
||||||
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
||||||
channel->OnReadyToSend(true);
|
channel->OnReadyToSend(true);
|
||||||
|
|
||||||
EXPECT_TRUE(
|
EXPECT_TRUE(
|
||||||
channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
||||||
EXPECT_EQ(0, encoder_factory_.GetNumCreatedEncoders());
|
EXPECT_EQ(0, encoder_factory_->GetNumCreatedEncoders());
|
||||||
EXPECT_TRUE(channel->SetSend(true));
|
EXPECT_TRUE(channel->SetSend(true));
|
||||||
cricket::FakeVideoCapturer capturer;
|
cricket::FakeVideoCapturer capturer;
|
||||||
EXPECT_TRUE(channel->SetVideoSend(kSsrc, true, nullptr, &capturer));
|
EXPECT_TRUE(channel->SetVideoSend(kSsrc, true, nullptr, &capturer));
|
||||||
@ -400,11 +406,11 @@ TEST_F(WebRtcVideoEngineTest, UseExternalFactoryForVp8WhenSupported) {
|
|||||||
capturer.Start(capturer.GetSupportedFormats()->front()));
|
capturer.Start(capturer.GetSupportedFormats()->front()));
|
||||||
EXPECT_TRUE(capturer.CaptureFrame());
|
EXPECT_TRUE(capturer.CaptureFrame());
|
||||||
// Sending one frame will have allocate the encoder.
|
// Sending one frame will have allocate the encoder.
|
||||||
ASSERT_TRUE(encoder_factory_.WaitForCreatedVideoEncoders(1));
|
ASSERT_TRUE(encoder_factory_->WaitForCreatedVideoEncoders(1));
|
||||||
EXPECT_TRUE_WAIT(encoder_factory_.encoders()[0]->GetNumEncodedFrames() > 0,
|
EXPECT_TRUE_WAIT(encoder_factory_->encoders()[0]->GetNumEncodedFrames() > 0,
|
||||||
kTimeout);
|
kTimeout);
|
||||||
|
|
||||||
int num_created_encoders = encoder_factory_.GetNumCreatedEncoders();
|
int num_created_encoders = encoder_factory_->GetNumCreatedEncoders();
|
||||||
EXPECT_EQ(num_created_encoders, 1);
|
EXPECT_EQ(num_created_encoders, 1);
|
||||||
|
|
||||||
// Setting codecs of the same type should not reallocate any encoders
|
// Setting codecs of the same type should not reallocate any encoders
|
||||||
@ -412,11 +418,11 @@ TEST_F(WebRtcVideoEngineTest, UseExternalFactoryForVp8WhenSupported) {
|
|||||||
cricket::VideoSendParameters parameters;
|
cricket::VideoSendParameters parameters;
|
||||||
parameters.codecs.push_back(GetEngineCodec("VP8"));
|
parameters.codecs.push_back(GetEngineCodec("VP8"));
|
||||||
EXPECT_TRUE(channel->SetSendParameters(parameters));
|
EXPECT_TRUE(channel->SetSendParameters(parameters));
|
||||||
EXPECT_EQ(num_created_encoders, encoder_factory_.GetNumCreatedEncoders());
|
EXPECT_EQ(num_created_encoders, encoder_factory_->GetNumCreatedEncoders());
|
||||||
|
|
||||||
// Remove stream previously added to free the external encoder instance.
|
// Remove stream previously added to free the external encoder instance.
|
||||||
EXPECT_TRUE(channel->RemoveSendStream(kSsrc));
|
EXPECT_TRUE(channel->RemoveSendStream(kSsrc));
|
||||||
EXPECT_EQ(0u, encoder_factory_.encoders().size());
|
EXPECT_EQ(0u, encoder_factory_->encoders().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test that when an external encoder factory supports a codec we don't
|
// Test that when an external encoder factory supports a codec we don't
|
||||||
@ -440,9 +446,9 @@ TEST_F(WebRtcVideoEngineTest, RtxCodecAddedForExternalCodec) {
|
|||||||
h264_high.params[kH264FmtpProfileLevelId] = *ProfileLevelIdToString(
|
h264_high.params[kH264FmtpProfileLevelId] = *ProfileLevelIdToString(
|
||||||
ProfileLevelId(webrtc::H264::kProfileHigh, kLevel1));
|
ProfileLevelId(webrtc::H264::kProfileHigh, kLevel1));
|
||||||
|
|
||||||
encoder_factory_.AddSupportedVideoCodec(h264_constrained_baseline);
|
encoder_factory_->AddSupportedVideoCodec(h264_constrained_baseline);
|
||||||
encoder_factory_.AddSupportedVideoCodec(h264_constrained_high);
|
encoder_factory_->AddSupportedVideoCodec(h264_constrained_high);
|
||||||
encoder_factory_.AddSupportedVideoCodec(h264_high);
|
encoder_factory_->AddSupportedVideoCodec(h264_high);
|
||||||
|
|
||||||
// First figure out what payload types the test codecs got assigned.
|
// First figure out what payload types the test codecs got assigned.
|
||||||
const std::vector<cricket::VideoCodec> codecs = engine_.codecs();
|
const std::vector<cricket::VideoCodec> codecs = engine_.codecs();
|
||||||
@ -462,7 +468,7 @@ void WebRtcVideoEngineTest::TestExtendedEncoderOveruse(
|
|||||||
FakeCall* fake_call = new FakeCall(webrtc::Call::Config(&event_log_));
|
FakeCall* fake_call = new FakeCall(webrtc::Call::Config(&event_log_));
|
||||||
call_.reset(fake_call);
|
call_.reset(fake_call);
|
||||||
if (use_external_encoder) {
|
if (use_external_encoder) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP8");
|
encoder_factory_->AddSupportedVideoCodecType("VP8");
|
||||||
channel.reset(SetUpForExternalEncoderFactory());
|
channel.reset(SetUpForExternalEncoderFactory());
|
||||||
} else {
|
} else {
|
||||||
channel.reset(
|
channel.reset(
|
||||||
@ -492,7 +498,7 @@ TEST_F(WebRtcVideoEngineTest, DisablesFullEncoderTimeForNonExternalEncoders) {
|
|||||||
|
|
||||||
#if !defined(RTC_DISABLE_VP9)
|
#if !defined(RTC_DISABLE_VP9)
|
||||||
TEST_F(WebRtcVideoEngineTest, CanConstructDecoderForVp9EncoderFactory) {
|
TEST_F(WebRtcVideoEngineTest, CanConstructDecoderForVp9EncoderFactory) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP9");
|
encoder_factory_->AddSupportedVideoCodecType("VP9");
|
||||||
|
|
||||||
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
||||||
|
|
||||||
@ -502,7 +508,7 @@ TEST_F(WebRtcVideoEngineTest, CanConstructDecoderForVp9EncoderFactory) {
|
|||||||
#endif // !defined(RTC_DISABLE_VP9)
|
#endif // !defined(RTC_DISABLE_VP9)
|
||||||
|
|
||||||
TEST_F(WebRtcVideoEngineTest, PropagatesInputFrameTimestamp) {
|
TEST_F(WebRtcVideoEngineTest, PropagatesInputFrameTimestamp) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP8");
|
encoder_factory_->AddSupportedVideoCodecType("VP8");
|
||||||
FakeCall* fake_call = new FakeCall(webrtc::Call::Config(&event_log_));
|
FakeCall* fake_call = new FakeCall(webrtc::Call::Config(&event_log_));
|
||||||
call_.reset(fake_call);
|
call_.reset(fake_call);
|
||||||
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
||||||
@ -571,7 +577,7 @@ VideoMediaChannel* WebRtcVideoEngineTest::SetUpForExternalEncoderFactory() {
|
|||||||
engine_.CreateChannel(call_.get(), GetMediaConfig(), VideoOptions());
|
engine_.CreateChannel(call_.get(), GetMediaConfig(), VideoOptions());
|
||||||
cricket::VideoSendParameters parameters;
|
cricket::VideoSendParameters parameters;
|
||||||
// We need to look up the codec in the engine to get the correct payload type.
|
// We need to look up the codec in the engine to get the correct payload type.
|
||||||
for (const VideoCodec& codec : encoder_factory_.supported_codecs())
|
for (const VideoCodec& codec : encoder_factory_->supported_codecs())
|
||||||
parameters.codecs.push_back(GetEngineCodec(codec.name));
|
parameters.codecs.push_back(GetEngineCodec(codec.name));
|
||||||
|
|
||||||
EXPECT_TRUE(channel->SetSendParameters(parameters));
|
EXPECT_TRUE(channel->SetSendParameters(parameters));
|
||||||
@ -591,7 +597,7 @@ VideoMediaChannel* WebRtcVideoEngineTest::SetUpForExternalDecoderFactory(
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(WebRtcVideoEngineTest, UsesSimulcastAdapterForVp8Factories) {
|
TEST_F(WebRtcVideoEngineTest, UsesSimulcastAdapterForVp8Factories) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP8");
|
encoder_factory_->AddSupportedVideoCodecType("VP8");
|
||||||
|
|
||||||
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
||||||
|
|
||||||
@ -607,15 +613,15 @@ TEST_F(WebRtcVideoEngineTest, UsesSimulcastAdapterForVp8Factories) {
|
|||||||
capturer.Start(capturer.GetSupportedFormats()->front()));
|
capturer.Start(capturer.GetSupportedFormats()->front()));
|
||||||
EXPECT_TRUE(capturer.CaptureFrame());
|
EXPECT_TRUE(capturer.CaptureFrame());
|
||||||
|
|
||||||
ASSERT_TRUE(encoder_factory_.WaitForCreatedVideoEncoders(2));
|
ASSERT_TRUE(encoder_factory_->WaitForCreatedVideoEncoders(2));
|
||||||
|
|
||||||
// Verify that encoders are configured for simulcast through adapter
|
// Verify that encoders are configured for simulcast through adapter
|
||||||
// (increasing resolution and only configured to send one stream each).
|
// (increasing resolution and only configured to send one stream each).
|
||||||
int prev_width = -1;
|
int prev_width = -1;
|
||||||
for (size_t i = 0; i < encoder_factory_.encoders().size(); ++i) {
|
for (size_t i = 0; i < encoder_factory_->encoders().size(); ++i) {
|
||||||
ASSERT_TRUE(encoder_factory_.encoders()[i]->WaitForInitEncode());
|
ASSERT_TRUE(encoder_factory_->encoders()[i]->WaitForInitEncode());
|
||||||
webrtc::VideoCodec codec_settings =
|
webrtc::VideoCodec codec_settings =
|
||||||
encoder_factory_.encoders()[i]->GetCodecSettings();
|
encoder_factory_->encoders()[i]->GetCodecSettings();
|
||||||
EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams);
|
EXPECT_EQ(0, codec_settings.numberOfSimulcastStreams);
|
||||||
EXPECT_GT(codec_settings.width, prev_width);
|
EXPECT_GT(codec_settings.width, prev_width);
|
||||||
prev_width = codec_settings.width;
|
prev_width = codec_settings.width;
|
||||||
@ -624,27 +630,27 @@ TEST_F(WebRtcVideoEngineTest, UsesSimulcastAdapterForVp8Factories) {
|
|||||||
EXPECT_TRUE(channel->SetVideoSend(ssrcs.front(), true, nullptr, nullptr));
|
EXPECT_TRUE(channel->SetVideoSend(ssrcs.front(), true, nullptr, nullptr));
|
||||||
|
|
||||||
channel.reset();
|
channel.reset();
|
||||||
ASSERT_EQ(0u, encoder_factory_.encoders().size());
|
ASSERT_EQ(0u, encoder_factory_->encoders().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(WebRtcVideoEngineTest, ChannelWithExternalH264CanChangeToInternalVp8) {
|
TEST_F(WebRtcVideoEngineTest, ChannelWithExternalH264CanChangeToInternalVp8) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("H264");
|
encoder_factory_->AddSupportedVideoCodecType("H264");
|
||||||
|
|
||||||
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
||||||
|
|
||||||
EXPECT_TRUE(
|
EXPECT_TRUE(
|
||||||
channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
||||||
ASSERT_EQ(1u, encoder_factory_.encoders().size());
|
ASSERT_EQ(1u, encoder_factory_->encoders().size());
|
||||||
|
|
||||||
cricket::VideoSendParameters parameters;
|
cricket::VideoSendParameters parameters;
|
||||||
parameters.codecs.push_back(GetEngineCodec("VP8"));
|
parameters.codecs.push_back(GetEngineCodec("VP8"));
|
||||||
EXPECT_TRUE(channel->SetSendParameters(parameters));
|
EXPECT_TRUE(channel->SetSendParameters(parameters));
|
||||||
ASSERT_EQ(0u, encoder_factory_.encoders().size());
|
ASSERT_EQ(0u, encoder_factory_->encoders().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(WebRtcVideoEngineTest,
|
TEST_F(WebRtcVideoEngineTest,
|
||||||
DontUseExternalEncoderFactoryForUnsupportedCodecs) {
|
DontUseExternalEncoderFactoryForUnsupportedCodecs) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("H264");
|
encoder_factory_->AddSupportedVideoCodecType("H264");
|
||||||
|
|
||||||
std::unique_ptr<VideoMediaChannel> channel(
|
std::unique_ptr<VideoMediaChannel> channel(
|
||||||
engine_.CreateChannel(call_.get(), GetMediaConfig(), VideoOptions()));
|
engine_.CreateChannel(call_.get(), GetMediaConfig(), VideoOptions()));
|
||||||
@ -655,13 +661,13 @@ TEST_F(WebRtcVideoEngineTest,
|
|||||||
EXPECT_TRUE(
|
EXPECT_TRUE(
|
||||||
channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
||||||
// Make sure DestroyVideoEncoder was called on the factory.
|
// Make sure DestroyVideoEncoder was called on the factory.
|
||||||
ASSERT_EQ(0u, encoder_factory_.encoders().size());
|
ASSERT_EQ(0u, encoder_factory_->encoders().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(WebRtcVideoEngineTest,
|
TEST_F(WebRtcVideoEngineTest,
|
||||||
UsesSimulcastAdapterForVp8WithCombinedVP8AndH264Factory) {
|
UsesSimulcastAdapterForVp8WithCombinedVP8AndH264Factory) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP8");
|
encoder_factory_->AddSupportedVideoCodecType("VP8");
|
||||||
encoder_factory_.AddSupportedVideoCodecType("H264");
|
encoder_factory_->AddSupportedVideoCodecType("H264");
|
||||||
|
|
||||||
std::unique_ptr<VideoMediaChannel> channel(
|
std::unique_ptr<VideoMediaChannel> channel(
|
||||||
engine_.CreateChannel(call_.get(), GetMediaConfig(), VideoOptions()));
|
engine_.CreateChannel(call_.get(), GetMediaConfig(), VideoOptions()));
|
||||||
@ -684,20 +690,20 @@ TEST_F(WebRtcVideoEngineTest,
|
|||||||
capturer.Start(capturer.GetSupportedFormats()->front()));
|
capturer.Start(capturer.GetSupportedFormats()->front()));
|
||||||
EXPECT_TRUE(capturer.CaptureFrame());
|
EXPECT_TRUE(capturer.CaptureFrame());
|
||||||
|
|
||||||
ASSERT_TRUE(encoder_factory_.WaitForCreatedVideoEncoders(2));
|
ASSERT_TRUE(encoder_factory_->WaitForCreatedVideoEncoders(2));
|
||||||
ASSERT_TRUE(encoder_factory_.encoders()[0]->WaitForInitEncode());
|
ASSERT_TRUE(encoder_factory_->encoders()[0]->WaitForInitEncode());
|
||||||
EXPECT_EQ(webrtc::kVideoCodecVP8,
|
EXPECT_EQ(webrtc::kVideoCodecVP8,
|
||||||
encoder_factory_.encoders()[0]->GetCodecSettings().codecType);
|
encoder_factory_->encoders()[0]->GetCodecSettings().codecType);
|
||||||
|
|
||||||
channel.reset();
|
channel.reset();
|
||||||
// Make sure DestroyVideoEncoder was called on the factory.
|
// Make sure DestroyVideoEncoder was called on the factory.
|
||||||
EXPECT_EQ(0u, encoder_factory_.encoders().size());
|
EXPECT_EQ(0u, encoder_factory_->encoders().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(WebRtcVideoEngineTest,
|
TEST_F(WebRtcVideoEngineTest,
|
||||||
DestroysNonSimulcastEncoderFromCombinedVP8AndH264Factory) {
|
DestroysNonSimulcastEncoderFromCombinedVP8AndH264Factory) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP8");
|
encoder_factory_->AddSupportedVideoCodecType("VP8");
|
||||||
encoder_factory_.AddSupportedVideoCodecType("H264");
|
encoder_factory_->AddSupportedVideoCodecType("H264");
|
||||||
|
|
||||||
std::unique_ptr<VideoMediaChannel> channel(
|
std::unique_ptr<VideoMediaChannel> channel(
|
||||||
engine_.CreateChannel(call_.get(), GetMediaConfig(), VideoOptions()));
|
engine_.CreateChannel(call_.get(), GetMediaConfig(), VideoOptions()));
|
||||||
@ -707,7 +713,7 @@ TEST_F(WebRtcVideoEngineTest,
|
|||||||
|
|
||||||
EXPECT_TRUE(
|
EXPECT_TRUE(
|
||||||
channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
channel->AddSendStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
||||||
ASSERT_EQ(1u, encoder_factory_.encoders().size());
|
ASSERT_EQ(1u, encoder_factory_->encoders().size());
|
||||||
|
|
||||||
// Send a frame of 720p. This should trigger a "real" encoder initialization.
|
// Send a frame of 720p. This should trigger a "real" encoder initialization.
|
||||||
cricket::VideoFormat format(
|
cricket::VideoFormat format(
|
||||||
@ -716,17 +722,17 @@ TEST_F(WebRtcVideoEngineTest,
|
|||||||
EXPECT_TRUE(channel->SetVideoSend(kSsrc, true, nullptr, &capturer));
|
EXPECT_TRUE(channel->SetVideoSend(kSsrc, true, nullptr, &capturer));
|
||||||
EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format));
|
EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format));
|
||||||
EXPECT_TRUE(capturer.CaptureFrame());
|
EXPECT_TRUE(capturer.CaptureFrame());
|
||||||
ASSERT_TRUE(encoder_factory_.encoders()[0]->WaitForInitEncode());
|
ASSERT_TRUE(encoder_factory_->encoders()[0]->WaitForInitEncode());
|
||||||
EXPECT_EQ(webrtc::kVideoCodecH264,
|
EXPECT_EQ(webrtc::kVideoCodecH264,
|
||||||
encoder_factory_.encoders()[0]->GetCodecSettings().codecType);
|
encoder_factory_->encoders()[0]->GetCodecSettings().codecType);
|
||||||
|
|
||||||
channel.reset();
|
channel.reset();
|
||||||
// Make sure DestroyVideoEncoder was called on the factory.
|
// Make sure DestroyVideoEncoder was called on the factory.
|
||||||
ASSERT_EQ(0u, encoder_factory_.encoders().size());
|
ASSERT_EQ(0u, encoder_factory_->encoders().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(WebRtcVideoEngineTest, SimulcastDisabledForH264) {
|
TEST_F(WebRtcVideoEngineTest, SimulcastDisabledForH264) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("H264");
|
encoder_factory_->AddSupportedVideoCodecType("H264");
|
||||||
|
|
||||||
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
||||||
|
|
||||||
@ -742,9 +748,9 @@ TEST_F(WebRtcVideoEngineTest, SimulcastDisabledForH264) {
|
|||||||
EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format));
|
EXPECT_EQ(cricket::CS_RUNNING, capturer.Start(format));
|
||||||
EXPECT_TRUE(capturer.CaptureFrame());
|
EXPECT_TRUE(capturer.CaptureFrame());
|
||||||
|
|
||||||
ASSERT_EQ(1u, encoder_factory_.encoders().size());
|
ASSERT_EQ(1u, encoder_factory_->encoders().size());
|
||||||
FakeWebRtcVideoEncoder* encoder = encoder_factory_.encoders()[0];
|
FakeWebRtcVideoEncoder* encoder = encoder_factory_->encoders()[0];
|
||||||
ASSERT_TRUE(encoder_factory_.encoders()[0]->WaitForInitEncode());
|
ASSERT_TRUE(encoder_factory_->encoders()[0]->WaitForInitEncode());
|
||||||
EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType);
|
EXPECT_EQ(webrtc::kVideoCodecH264, encoder->GetCodecSettings().codecType);
|
||||||
EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams);
|
EXPECT_EQ(1u, encoder->GetCodecSettings().numberOfSimulcastStreams);
|
||||||
EXPECT_TRUE(channel->SetVideoSend(ssrcs[0], true, nullptr, nullptr));
|
EXPECT_TRUE(channel->SetVideoSend(ssrcs[0], true, nullptr, nullptr));
|
||||||
@ -777,7 +783,7 @@ TEST_F(WebRtcVideoEngineTest,
|
|||||||
|
|
||||||
// Test that external codecs are added to the end of the supported codec list.
|
// Test that external codecs are added to the end of the supported codec list.
|
||||||
TEST_F(WebRtcVideoEngineTest, ReportSupportedExternalCodecs) {
|
TEST_F(WebRtcVideoEngineTest, ReportSupportedExternalCodecs) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("FakeExternalCodec");
|
encoder_factory_->AddSupportedVideoCodecType("FakeExternalCodec");
|
||||||
|
|
||||||
std::vector<cricket::VideoCodec> codecs(engine_.codecs());
|
std::vector<cricket::VideoCodec> codecs(engine_.codecs());
|
||||||
ASSERT_GE(codecs.size(), 2u);
|
ASSERT_GE(codecs.size(), 2u);
|
||||||
@ -793,21 +799,21 @@ TEST_F(WebRtcVideoEngineTest, ReportSupportedExternalCodecs) {
|
|||||||
// does show up in the codec list after it was added.
|
// does show up in the codec list after it was added.
|
||||||
TEST_F(WebRtcVideoEngineTest, ReportSupportedExternalCodecsWithAddedCodec) {
|
TEST_F(WebRtcVideoEngineTest, ReportSupportedExternalCodecsWithAddedCodec) {
|
||||||
// Set up external encoder factory with first codec, and initialize engine.
|
// Set up external encoder factory with first codec, and initialize engine.
|
||||||
encoder_factory_.AddSupportedVideoCodecType("FakeExternalCodec1");
|
encoder_factory_->AddSupportedVideoCodecType("FakeExternalCodec1");
|
||||||
|
|
||||||
// The first external codec will appear last in the vector.
|
// The first external codec will appear last in the vector.
|
||||||
std::vector<cricket::VideoCodec> codecs_before(engine_.codecs());
|
std::vector<cricket::VideoCodec> codecs_before(engine_.codecs());
|
||||||
EXPECT_EQ("FakeExternalCodec1", codecs_before.back().name);
|
EXPECT_EQ("FakeExternalCodec1", codecs_before.back().name);
|
||||||
|
|
||||||
// Add second codec.
|
// Add second codec.
|
||||||
encoder_factory_.AddSupportedVideoCodecType("FakeExternalCodec2");
|
encoder_factory_->AddSupportedVideoCodecType("FakeExternalCodec2");
|
||||||
std::vector<cricket::VideoCodec> codecs_after(engine_.codecs());
|
std::vector<cricket::VideoCodec> codecs_after(engine_.codecs());
|
||||||
EXPECT_EQ(codecs_before.size() + 1, codecs_after.size());
|
EXPECT_EQ(codecs_before.size() + 1, codecs_after.size());
|
||||||
EXPECT_EQ("FakeExternalCodec2", codecs_after.back().name);
|
EXPECT_EQ("FakeExternalCodec2", codecs_after.back().name);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(WebRtcVideoEngineTest, RegisterExternalDecodersIfSupported) {
|
TEST_F(WebRtcVideoEngineTest, RegisterExternalDecodersIfSupported) {
|
||||||
decoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8);
|
decoder_factory_->AddSupportedVideoCodecType(webrtc::kVideoCodecVP8);
|
||||||
cricket::VideoRecvParameters parameters;
|
cricket::VideoRecvParameters parameters;
|
||||||
parameters.codecs.push_back(GetEngineCodec("VP8"));
|
parameters.codecs.push_back(GetEngineCodec("VP8"));
|
||||||
|
|
||||||
@ -816,15 +822,15 @@ TEST_F(WebRtcVideoEngineTest, RegisterExternalDecodersIfSupported) {
|
|||||||
|
|
||||||
EXPECT_TRUE(
|
EXPECT_TRUE(
|
||||||
channel->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
channel->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
||||||
ASSERT_EQ(1u, decoder_factory_.decoders().size());
|
ASSERT_EQ(1u, decoder_factory_->decoders().size());
|
||||||
|
|
||||||
// Setting codecs of the same type should not reallocate the decoder.
|
// Setting codecs of the same type should not reallocate the decoder.
|
||||||
EXPECT_TRUE(channel->SetRecvParameters(parameters));
|
EXPECT_TRUE(channel->SetRecvParameters(parameters));
|
||||||
EXPECT_EQ(1, decoder_factory_.GetNumCreatedDecoders());
|
EXPECT_EQ(1, decoder_factory_->GetNumCreatedDecoders());
|
||||||
|
|
||||||
// Remove stream previously added to free the external decoder instance.
|
// Remove stream previously added to free the external decoder instance.
|
||||||
EXPECT_TRUE(channel->RemoveRecvStream(kSsrc));
|
EXPECT_TRUE(channel->RemoveRecvStream(kSsrc));
|
||||||
EXPECT_EQ(0u, decoder_factory_.decoders().size());
|
EXPECT_EQ(0u, decoder_factory_->decoders().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verifies that we can set up decoders that are not internally supported.
|
// Verifies that we can set up decoders that are not internally supported.
|
||||||
@ -833,8 +839,8 @@ TEST_F(WebRtcVideoEngineTest, RegisterExternalH264DecoderIfSupported) {
|
|||||||
// can't even query the WebRtcVideoDecoderFactory for supported codecs.
|
// can't even query the WebRtcVideoDecoderFactory for supported codecs.
|
||||||
// For now we add a FakeWebRtcVideoEncoderFactory to add H264 to supported
|
// For now we add a FakeWebRtcVideoEncoderFactory to add H264 to supported
|
||||||
// codecs.
|
// codecs.
|
||||||
encoder_factory_.AddSupportedVideoCodecType("H264");
|
encoder_factory_->AddSupportedVideoCodecType("H264");
|
||||||
decoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecH264);
|
decoder_factory_->AddSupportedVideoCodecType(webrtc::kVideoCodecH264);
|
||||||
std::vector<cricket::VideoCodec> codecs;
|
std::vector<cricket::VideoCodec> codecs;
|
||||||
codecs.push_back(GetEngineCodec("H264"));
|
codecs.push_back(GetEngineCodec("H264"));
|
||||||
|
|
||||||
@ -843,7 +849,7 @@ TEST_F(WebRtcVideoEngineTest, RegisterExternalH264DecoderIfSupported) {
|
|||||||
|
|
||||||
EXPECT_TRUE(
|
EXPECT_TRUE(
|
||||||
channel->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
channel->AddRecvStream(cricket::StreamParams::CreateLegacy(kSsrc)));
|
||||||
ASSERT_EQ(1u, decoder_factory_.decoders().size());
|
ASSERT_EQ(1u, decoder_factory_->decoders().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockVideoEncoderFactory : public webrtc::VideoEncoderFactory {
|
class MockVideoEncoderFactory : public webrtc::VideoEncoderFactory {
|
||||||
@ -1004,7 +1010,7 @@ class WebRtcVideoChannelBaseTest
|
|||||||
|
|
||||||
// Verifies that id given in stream params is passed to the decoder factory.
|
// Verifies that id given in stream params is passed to the decoder factory.
|
||||||
TEST_F(WebRtcVideoEngineTest, StreamParamsIdPassedToDecoderFactory) {
|
TEST_F(WebRtcVideoEngineTest, StreamParamsIdPassedToDecoderFactory) {
|
||||||
decoder_factory_.AddSupportedVideoCodecType(webrtc::kVideoCodecVP8);
|
decoder_factory_->AddSupportedVideoCodecType(webrtc::kVideoCodecVP8);
|
||||||
cricket::VideoRecvParameters parameters;
|
cricket::VideoRecvParameters parameters;
|
||||||
parameters.codecs.push_back(GetEngineCodec("VP8"));
|
parameters.codecs.push_back(GetEngineCodec("VP8"));
|
||||||
|
|
||||||
@ -1014,15 +1020,15 @@ TEST_F(WebRtcVideoEngineTest, StreamParamsIdPassedToDecoderFactory) {
|
|||||||
StreamParams sp = cricket::StreamParams::CreateLegacy(kSsrc);
|
StreamParams sp = cricket::StreamParams::CreateLegacy(kSsrc);
|
||||||
sp.id = "FakeStreamParamsId";
|
sp.id = "FakeStreamParamsId";
|
||||||
EXPECT_TRUE(channel->AddRecvStream(sp));
|
EXPECT_TRUE(channel->AddRecvStream(sp));
|
||||||
EXPECT_EQ(1u, decoder_factory_.decoders().size());
|
EXPECT_EQ(1u, decoder_factory_->decoders().size());
|
||||||
|
|
||||||
std::vector<cricket::VideoDecoderParams> params = decoder_factory_.params();
|
std::vector<cricket::VideoDecoderParams> params = decoder_factory_->params();
|
||||||
ASSERT_EQ(1u, params.size());
|
ASSERT_EQ(1u, params.size());
|
||||||
EXPECT_EQ(sp.id, params[0].receive_stream_id);
|
EXPECT_EQ(sp.id, params[0].receive_stream_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(WebRtcVideoEngineTest, DISABLED_RecreatesEncoderOnContentTypeChange) {
|
TEST_F(WebRtcVideoEngineTest, DISABLED_RecreatesEncoderOnContentTypeChange) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP8");
|
encoder_factory_->AddSupportedVideoCodecType("VP8");
|
||||||
std::unique_ptr<FakeCall> fake_call(
|
std::unique_ptr<FakeCall> fake_call(
|
||||||
new FakeCall(webrtc::Call::Config(&event_log_)));
|
new FakeCall(webrtc::Call::Config(&event_log_)));
|
||||||
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
std::unique_ptr<VideoMediaChannel> channel(SetUpForExternalEncoderFactory());
|
||||||
@ -1042,14 +1048,14 @@ TEST_F(WebRtcVideoEngineTest, DISABLED_RecreatesEncoderOnContentTypeChange) {
|
|||||||
EXPECT_EQ(cricket::CS_RUNNING,
|
EXPECT_EQ(cricket::CS_RUNNING,
|
||||||
capturer.Start(capturer.GetSupportedFormats()->front()));
|
capturer.Start(capturer.GetSupportedFormats()->front()));
|
||||||
EXPECT_TRUE(capturer.CaptureFrame());
|
EXPECT_TRUE(capturer.CaptureFrame());
|
||||||
ASSERT_TRUE(encoder_factory_.WaitForCreatedVideoEncoders(1));
|
ASSERT_TRUE(encoder_factory_->WaitForCreatedVideoEncoders(1));
|
||||||
EXPECT_EQ(webrtc::kRealtimeVideo,
|
EXPECT_EQ(webrtc::kRealtimeVideo,
|
||||||
encoder_factory_.encoders().back()->GetCodecSettings().mode);
|
encoder_factory_->encoders().back()->GetCodecSettings().mode);
|
||||||
|
|
||||||
EXPECT_TRUE(channel->SetVideoSend(kSsrc, true, &options, &capturer));
|
EXPECT_TRUE(channel->SetVideoSend(kSsrc, true, &options, &capturer));
|
||||||
EXPECT_TRUE(capturer.CaptureFrame());
|
EXPECT_TRUE(capturer.CaptureFrame());
|
||||||
// No change in content type, keep current encoder.
|
// No change in content type, keep current encoder.
|
||||||
EXPECT_EQ(1, encoder_factory_.GetNumCreatedEncoders());
|
EXPECT_EQ(1, encoder_factory_->GetNumCreatedEncoders());
|
||||||
|
|
||||||
options.is_screencast.emplace(true);
|
options.is_screencast.emplace(true);
|
||||||
EXPECT_TRUE(channel->SetVideoSend(kSsrc, true, &options, &capturer));
|
EXPECT_TRUE(channel->SetVideoSend(kSsrc, true, &options, &capturer));
|
||||||
@ -1057,14 +1063,14 @@ TEST_F(WebRtcVideoEngineTest, DISABLED_RecreatesEncoderOnContentTypeChange) {
|
|||||||
// Change to screen content, recreate encoder. For the simulcast encoder
|
// Change to screen content, recreate encoder. For the simulcast encoder
|
||||||
// adapter case, this will result in two calls since InitEncode triggers a
|
// adapter case, this will result in two calls since InitEncode triggers a
|
||||||
// a new instance.
|
// a new instance.
|
||||||
ASSERT_TRUE(encoder_factory_.WaitForCreatedVideoEncoders(2));
|
ASSERT_TRUE(encoder_factory_->WaitForCreatedVideoEncoders(2));
|
||||||
EXPECT_EQ(webrtc::kScreensharing,
|
EXPECT_EQ(webrtc::kScreensharing,
|
||||||
encoder_factory_.encoders().back()->GetCodecSettings().mode);
|
encoder_factory_->encoders().back()->GetCodecSettings().mode);
|
||||||
|
|
||||||
EXPECT_TRUE(channel->SetVideoSend(kSsrc, true, &options, &capturer));
|
EXPECT_TRUE(channel->SetVideoSend(kSsrc, true, &options, &capturer));
|
||||||
EXPECT_TRUE(capturer.CaptureFrame());
|
EXPECT_TRUE(capturer.CaptureFrame());
|
||||||
// Still screen content, no need to update encoder.
|
// Still screen content, no need to update encoder.
|
||||||
EXPECT_EQ(2, encoder_factory_.GetNumCreatedEncoders());
|
EXPECT_EQ(2, encoder_factory_->GetNumCreatedEncoders());
|
||||||
|
|
||||||
options.is_screencast.emplace(false);
|
options.is_screencast.emplace(false);
|
||||||
options.video_noise_reduction.emplace(false);
|
options.video_noise_reduction.emplace(false);
|
||||||
@ -1072,13 +1078,13 @@ TEST_F(WebRtcVideoEngineTest, DISABLED_RecreatesEncoderOnContentTypeChange) {
|
|||||||
// Change back to regular video content, update encoder. Also change
|
// Change back to regular video content, update encoder. Also change
|
||||||
// a non |is_screencast| option just to verify it doesn't affect recreation.
|
// a non |is_screencast| option just to verify it doesn't affect recreation.
|
||||||
EXPECT_TRUE(capturer.CaptureFrame());
|
EXPECT_TRUE(capturer.CaptureFrame());
|
||||||
ASSERT_TRUE(encoder_factory_.WaitForCreatedVideoEncoders(3));
|
ASSERT_TRUE(encoder_factory_->WaitForCreatedVideoEncoders(3));
|
||||||
EXPECT_EQ(webrtc::kRealtimeVideo,
|
EXPECT_EQ(webrtc::kRealtimeVideo,
|
||||||
encoder_factory_.encoders().back()->GetCodecSettings().mode);
|
encoder_factory_->encoders().back()->GetCodecSettings().mode);
|
||||||
|
|
||||||
// Remove stream previously added to free the external encoder instance.
|
// Remove stream previously added to free the external encoder instance.
|
||||||
EXPECT_TRUE(channel->RemoveSendStream(kSsrc));
|
EXPECT_TRUE(channel->RemoveSendStream(kSsrc));
|
||||||
EXPECT_EQ(0u, encoder_factory_.encoders().size());
|
EXPECT_EQ(0u, encoder_factory_->encoders().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
#define WEBRTC_BASE_TEST(test) \
|
#define WEBRTC_BASE_TEST(test) \
|
||||||
@ -2059,7 +2065,7 @@ class Vp9SettingsTest : public WebRtcVideoChannelTest {
|
|||||||
Vp9SettingsTest() : Vp9SettingsTest("") {}
|
Vp9SettingsTest() : Vp9SettingsTest("") {}
|
||||||
explicit Vp9SettingsTest(const char* field_trials)
|
explicit Vp9SettingsTest(const char* field_trials)
|
||||||
: WebRtcVideoChannelTest(field_trials) {
|
: WebRtcVideoChannelTest(field_trials) {
|
||||||
encoder_factory_.AddSupportedVideoCodecType("VP9");
|
encoder_factory_->AddSupportedVideoCodecType("VP9");
|
||||||
}
|
}
|
||||||
virtual ~Vp9SettingsTest() {}
|
virtual ~Vp9SettingsTest() {}
|
||||||
|
|
||||||
@ -4583,7 +4589,12 @@ class WebRtcVideoChannelSimulcastTest : public testing::Test {
|
|||||||
public:
|
public:
|
||||||
WebRtcVideoChannelSimulcastTest()
|
WebRtcVideoChannelSimulcastTest()
|
||||||
: fake_call_(webrtc::Call::Config(&event_log_)),
|
: fake_call_(webrtc::Call::Config(&event_log_)),
|
||||||
engine_(&encoder_factory_, &decoder_factory_),
|
encoder_factory_(new cricket::FakeWebRtcVideoEncoderFactory),
|
||||||
|
decoder_factory_(new cricket::FakeWebRtcVideoDecoderFactory),
|
||||||
|
engine_(std::unique_ptr<cricket::WebRtcVideoEncoderFactory>(
|
||||||
|
encoder_factory_),
|
||||||
|
std::unique_ptr<cricket::WebRtcVideoDecoderFactory>(
|
||||||
|
decoder_factory_)),
|
||||||
last_ssrc_(0) {}
|
last_ssrc_(0) {}
|
||||||
|
|
||||||
void SetUp() override {
|
void SetUp() override {
|
||||||
@ -4742,8 +4753,8 @@ class WebRtcVideoChannelSimulcastTest : public testing::Test {
|
|||||||
|
|
||||||
webrtc::RtcEventLogNullImpl event_log_;
|
webrtc::RtcEventLogNullImpl event_log_;
|
||||||
FakeCall fake_call_;
|
FakeCall fake_call_;
|
||||||
cricket::FakeWebRtcVideoEncoderFactory encoder_factory_;
|
cricket::FakeWebRtcVideoEncoderFactory* encoder_factory_;
|
||||||
cricket::FakeWebRtcVideoDecoderFactory decoder_factory_;
|
cricket::FakeWebRtcVideoDecoderFactory* decoder_factory_;
|
||||||
WebRtcVideoEngine engine_;
|
WebRtcVideoEngine engine_;
|
||||||
std::unique_ptr<VideoMediaChannel> channel_;
|
std::unique_ptr<VideoMediaChannel> channel_;
|
||||||
uint32_t last_ssrc_;
|
uint32_t last_ssrc_;
|
||||||
|
|||||||
@ -71,9 +71,8 @@ rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
|
|||||||
CreateRtcEventLogFactory();
|
CreateRtcEventLogFactory();
|
||||||
|
|
||||||
return CreateModularPeerConnectionFactory(
|
return CreateModularPeerConnectionFactory(
|
||||||
network_thread, worker_thread, signaling_thread, video_encoder_factory,
|
network_thread, worker_thread, signaling_thread, std::move(media_engine),
|
||||||
video_decoder_factory, std::move(media_engine), std::move(call_factory),
|
std::move(call_factory), std::move(event_log_factory));
|
||||||
std::move(event_log_factory));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
|
rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
|
||||||
@ -102,9 +101,7 @@ rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
|
|||||||
CreateRtcEventLogFactory();
|
CreateRtcEventLogFactory();
|
||||||
|
|
||||||
return CreateModularPeerConnectionFactory(
|
return CreateModularPeerConnectionFactory(
|
||||||
network_thread, worker_thread, signaling_thread,
|
network_thread, worker_thread, signaling_thread, std::move(media_engine),
|
||||||
nullptr /* external_video_encoder_factory */,
|
|
||||||
nullptr /* external_video_decoder_factory */, std::move(media_engine),
|
|
||||||
std::move(call_factory), std::move(event_log_factory));
|
std::move(call_factory), std::move(event_log_factory));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -46,16 +46,14 @@ CreateModularPeerConnectionFactory(
|
|||||||
rtc::Thread* network_thread,
|
rtc::Thread* network_thread,
|
||||||
rtc::Thread* worker_thread,
|
rtc::Thread* worker_thread,
|
||||||
rtc::Thread* signaling_thread,
|
rtc::Thread* signaling_thread,
|
||||||
cricket::WebRtcVideoEncoderFactory* video_encoder_factory,
|
|
||||||
cricket::WebRtcVideoDecoderFactory* video_decoder_factory,
|
|
||||||
std::unique_ptr<cricket::MediaEngineInterface> media_engine,
|
std::unique_ptr<cricket::MediaEngineInterface> media_engine,
|
||||||
std::unique_ptr<CallFactoryInterface> call_factory,
|
std::unique_ptr<CallFactoryInterface> call_factory,
|
||||||
std::unique_ptr<RtcEventLogFactoryInterface> event_log_factory) {
|
std::unique_ptr<RtcEventLogFactoryInterface> event_log_factory) {
|
||||||
rtc::scoped_refptr<PeerConnectionFactory> pc_factory(
|
rtc::scoped_refptr<PeerConnectionFactory> pc_factory(
|
||||||
new rtc::RefCountedObject<PeerConnectionFactory>(
|
new rtc::RefCountedObject<PeerConnectionFactory>(
|
||||||
network_thread, worker_thread, signaling_thread,
|
network_thread, worker_thread, signaling_thread,
|
||||||
video_encoder_factory, video_decoder_factory, std::move(media_engine),
|
std::move(media_engine), std::move(call_factory),
|
||||||
std::move(call_factory), std::move(event_log_factory)));
|
std::move(event_log_factory)));
|
||||||
|
|
||||||
// Call Initialize synchronously but make sure it is executed on
|
// Call Initialize synchronously but make sure it is executed on
|
||||||
// |signaling_thread|.
|
// |signaling_thread|.
|
||||||
@ -74,8 +72,6 @@ PeerConnectionFactory::PeerConnectionFactory(
|
|||||||
rtc::Thread* network_thread,
|
rtc::Thread* network_thread,
|
||||||
rtc::Thread* worker_thread,
|
rtc::Thread* worker_thread,
|
||||||
rtc::Thread* signaling_thread,
|
rtc::Thread* signaling_thread,
|
||||||
cricket::WebRtcVideoEncoderFactory* video_encoder_factory,
|
|
||||||
cricket::WebRtcVideoDecoderFactory* video_decoder_factory,
|
|
||||||
std::unique_ptr<cricket::MediaEngineInterface> media_engine,
|
std::unique_ptr<cricket::MediaEngineInterface> media_engine,
|
||||||
std::unique_ptr<webrtc::CallFactoryInterface> call_factory,
|
std::unique_ptr<webrtc::CallFactoryInterface> call_factory,
|
||||||
std::unique_ptr<RtcEventLogFactoryInterface> event_log_factory)
|
std::unique_ptr<RtcEventLogFactoryInterface> event_log_factory)
|
||||||
@ -83,8 +79,6 @@ PeerConnectionFactory::PeerConnectionFactory(
|
|||||||
network_thread_(network_thread),
|
network_thread_(network_thread),
|
||||||
worker_thread_(worker_thread),
|
worker_thread_(worker_thread),
|
||||||
signaling_thread_(signaling_thread),
|
signaling_thread_(signaling_thread),
|
||||||
video_encoder_factory_(video_encoder_factory),
|
|
||||||
video_decoder_factory_(video_decoder_factory),
|
|
||||||
media_engine_(std::move(media_engine)),
|
media_engine_(std::move(media_engine)),
|
||||||
call_factory_(std::move(call_factory)),
|
call_factory_(std::move(call_factory)),
|
||||||
event_log_factory_(std::move(event_log_factory)) {
|
event_log_factory_(std::move(event_log_factory)) {
|
||||||
|
|||||||
@ -109,8 +109,6 @@ class PeerConnectionFactory : public PeerConnectionFactoryInterface {
|
|||||||
rtc::Thread* network_thread,
|
rtc::Thread* network_thread,
|
||||||
rtc::Thread* worker_thread,
|
rtc::Thread* worker_thread,
|
||||||
rtc::Thread* signaling_thread,
|
rtc::Thread* signaling_thread,
|
||||||
cricket::WebRtcVideoEncoderFactory* video_encoder_factory,
|
|
||||||
cricket::WebRtcVideoDecoderFactory* video_decoder_factory,
|
|
||||||
std::unique_ptr<cricket::MediaEngineInterface> media_engine,
|
std::unique_ptr<cricket::MediaEngineInterface> media_engine,
|
||||||
std::unique_ptr<webrtc::CallFactoryInterface> call_factory,
|
std::unique_ptr<webrtc::CallFactoryInterface> call_factory,
|
||||||
std::unique_ptr<RtcEventLogFactoryInterface> event_log_factory);
|
std::unique_ptr<RtcEventLogFactoryInterface> event_log_factory);
|
||||||
@ -128,12 +126,6 @@ class PeerConnectionFactory : public PeerConnectionFactoryInterface {
|
|||||||
std::unique_ptr<rtc::Thread> owned_worker_thread_;
|
std::unique_ptr<rtc::Thread> owned_worker_thread_;
|
||||||
Options options_;
|
Options options_;
|
||||||
std::unique_ptr<cricket::ChannelManager> channel_manager_;
|
std::unique_ptr<cricket::ChannelManager> channel_manager_;
|
||||||
// External Video encoder factory. This can be NULL if the client has not
|
|
||||||
// injected any. In that case, video engine will use the internal SW encoder.
|
|
||||||
std::unique_ptr<cricket::WebRtcVideoEncoderFactory> video_encoder_factory_;
|
|
||||||
// External Video decoder factory. This can be NULL if the client has not
|
|
||||||
// injected any. In that case, video engine will use the internal SW decoder.
|
|
||||||
std::unique_ptr<cricket::WebRtcVideoDecoderFactory> video_decoder_factory_;
|
|
||||||
std::unique_ptr<rtc::BasicNetworkManager> default_network_manager_;
|
std::unique_ptr<rtc::BasicNetworkManager> default_network_manager_;
|
||||||
std::unique_ptr<rtc::BasicPacketSocketFactory> default_socket_factory_;
|
std::unique_ptr<rtc::BasicPacketSocketFactory> default_socket_factory_;
|
||||||
std::unique_ptr<cricket::MediaEngineInterface> media_engine_;
|
std::unique_ptr<cricket::MediaEngineInterface> media_engine_;
|
||||||
|
|||||||
@ -660,7 +660,7 @@ class PeerConnectionFactoryForTest : public webrtc::PeerConnectionFactory {
|
|||||||
|
|
||||||
return new rtc::RefCountedObject<PeerConnectionFactoryForTest>(
|
return new rtc::RefCountedObject<PeerConnectionFactoryForTest>(
|
||||||
rtc::Thread::Current(), rtc::Thread::Current(), rtc::Thread::Current(),
|
rtc::Thread::Current(), rtc::Thread::Current(), rtc::Thread::Current(),
|
||||||
nullptr, nullptr, std::move(media_engine), std::move(call_factory),
|
std::move(media_engine), std::move(call_factory),
|
||||||
std::move(event_log_factory));
|
std::move(event_log_factory));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -668,16 +668,12 @@ class PeerConnectionFactoryForTest : public webrtc::PeerConnectionFactory {
|
|||||||
rtc::Thread* network_thread,
|
rtc::Thread* network_thread,
|
||||||
rtc::Thread* worker_thread,
|
rtc::Thread* worker_thread,
|
||||||
rtc::Thread* signaling_thread,
|
rtc::Thread* signaling_thread,
|
||||||
cricket::WebRtcVideoEncoderFactory* video_encoder_factory,
|
|
||||||
cricket::WebRtcVideoDecoderFactory* video_decoder_factory,
|
|
||||||
std::unique_ptr<cricket::MediaEngineInterface> media_engine,
|
std::unique_ptr<cricket::MediaEngineInterface> media_engine,
|
||||||
std::unique_ptr<webrtc::CallFactoryInterface> call_factory,
|
std::unique_ptr<webrtc::CallFactoryInterface> call_factory,
|
||||||
std::unique_ptr<webrtc::RtcEventLogFactoryInterface> event_log_factory)
|
std::unique_ptr<webrtc::RtcEventLogFactoryInterface> event_log_factory)
|
||||||
: webrtc::PeerConnectionFactory(network_thread,
|
: webrtc::PeerConnectionFactory(network_thread,
|
||||||
worker_thread,
|
worker_thread,
|
||||||
signaling_thread,
|
signaling_thread,
|
||||||
video_encoder_factory,
|
|
||||||
video_decoder_factory,
|
|
||||||
std::move(media_engine),
|
std::move(media_engine),
|
||||||
std::move(call_factory),
|
std::move(call_factory),
|
||||||
std::move(event_log_factory)) {}
|
std::move(event_log_factory)) {}
|
||||||
|
|||||||
@ -30,8 +30,6 @@ class FakePeerConnectionFactory
|
|||||||
rtc::Thread::Current(),
|
rtc::Thread::Current(),
|
||||||
rtc::Thread::Current(),
|
rtc::Thread::Current(),
|
||||||
rtc::Thread::Current(),
|
rtc::Thread::Current(),
|
||||||
nullptr,
|
|
||||||
nullptr,
|
|
||||||
std::unique_ptr<cricket::MediaEngineInterface>(),
|
std::unique_ptr<cricket::MediaEngineInterface>(),
|
||||||
std::unique_ptr<webrtc::CallFactoryInterface>(),
|
std::unique_ptr<webrtc::CallFactoryInterface>(),
|
||||||
std::unique_ptr<RtcEventLogFactoryInterface>()) {}
|
std::unique_ptr<RtcEventLogFactoryInterface>()) {}
|
||||||
|
|||||||
@ -197,8 +197,8 @@ JNI_FUNCTION_DECLARATION(
|
|||||||
rtc::scoped_refptr<PeerConnectionFactoryInterface> factory(
|
rtc::scoped_refptr<PeerConnectionFactoryInterface> factory(
|
||||||
CreateModularPeerConnectionFactory(
|
CreateModularPeerConnectionFactory(
|
||||||
network_thread.get(), worker_thread.get(), signaling_thread.get(),
|
network_thread.get(), worker_thread.get(), signaling_thread.get(),
|
||||||
video_encoder_factory, video_decoder_factory, std::move(media_engine),
|
std::move(media_engine), std::move(call_factory),
|
||||||
std::move(call_factory), std::move(rtc_event_log_factory)));
|
std::move(rtc_event_log_factory)));
|
||||||
RTC_CHECK(factory) << "Failed to create the peer connection factory; "
|
RTC_CHECK(factory) << "Failed to create the peer connection factory; "
|
||||||
<< "WebRTC/libjingle init likely failed on this device";
|
<< "WebRTC/libjingle init likely failed on this device";
|
||||||
// TODO(honghaiz): Maybe put the options as the argument of
|
// TODO(honghaiz): Maybe put the options as the argument of
|
||||||
|
|||||||
@ -110,8 +110,6 @@
|
|||||||
_networkThread.get(),
|
_networkThread.get(),
|
||||||
_workerThread.get(),
|
_workerThread.get(),
|
||||||
_signalingThread.get(),
|
_signalingThread.get(),
|
||||||
nullptr, // video_encoder_factory
|
|
||||||
nullptr, // video_decoder_factory
|
|
||||||
std::unique_ptr<cricket::MediaEngineInterface>(),
|
std::unique_ptr<cricket::MediaEngineInterface>(),
|
||||||
std::unique_ptr<webrtc::CallFactoryInterface>(),
|
std::unique_ptr<webrtc::CallFactoryInterface>(),
|
||||||
std::unique_ptr<webrtc::RtcEventLogFactoryInterface>());
|
std::unique_ptr<webrtc::RtcEventLogFactoryInterface>());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user