summaryrefslogtreecommitdiff
path: root/video_engine
diff options
context:
space:
mode:
authorpbos@webrtc.org <pbos@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2013-08-12 19:51:57 +0000
committerpbos@webrtc.org <pbos@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2013-08-12 19:51:57 +0000
commit52c5c708de6f5bcf9c2a58cece45013aa5efacd7 (patch)
treec4334f3628c4a1dd2a216b6afb1285976f3760d4 /video_engine
parent8c8c87fffe762f02d64aba9c786a37450927ebeb (diff)
downloadwebrtc-52c5c708de6f5bcf9c2a58cece45013aa5efacd7.tar.gz
Replace MapWrapper with std::map<>.
MapWrapper was needed on some platforms where STL wasn't supported, we now use std::map<> directly. BUG=2164 TEST=trybots R=henrike@webrtc.org, phoglund@webrtc.org, stefan@webrtc.org, wu@webrtc.org Review URL: https://webrtc-codereview.appspot.com/2001004 git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@4530 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'video_engine')
-rw-r--r--video_engine/vie_channel_manager.cc1
-rw-r--r--video_engine/vie_channel_manager.h1
-rw-r--r--video_engine/vie_input_manager.cc89
-rw-r--r--video_engine/vie_input_manager.h7
-rw-r--r--video_engine/vie_render_manager.cc42
-rw-r--r--video_engine/vie_render_manager.h9
-rw-r--r--video_engine/vie_renderer.h1
7 files changed, 54 insertions, 96 deletions
diff --git a/video_engine/vie_channel_manager.cc b/video_engine/vie_channel_manager.cc
index 3c121fe0..02b991c8 100644
--- a/video_engine/vie_channel_manager.cc
+++ b/video_engine/vie_channel_manager.cc
@@ -14,7 +14,6 @@
#include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp.h"
#include "webrtc/modules/utility/interface/process_thread.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/interface/map_wrapper.h"
#include "webrtc/system_wrappers/interface/trace.h"
#include "webrtc/video_engine/call_stats.h"
#include "webrtc/video_engine/encoder_state_feedback.h"
diff --git a/video_engine/vie_channel_manager.h b/video_engine/vie_channel_manager.h
index 1a2460bd..5ded9567 100644
--- a/video_engine/vie_channel_manager.h
+++ b/video_engine/vie_channel_manager.h
@@ -27,7 +27,6 @@ namespace webrtc {
class Config;
class CriticalSectionWrapper;
-class MapWrapper;
class ProcessThread;
class RtcpRttObserver;
class ViEChannel;
diff --git a/video_engine/vie_input_manager.cc b/video_engine/vie_input_manager.cc
index b1f28aea..f5727c56 100644
--- a/video_engine/vie_input_manager.cc
+++ b/video_engine/vie_input_manager.cc
@@ -44,19 +44,13 @@ ViEInputManager::ViEInputManager(const int engine_id, const Config& config)
ViEInputManager::~ViEInputManager() {
WEBRTC_TRACE(webrtc::kTraceMemory, webrtc::kTraceVideo, ViEId(engine_id_),
"%s", __FUNCTION__);
- while (vie_frame_provider_map_.Size() != 0) {
- MapItem* item = vie_frame_provider_map_.First();
- assert(item);
- ViEFrameProviderBase* frame_provider =
- static_cast<ViEFrameProviderBase*>(item->GetItem());
- vie_frame_provider_map_.Erase(item);
- delete frame_provider;
+ for (FrameProviderMap::iterator it = vie_frame_provider_map_.begin();
+ it != vie_frame_provider_map_.end();
+ ++it) {
+ delete it->second;
}
- if (capture_device_info_) {
- delete capture_device_info_;
- capture_device_info_ = NULL;
- }
+ delete capture_device_info_;
}
void ViEInputManager::SetModuleProcessThread(
ProcessThread* module_process_thread) {
@@ -191,18 +185,17 @@ int ViEInputManager::CreateCaptureDevice(
CriticalSectionScoped cs(map_cs_.get());
// Make sure the device is not already allocated.
- for (MapItem* item = vie_frame_provider_map_.First(); item != NULL;
- item = vie_frame_provider_map_.Next(item)) {
+ for (FrameProviderMap::iterator it = vie_frame_provider_map_.begin();
+ it != vie_frame_provider_map_.end();
+ ++it) {
// Make sure this is a capture device.
- if (item->GetId() >= kViECaptureIdBase &&
- item->GetId() <= kViECaptureIdMax) {
- ViECapturer* vie_capture = static_cast<ViECapturer*>(item->GetItem());
+ if (it->first >= kViECaptureIdBase && it->first <= kViECaptureIdMax) {
+ ViECapturer* vie_capture = static_cast<ViECapturer*>(it->second);
assert(vie_capture);
// TODO(mflodman) Can we change input to avoid this cast?
const char* device_name =
reinterpret_cast<const char*>(vie_capture->CurrentDeviceName());
- if (strncmp(device_name,
- reinterpret_cast<const char*>(device_unique_idUTF8),
+ if (strncmp(device_name, device_unique_idUTF8,
strlen(device_name)) == 0) {
return kViECaptureDeviceAlreadyAllocated;
}
@@ -266,13 +259,7 @@ int ViEInputManager::CreateCaptureDevice(
return kViECaptureDeviceUnknownError;
}
- if (vie_frame_provider_map_.Insert(newcapture_id, vie_capture) != 0) {
- ReturnCaptureId(newcapture_id);
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideo, ViEId(engine_id_),
- "%s: Could not insert capture module for %s", __FUNCTION__,
- device_unique_idUTF8);
- return kViECaptureDeviceUnknownError;
- }
+ vie_frame_provider_map_[newcapture_id] = vie_capture;
capture_id = newcapture_id;
WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideo, ViEId(engine_id_),
"%s(device_unique_id: %s, capture_id: %d)", __FUNCTION__,
@@ -303,12 +290,7 @@ int ViEInputManager::CreateCaptureDevice(VideoCaptureModule* capture_module,
"%s: Could attach capture module.", __FUNCTION__);
return kViECaptureDeviceUnknownError;
}
- if (vie_frame_provider_map_.Insert(newcapture_id, vie_capture) != 0) {
- ReturnCaptureId(newcapture_id);
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideo, ViEId(engine_id_),
- "%s: Could not insert capture module", __FUNCTION__);
- return kViECaptureDeviceUnknownError;
- }
+ vie_frame_provider_map_[newcapture_id] = vie_capture;
capture_id = newcapture_id;
WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideo, ViEId(engine_id_),
"%s, capture_id: %d", __FUNCTION__, capture_id);
@@ -340,7 +322,7 @@ int ViEInputManager::DestroyCaptureDevice(const int capture_id) {
"callbacks when destroying capture device",
__FUNCTION__, capture_id, num_callbacks);
}
- vie_frame_provider_map_.Erase(capture_id);
+ vie_frame_provider_map_.erase(capture_id);
ReturnCaptureId(capture_id);
// Leave cs before deleting the capture object. This is because deleting the
// object might cause deletions of renderers so we prefer to not have a lock
@@ -375,13 +357,7 @@ int ViEInputManager::CreateExternalCaptureDevice(
return kViECaptureDeviceUnknownError;
}
- if (vie_frame_provider_map_.Insert(newcapture_id, vie_capture) != 0) {
- ReturnCaptureId(newcapture_id);
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideo, ViEId(engine_id_),
- "%s: Could not insert capture module for external capture.",
- __FUNCTION__);
- return kViECaptureDeviceUnknownError;
- }
+ vie_frame_provider_map_[newcapture_id] = vie_capture;
capture_id = newcapture_id;
external_capture = vie_capture;
WEBRTC_TRACE(webrtc::kTraceInfo, webrtc::kTraceVideo, ViEId(engine_id_),
@@ -421,30 +397,25 @@ ViEFrameProviderBase* ViEInputManager::ViEFrameProvider(
assert(capture_observer);
CriticalSectionScoped cs(map_cs_.get());
- for (MapItem* provider_item = vie_frame_provider_map_.First(); provider_item
- != NULL; provider_item = vie_frame_provider_map_.Next(provider_item)) {
- ViEFrameProviderBase* vie_frame_provider =
- static_cast<ViEFrameProviderBase*>(provider_item->GetItem());
- assert(vie_frame_provider != NULL);
-
- if (vie_frame_provider->IsFrameCallbackRegistered(capture_observer)) {
- // We found it.
- return vie_frame_provider;
- }
+ for (FrameProviderMap::const_iterator it = vie_frame_provider_map_.begin();
+ it != vie_frame_provider_map_.end();
+ ++it) {
+ if (it->second->IsFrameCallbackRegistered(capture_observer))
+ return it->second;
}
+
// No capture device set for this channel.
return NULL;
}
ViEFrameProviderBase* ViEInputManager::ViEFrameProvider(int provider_id) const {
CriticalSectionScoped cs(map_cs_.get());
- MapItem* map_item = vie_frame_provider_map_.Find(provider_id);
- if (!map_item) {
+
+ FrameProviderMap::const_iterator it =
+ vie_frame_provider_map_.find(provider_id);
+ if (it == vie_frame_provider_map_.end())
return NULL;
- }
- ViEFrameProviderBase* vie_frame_provider =
- static_cast<ViEFrameProviderBase*>(map_item->GetItem());
- return vie_frame_provider;
+ return it->second;
}
ViECapturer* ViEInputManager::ViECapturePtr(int capture_id) const {
@@ -452,13 +423,7 @@ ViECapturer* ViEInputManager::ViECapturePtr(int capture_id) const {
capture_id <= kViECaptureIdBase + kViEMaxCaptureDevices))
return NULL;
- CriticalSectionScoped cs(map_cs_.get());
- MapItem* map_item = vie_frame_provider_map_.Find(capture_id);
- if (!map_item) {
- return NULL;
- }
- ViECapturer* vie_capture = static_cast<ViECapturer*>(map_item->GetItem());
- return vie_capture;
+ return static_cast<ViECapturer*>(ViEFrameProvider(capture_id));
}
ViEInputManagerScoped::ViEInputManagerScoped(
diff --git a/video_engine/vie_input_manager.h b/video_engine/vie_input_manager.h
index ed8a908b..a4db9a70 100644
--- a/video_engine/vie_input_manager.h
+++ b/video_engine/vie_input_manager.h
@@ -11,8 +11,9 @@
#ifndef WEBRTC_VIDEO_ENGINE_VIE_INPUT_MANAGER_H_
#define WEBRTC_VIDEO_ENGINE_VIE_INPUT_MANAGER_H_
+#include <map>
+
#include "webrtc/modules/video_capture/include/video_capture.h"
-#include "webrtc/system_wrappers/interface/map_wrapper.h"
#include "webrtc/system_wrappers/interface/scoped_ptr.h"
#include "webrtc/typedefs.h"
#include "webrtc/video_engine/include/vie_capture.h"
@@ -98,7 +99,9 @@ class ViEInputManager : private ViEManagerBase {
int engine_id_;
scoped_ptr<CriticalSectionWrapper> map_cs_;
scoped_ptr<CriticalSectionWrapper> device_info_cs_;
- MapWrapper vie_frame_provider_map_;
+
+ typedef std::map<int, ViEFrameProviderBase*> FrameProviderMap;
+ FrameProviderMap vie_frame_provider_map_;
// Capture devices.
VideoCaptureModule::DeviceInfo* capture_device_info_;
diff --git a/video_engine/vie_render_manager.cc b/video_engine/vie_render_manager.cc
index 79c604bd..2480d90e 100644
--- a/video_engine/vie_render_manager.cc
+++ b/video_engine/vie_render_manager.cc
@@ -43,14 +43,11 @@ ViERenderManager::ViERenderManager(int32_t engine_id)
ViERenderManager::~ViERenderManager() {
WEBRTC_TRACE(webrtc::kTraceMemory, webrtc::kTraceVideo, ViEId(engine_id_),
"ViERenderManager Destructor, engine_id: %d", engine_id_);
-
- while (stream_to_vie_renderer_.Size() != 0) {
- MapItem* item = stream_to_vie_renderer_.First();
- assert(item);
- const int32_t render_id = item->GetId();
- // The renderer is delete in RemoveRenderStream.
- item = NULL;
- RemoveRenderStream(render_id);
+ for (RendererMap::iterator it = stream_to_vie_renderer_.begin();
+ it != stream_to_vie_renderer_.end();
+ ++it) {
+ // The renderer is deleted in RemoveRenderStream.
+ RemoveRenderStream(it->first);
}
}
@@ -113,7 +110,8 @@ ViERenderer* ViERenderManager::AddRenderStream(const int32_t render_id,
const float bottom) {
CriticalSectionScoped cs(list_cs_.get());
- if (stream_to_vie_renderer_.Find(render_id) != NULL) {
+ if (stream_to_vie_renderer_.find(render_id) !=
+ stream_to_vie_renderer_.end()) {
// This stream is already added to a renderer, not allowed!
WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideo, ViEId(engine_id_),
"Render stream already exists");
@@ -146,7 +144,7 @@ ViERenderer* ViERenderManager::AddRenderStream(const int32_t render_id,
"Could not create new render stream");
return NULL;
}
- stream_to_vie_renderer_.Insert(render_id, vie_renderer);
+ stream_to_vie_renderer_[render_id] = vie_renderer;
return vie_renderer;
}
@@ -155,28 +153,24 @@ int32_t ViERenderManager::RemoveRenderStream(
// We need exclusive right to the items in the render manager to delete a
// stream.
ViEManagerWriteScoped scope(this);
-
CriticalSectionScoped cs(list_cs_.get());
- MapItem* map_item = stream_to_vie_renderer_.Find(render_id);
- if (!map_item) {
+ RendererMap::iterator it = stream_to_vie_renderer_.find(render_id);
+ if (it == stream_to_vie_renderer_.end()) {
// No such stream
WEBRTC_TRACE(webrtc::kTraceWarning, webrtc::kTraceVideo, ViEId(engine_id_),
"No renderer for this stream found, channel_id");
return 0;
}
- ViERenderer* vie_renderer = static_cast<ViERenderer*>(map_item->GetItem());
- assert(vie_renderer);
-
// Get the render module pointer for this vie_render object.
- VideoRender& renderer = vie_renderer->RenderModule();
+ VideoRender& renderer = it->second->RenderModule();
// Delete the vie_render.
// This deletes the stream in the render module.
- delete vie_renderer;
+ delete it->second;
// Remove from the stream map.
- stream_to_vie_renderer_.Erase(map_item);
+ stream_to_vie_renderer_.erase(it);
// Check if there are other streams in the module.
if (!use_external_render_module_ &&
@@ -216,15 +210,11 @@ VideoRender* ViERenderManager::FindRenderModule(void* window) {
}
ViERenderer* ViERenderManager::ViERenderPtr(int32_t render_id) const {
- ViERenderer* renderer = NULL;
- MapItem* map_item = stream_to_vie_renderer_.Find(render_id);
- if (!map_item) {
- // No such stream in any renderer.
+ RendererMap::const_iterator it = stream_to_vie_renderer_.find(render_id);
+ if (it == stream_to_vie_renderer_.end())
return NULL;
- }
- renderer = static_cast<ViERenderer*>(map_item->GetItem());
- return renderer;
+ return it->second;
}
} // namespace webrtc
diff --git a/video_engine/vie_render_manager.h b/video_engine/vie_render_manager.h
index 900fcdc7..bc32893a 100644
--- a/video_engine/vie_render_manager.h
+++ b/video_engine/vie_render_manager.h
@@ -11,11 +11,11 @@
#ifndef WEBRTC_VIDEO_ENGINE_VIE_RENDER_MANAGER_H_
#define WEBRTC_VIDEO_ENGINE_VIE_RENDER_MANAGER_H_
+#include <map>
+
#include "webrtc/system_wrappers/interface/list_wrapper.h"
-#include "webrtc/system_wrappers/interface/map_wrapper.h"
#include "webrtc/system_wrappers/interface/scoped_ptr.h"
#include "webrtc/typedefs.h"
-
#include "webrtc/video_engine/vie_manager_base.h"
namespace webrtc {
@@ -55,7 +55,10 @@ class ViERenderManager : private ViEManagerBase {
scoped_ptr<CriticalSectionWrapper> list_cs_;
int32_t engine_id_;
- MapWrapper stream_to_vie_renderer_; // Protected by ViEManagerBase.
+ // Protected by ViEManagerBase.
+ typedef std::map<int32_t, ViERenderer*> RendererMap;
+ RendererMap stream_to_vie_renderer_;
+
ListWrapper render_list_;
bool use_external_render_module_;
};
diff --git a/video_engine/vie_renderer.h b/video_engine/vie_renderer.h
index 04295f71..4f73e518 100644
--- a/video_engine/vie_renderer.h
+++ b/video_engine/vie_renderer.h
@@ -12,7 +12,6 @@
#define WEBRTC_VIDEO_ENGINE_VIE_RENDERER_H_
#include "webrtc/modules/video_render/include/video_render_defines.h"
-#include "webrtc/system_wrappers/interface/map_wrapper.h"
#include "webrtc/system_wrappers/interface/scoped_ptr.h"
#include "webrtc/video_engine/include/vie_render.h"
#include "webrtc/video_engine/vie_frame_provider_base.h"