diff --git a/webrtc/video_engine/internal/video_call.cc b/webrtc/video_engine/internal/video_call.cc index 99112bff4..9dec53147 100644 --- a/webrtc/video_engine/internal/video_call.cc +++ b/webrtc/video_engine/internal/video_call.cc @@ -21,9 +21,25 @@ #include "webrtc/video_engine/include/vie_rtp_rtcp.h" #include "webrtc/video_engine/internal/video_receive_stream.h" #include "webrtc/video_engine/internal/video_send_stream.h" -#include "webrtc/video_engine/new_include/video_engine.h" namespace webrtc { + +namespace newapi { +VideoCall* VideoCall::Create(const newapi::VideoCall::Config& config) { + webrtc::VideoEngine* video_engine = webrtc::VideoEngine::Create(); + assert(video_engine != NULL); + + ViEBase* video_engine_base = ViEBase::GetInterface(video_engine); + assert(video_engine_base != NULL); + if (video_engine_base->Init() != 0) { + abort(); + } + video_engine_base->Release(); + + return new internal::VideoCall(video_engine, config); +} +} // namespace newapi + namespace internal { VideoCall::VideoCall(webrtc::VideoEngine* video_engine, @@ -44,8 +60,9 @@ VideoCall::VideoCall(webrtc::VideoEngine* video_engine, } VideoCall::~VideoCall() { - rtp_rtcp_->Release(); codec_->Release(); + rtp_rtcp_->Release(); + webrtc::VideoEngine::Delete(video_engine_); } newapi::PacketReceiver* VideoCall::Receiver() { return this; } diff --git a/webrtc/video_engine/internal/video_call.h b/webrtc/video_engine/internal/video_call.h index cca5fa277..56311711c 100644 --- a/webrtc/video_engine/internal/video_call.h +++ b/webrtc/video_engine/internal/video_call.h @@ -18,7 +18,7 @@ #include "webrtc/system_wrappers/interface/scoped_ptr.h" #include "webrtc/video_engine/internal/video_receive_stream.h" #include "webrtc/video_engine/internal/video_send_stream.h" -#include "webrtc/video_engine/new_include/video_engine.h" +#include "webrtc/video_engine/new_include/video_call.h" namespace webrtc { diff --git a/webrtc/video_engine/internal/video_engine.cc b/webrtc/video_engine/internal/video_engine.cc deleted file mode 100644 index ec1d2f43f..000000000 --- a/webrtc/video_engine/internal/video_engine.cc +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2013 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/video_engine/new_include/video_engine.h" - -#include - -#include "webrtc/video_engine/include/vie_base.h" -#include "webrtc/video_engine/internal/video_call.h" -#include "webrtc/video_engine/vie_defines.h" - -namespace webrtc { -namespace internal { - -class VideoEngine : public newapi::VideoEngine { - public: - explicit VideoEngine(const newapi::VideoEngineConfig& config) - : config_(config) { - video_engine_ = webrtc::VideoEngine::Create(); - assert(video_engine_ != NULL); - - ViEBase* video_engine_base = ViEBase::GetInterface(video_engine_); - assert(video_engine_base != NULL); - if (video_engine_base->Init() != 0) { - abort(); - } - video_engine_base->Release(); - } - - virtual ~VideoEngine() { webrtc::VideoEngine::Delete(video_engine_); } - - virtual newapi::VideoCall* CreateCall( - const newapi::VideoCall::Config& config) OVERRIDE { - return new VideoCall(video_engine_, config); - } - - private: - newapi::VideoEngineConfig config_; - webrtc::VideoEngine* video_engine_; - - DISALLOW_COPY_AND_ASSIGN(VideoEngine); -}; -} // internal - -namespace newapi { - -VideoEngine* VideoEngine::Create(const VideoEngineConfig& engine_config) { - return new internal::VideoEngine(engine_config); -} - -const char* Version() { return WEBRTC_SVNREVISION " (" BUILDINFO ")"; } -} // newapi -} // webrtc diff --git a/webrtc/video_engine/new_include/video_engine.h b/webrtc/video_engine/new_include/video_call.h similarity index 75% rename from webrtc/video_engine/new_include/video_engine.h rename to webrtc/video_engine/new_include/video_call.h index 18289ed31..b431e6f17 100644 --- a/webrtc/video_engine/new_include/video_engine.h +++ b/webrtc/video_engine/new_include/video_call.h @@ -7,9 +7,8 @@ * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ - -#ifndef WEBRTC_VIDEO_ENGINE_NEW_INCLUDE_VIDEO_ENGINE_H_ -#define WEBRTC_VIDEO_ENGINE_NEW_INCLUDE_VIDEO_ENGINE_H_ +#ifndef WEBRTC_VIDEO_ENGINE_NEW_INCLUDE_VIDEO_CALL_H_ +#define WEBRTC_VIDEO_ENGINE_NEW_INCLUDE_VIDEO_CALL_H_ #include #include @@ -33,29 +32,31 @@ class PacketReceiver { virtual ~PacketReceiver() {} }; -struct VideoEngineConfig { - VideoEngineConfig() - : voice_engine(NULL), trace_callback(NULL), trace_filter(kTraceNone) {} - - // VoiceEngine used for audio/video synchronization for this VideoEngine. - VoiceEngine* voice_engine; - - TraceCallback* trace_callback; - uint32_t trace_filter; -}; - // A VideoCall instance can contain several send and/or receive streams. All // streams are assumed to have the same remote endpoint and will share bitrate // estimates etc. class VideoCall { public: struct Config { - Config() : send_transport(NULL), overuse_detection(false) {} + explicit Config(Transport* send_transport) + : send_transport(send_transport), + overuse_detection(false), + voice_engine(NULL), + trace_callback(NULL), + trace_filter(kTraceNone) {} Transport* send_transport; bool overuse_detection; + + // VoiceEngine used for audio/video synchronization for this VideoCall. + VoiceEngine* voice_engine; + + TraceCallback* trace_callback; + uint32_t trace_filter; }; + static VideoCall* Create(const VideoCall::Config& config); + virtual std::vector GetVideoCodecs() = 0; virtual VideoSendStream::Config GetDefaultSendConfig() = 0; @@ -89,18 +90,7 @@ class VideoCall { virtual ~VideoCall() {} }; - -// VideoEngine is the main class and there is only one instance serving several -// calls. -class VideoEngine { - public: - static VideoEngine* Create(const VideoEngineConfig& config); - virtual ~VideoEngine() {} - - virtual VideoCall* CreateCall(const VideoCall::Config& config) = 0; -}; - } // namespace newapi } // namespace webrtc -#endif // WEBRTC_VIDEO_ENGINE_NEW_INCLUDE_VIDEO_ENGINE_H_ +#endif // WEBRTC_VIDEO_ENGINE_NEW_INCLUDE_VIDEO_CALL_H_ diff --git a/webrtc/video_engine/test/common/direct_transport.cc b/webrtc/video_engine/test/common/direct_transport.cc index b6a444e6f..3893ab358 100644 --- a/webrtc/video_engine/test/common/direct_transport.cc +++ b/webrtc/video_engine/test/common/direct_transport.cc @@ -10,7 +10,7 @@ #include "webrtc/video_engine/test/common/direct_transport.h" #include "testing/gtest/include/gtest/gtest.h" -#include "webrtc/video_engine/new_include/video_engine.h" +#include "webrtc/video_engine/new_include/video_call.h" namespace webrtc { namespace test { diff --git a/webrtc/video_engine/test/engine_tests.cc b/webrtc/video_engine/test/engine_tests.cc index c6c1be4af..195581e9f 100644 --- a/webrtc/video_engine/test/engine_tests.cc +++ b/webrtc/video_engine/test/engine_tests.cc @@ -16,7 +16,7 @@ #include "webrtc/system_wrappers/interface/critical_section_wrapper.h" #include "webrtc/system_wrappers/interface/scoped_ptr.h" #include "webrtc/system_wrappers/interface/event_wrapper.h" -#include "webrtc/video_engine/new_include/video_engine.h" +#include "webrtc/video_engine/new_include/video_call.h" #include "webrtc/video_engine/test/common/direct_transport.h" #include "webrtc/video_engine/test/common/frame_generator.h" #include "webrtc/video_engine/test/common/frame_generator_capturer.h" @@ -174,16 +174,13 @@ struct EngineTestParams { class EngineTest : public ::testing::TestWithParam { public: virtual void SetUp() { - video_engine_.reset( - newapi::VideoEngine::Create(newapi::VideoEngineConfig())); reserved_ssrcs_.clear(); } protected: newapi::VideoCall* CreateTestCall(newapi::Transport* transport) { - newapi::VideoCall::Config call_config; - call_config.send_transport = transport; - return video_engine_->CreateCall(call_config); + newapi::VideoCall::Config call_config(transport); + return newapi::VideoCall::Create(call_config); } newapi::VideoSendStream::Config CreateTestSendConfig( @@ -212,7 +209,6 @@ class EngineTest : public ::testing::TestWithParam { 30); } - scoped_ptr video_engine_; std::map reserved_ssrcs_; }; diff --git a/webrtc/video_engine/test/full_stack.cc b/webrtc/video_engine/test/full_stack.cc index bf61c2112..ba830c390 100644 --- a/webrtc/video_engine/test/full_stack.cc +++ b/webrtc/video_engine/test/full_stack.cc @@ -23,7 +23,7 @@ #include "webrtc/system_wrappers/interface/scoped_ptr.h" #include "webrtc/test/testsupport/fileutils.h" #include "webrtc/typedefs.h" -#include "webrtc/video_engine/new_include/video_engine.h" +#include "webrtc/video_engine/new_include/video_call.h" #include "webrtc/video_engine/test/common/direct_transport.h" #include "webrtc/video_engine/test/common/file_capturer.h" #include "webrtc/video_engine/test/common/frame_generator_capturer.h" @@ -270,9 +270,6 @@ TEST_P(FullStackTest, NoPacketLoss) { scoped_ptr loopback_video(test::VideoRenderer::Create( "Loopback Video", params.clip.width, params.clip.height)); - scoped_ptr video_engine( - newapi::VideoEngine::Create(newapi::VideoEngineConfig())); - test::DirectTransport transport; VideoAnalyzer analyzer( NULL, @@ -283,10 +280,9 @@ TEST_P(FullStackTest, NoPacketLoss) { params.avg_ssim_threshold, static_cast(FLAGS_seconds * params.clip.fps)); - newapi::VideoCall::Config call_config; - call_config.send_transport = &analyzer; + newapi::VideoCall::Config call_config(&analyzer); - scoped_ptr call(video_engine->CreateCall(call_config)); + scoped_ptr call(newapi::VideoCall::Create(call_config)); analyzer.receiver_ = call->Receiver(); transport.SetReceiver(&analyzer); diff --git a/webrtc/video_engine/test/loopback.cc b/webrtc/video_engine/test/loopback.cc index 6c4bf48f8..79ff43849 100644 --- a/webrtc/video_engine/test/loopback.cc +++ b/webrtc/video_engine/test/loopback.cc @@ -17,7 +17,7 @@ #include "webrtc/system_wrappers/interface/clock.h" #include "webrtc/system_wrappers/interface/scoped_ptr.h" #include "webrtc/typedefs.h" -#include "webrtc/video_engine/new_include/video_engine.h" +#include "webrtc/video_engine/new_include/video_call.h" #include "webrtc/video_engine/test/common/direct_transport.h" #include "webrtc/video_engine/test/common/flags.h" #include "webrtc/video_engine/test/common/generate_ssrcs.h" @@ -39,14 +39,10 @@ TEST_F(LoopbackTest, Test) { scoped_ptr loopback_video(test::VideoRenderer::Create( "Loopback Video", test::flags::Width(), test::flags::Height())); - scoped_ptr video_engine( - newapi::VideoEngine::Create(webrtc::newapi::VideoEngineConfig())); - test::DirectTransport transport; - newapi::VideoCall::Config call_config; - call_config.send_transport = &transport; + newapi::VideoCall::Config call_config(&transport); call_config.overuse_detection = true; - scoped_ptr call(video_engine->CreateCall(call_config)); + scoped_ptr call(newapi::VideoCall::Create(call_config)); // Loopback, call sends to itself. transport.SetReceiver(call->Receiver()); diff --git a/webrtc/video_engine/video_engine_core.gypi b/webrtc/video_engine/video_engine_core.gypi index 779bbc683..42100dffc 100644 --- a/webrtc/video_engine/video_engine_core.gypi +++ b/webrtc/video_engine/video_engine_core.gypi @@ -117,7 +117,6 @@ # New VideoEngine API 'internal/video_call.cc', 'internal/video_call.h', - 'internal/video_engine.cc', 'internal/video_receive_stream.cc', 'internal/video_receive_stream.h', 'internal/video_send_stream.cc', @@ -125,7 +124,7 @@ 'new_include/config.h', 'new_include/frame_callback.h', 'new_include/transport.h', - 'new_include/video_engine.h', + 'new_include/video_call.h', 'new_include/video_receive_stream.h', 'new_include/video_renderer.h', 'new_include/video_send_stream.h',