diff options
author | pbos@webrtc.org <pbos@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2013-08-12 19:51:57 +0000 |
---|---|---|
committer | pbos@webrtc.org <pbos@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2013-08-12 19:51:57 +0000 |
commit | 52c5c708de6f5bcf9c2a58cece45013aa5efacd7 (patch) | |
tree | c4334f3628c4a1dd2a216b6afb1285976f3760d4 /video_engine | |
parent | 8c8c87fffe762f02d64aba9c786a37450927ebeb (diff) | |
download | webrtc-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.cc | 1 | ||||
-rw-r--r-- | video_engine/vie_channel_manager.h | 1 | ||||
-rw-r--r-- | video_engine/vie_input_manager.cc | 89 | ||||
-rw-r--r-- | video_engine/vie_input_manager.h | 7 | ||||
-rw-r--r-- | video_engine/vie_render_manager.cc | 42 | ||||
-rw-r--r-- | video_engine/vie_render_manager.h | 9 | ||||
-rw-r--r-- | video_engine/vie_renderer.h | 1 |
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" |