2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
11 #include "webrtc/video_engine/vie_impl.h"
13 #include "webrtc/common.h"
14 #include "webrtc/system_wrappers/interface/trace.h"
17 #include "webrtc/modules/video_capture/include/video_capture_factory.h"
18 #include "webrtc/modules/video_render/include/video_render.h"
23 enum { kModuleId = 0 };
25 VideoEngine* VideoEngine::Create() {
26 return new VideoEngineImpl(new Config(), true /* owns_config */);
29 VideoEngine* VideoEngine::Create(const Config& config) {
30 return new VideoEngineImpl(&config, false /* owns_config */);
33 bool VideoEngine::Delete(VideoEngine*& video_engine) {
35 WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId,
36 "VideoEngine::Delete - No argument");
39 WEBRTC_TRACE(kTraceApiCall, kTraceVideo, kModuleId,
40 "VideoEngine::Delete(vie = 0x%p)", video_engine);
41 VideoEngineImpl* vie_impl = static_cast<VideoEngineImpl*>(video_engine);
43 // Check all reference counters.
44 ViEBaseImpl* vie_base = vie_impl;
45 if (vie_base->GetCount() > 0) {
46 WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId,
47 "ViEBase ref count: %d", vie_base->GetCount());
50 #ifdef WEBRTC_VIDEO_ENGINE_CAPTURE_API
51 ViECaptureImpl* vie_capture = vie_impl;
52 if (vie_capture->GetCount() > 0) {
53 WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId,
54 "ViECapture ref count: %d", vie_capture->GetCount());
58 #ifdef WEBRTC_VIDEO_ENGINE_CODEC_API
59 ViECodecImpl* vie_codec = vie_impl;
60 if (vie_codec->GetCount() > 0) {
61 WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId,
62 "ViECodec ref count: %d", vie_codec->GetCount());
66 #ifdef WEBRTC_VIDEO_ENGINE_EXTERNAL_CODEC_API
67 ViEExternalCodecImpl* vie_external_codec = vie_impl;
68 if (vie_external_codec->GetCount() > 0) {
69 WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId,
70 "ViEExternalCodec ref count: %d", vie_external_codec->GetCount());
74 #ifdef WEBRTC_VIDEO_ENGINE_FILE_API
75 ViEFileImpl* vie_file = vie_impl;
76 if (vie_file->GetCount() > 0) {
77 WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId,
78 "ViEFile ref count: %d", vie_file->GetCount());
82 #ifdef WEBRTC_VIDEO_ENGINE_IMAGE_PROCESS_API
83 ViEImageProcessImpl* vie_image_process = vie_impl;
84 if (vie_image_process->GetCount() > 0) {
85 WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId,
86 "ViEImageProcess ref count: %d",
87 vie_image_process->GetCount());
91 ViENetworkImpl* vie_network = vie_impl;
92 if (vie_network->GetCount() > 0) {
93 WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId,
94 "ViENetwork ref count: %d", vie_network->GetCount());
97 #ifdef WEBRTC_VIDEO_ENGINE_RENDER_API
98 ViERenderImpl* vie_render = vie_impl;
99 if (vie_render->GetCount() > 0) {
100 WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId,
101 "ViERender ref count: %d", vie_render->GetCount());
105 #ifdef WEBRTC_VIDEO_ENGINE_RTP_RTCP_API
106 ViERTP_RTCPImpl* vie_rtp_rtcp = vie_impl;
107 if (vie_rtp_rtcp->GetCount() > 0) {
108 WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId,
109 "ViERTP_RTCP ref count: %d", vie_rtp_rtcp->GetCount());
118 WEBRTC_TRACE(kTraceInfo, kTraceVideo, kModuleId,
119 "%s: instance deleted.", __FUNCTION__);
123 int VideoEngine::SetTraceFile(const char* file_nameUTF8,
124 const bool add_file_counter) {
125 if (!file_nameUTF8) {
128 if (Trace::SetTraceFile(file_nameUTF8, add_file_counter) == -1) {
131 WEBRTC_TRACE(kTraceApiCall, kTraceVideo, kModuleId,
132 "SetTraceFileName(file_nameUTF8 = %s, add_file_counter = %d",
133 file_nameUTF8, add_file_counter);
137 int VideoEngine::SetTraceFilter(const unsigned int filter) {
138 uint32_t old_filter = Trace::level_filter();
140 if (filter == kTraceNone && old_filter != kTraceNone) {
141 // Do the logging before turning it off.
142 WEBRTC_TRACE(kTraceApiCall, kTraceVideo, kModuleId,
143 "SetTraceFilter(filter = 0x%x)", filter);
146 Trace::set_level_filter(filter);
147 WEBRTC_TRACE(kTraceApiCall, kTraceVideo, kModuleId,
148 "SetTraceFilter(filter = 0x%x)", filter);
152 int VideoEngine::SetTraceCallback(TraceCallback* callback) {
153 WEBRTC_TRACE(kTraceApiCall, kTraceVideo, kModuleId,
154 "SetTraceCallback(TraceCallback = 0x%p)", callback);
155 return Trace::SetTraceCallback(callback);
158 #if defined(ANDROID) && !defined(WEBRTC_CHROMIUM_BUILD)
159 int VideoEngine::SetAndroidObjects(JavaVM* javaVM) {
160 WEBRTC_TRACE(kTraceApiCall, kTraceVideo, kModuleId,
161 "SetAndroidObjects()");
163 if (SetCaptureAndroidVM(javaVM) != 0) {
164 WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId,
165 "Could not set capture Android VM");
168 if (SetRenderAndroidVM(javaVM) != 0) {
169 WEBRTC_TRACE(kTraceError, kTraceVideo, kModuleId,
170 "Could not set render Android VM");
177 } // namespace webrtc