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@4530 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/video_render/video_render_impl.cc b/webrtc/modules/video_render/video_render_impl.cc
index 7dc0dbf..64467c1 100644
--- a/webrtc/modules/video_render/video_render_impl.cc
+++ b/webrtc/modules/video_render/video_render_impl.cc
@@ -96,8 +96,7 @@
                                              void* window,
                                              const bool fullscreen) :
     _id(id), _moduleCrit(*CriticalSectionWrapper::CreateCriticalSection()),
-    _ptrWindow(window), _fullScreen(fullscreen), _ptrRenderer(NULL),
-    _streamRenderMap(*(new MapWrapper()))
+    _ptrWindow(window), _fullScreen(fullscreen), _ptrRenderer(NULL)
 {
 
     // Create platform specific renderer
@@ -222,16 +221,11 @@
 {
     delete &_moduleCrit;
 
-    while (_streamRenderMap.Size() > 0)
-    {
-        MapItem* item = _streamRenderMap.First();
-        IncomingVideoStream* ptrIncomingStream =
-                static_cast<IncomingVideoStream*> (item->GetItem());
-        assert(ptrIncomingStream != NULL);
-        delete ptrIncomingStream;
-        _streamRenderMap.Erase(item);
+    for (IncomingVideoStreamMap::iterator it = _streamRenderMap.begin();
+         it != _streamRenderMap.end();
+         ++it) {
+      delete it->second;
     }
-    delete &_streamRenderMap;
 
     // Delete platform specific renderer
     if (_ptrRenderer)
@@ -410,29 +404,22 @@
     return _id;
 }
 
-uint32_t ModuleVideoRenderImpl::GetIncomingFrameRate(
-                                                           const uint32_t streamId)
-{
-    CriticalSectionScoped cs(&_moduleCrit);
+uint32_t ModuleVideoRenderImpl::GetIncomingFrameRate(const uint32_t streamId) {
+  CriticalSectionScoped cs(&_moduleCrit);
 
-    MapItem* mapItem = _streamRenderMap.Find(streamId);
-    if (mapItem == NULL)
-    {
-        // This stream doesn't exist
-        WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
-                     "%s: stream doesn't exist", __FUNCTION__);
-        return 0;
-    }
-    IncomingVideoStream* incomingStream =
-            static_cast<IncomingVideoStream*> (mapItem->GetItem());
-    if (incomingStream == NULL)
-    {
-        // This should never happen
-        assert(false);
-        _streamRenderMap.Erase(mapItem);
-        return 0;
-    }
-    return incomingStream->IncomingRate();
+  IncomingVideoStreamMap::iterator it = _streamRenderMap.find(streamId);
+
+  if (it == _streamRenderMap.end()) {
+    // This stream doesn't exist
+    WEBRTC_TRACE(kTraceError,
+                 kTraceVideoRenderer,
+                 _id,
+                 "%s: stream doesn't exist",
+                 __FUNCTION__);
+    return 0;
+  }
+  assert(it->second != NULL);
+  return it->second->IncomingRate();
 }
 
 VideoRenderCallback*
@@ -452,8 +439,7 @@
         return NULL;
     }
 
-    if (_streamRenderMap.Find(streamId) != NULL)
-    {
+    if (_streamRenderMap.find(streamId) != _streamRenderMap.end()) {
         // The stream already exists...
         WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
                      "%s: stream already exists", __FUNCTION__);
@@ -495,7 +481,7 @@
             ptrIncomingStream->ModuleCallback();
 
     // Store the stream
-    _streamRenderMap.Insert(streamId, ptrIncomingStream);
+    _streamRenderMap[streamId] = ptrIncomingStream;
 
     return moduleCallback;
 }
@@ -512,56 +498,52 @@
         return -1;
     }
 
-    MapItem* mapItem = _streamRenderMap.Find(streamId);
-    if (!mapItem)
+    IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
+    if (item == _streamRenderMap.end())
     {
         WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
                      "%s: stream doesn't exist", __FUNCTION__);
         return -1;
     }
 
-    IncomingVideoStream* ptrIncomingStream =
-            static_cast<IncomingVideoStream*> (mapItem->GetItem());
-    delete ptrIncomingStream;
-    ptrIncomingStream = NULL;
+    delete item->second;
+
     _ptrRenderer->DeleteIncomingRenderStream(streamId);
-    _streamRenderMap.Erase(mapItem);
+
+    _streamRenderMap.erase(item);
 
     return 0;
 }
 
 int32_t ModuleVideoRenderImpl::AddExternalRenderCallback(
-                                                               const uint32_t streamId,
-                                                               VideoRenderCallback* renderObject)
-{
+    const uint32_t streamId,
+    VideoRenderCallback* renderObject) {
     CriticalSectionScoped cs(&_moduleCrit);
 
-    MapItem* mapItem = _streamRenderMap.Find(streamId);
-    if (!mapItem)
+    IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
+
+    if (item == _streamRenderMap.end())
     {
         WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
                      "%s: stream doesn't exist", __FUNCTION__);
         return -1;
     }
 
-    IncomingVideoStream* ptrIncomingStream =
-            static_cast<IncomingVideoStream*> (mapItem->GetItem());
-    if (!ptrIncomingStream) {
+    if (item->second == NULL) {
         WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
                      "%s: could not get stream", __FUNCTION__);
         return -1;
     }
-    return ptrIncomingStream->SetExternalCallback(renderObject);
+    return item->second->SetExternalCallback(renderObject);
 }
 
 int32_t ModuleVideoRenderImpl::GetIncomingRenderStreamProperties(
-                                                                       const uint32_t streamId,
-                                                                       uint32_t& zOrder,
-                                                                       float& left,
-                                                                       float& top,
-                                                                       float& right,
-                                                                       float& bottom) const
-{
+    const uint32_t streamId,
+    uint32_t& zOrder,
+    float& left,
+    float& top,
+    float& right,
+    float& bottom) const {
     CriticalSectionScoped cs(&_moduleCrit);
 
     if (!_ptrRenderer)
@@ -580,27 +562,20 @@
 {
     CriticalSectionScoped cs(&_moduleCrit);
 
-    return (uint32_t) _streamRenderMap.Size();
+    return static_cast<uint32_t>(_streamRenderMap.size());
 }
 
 bool ModuleVideoRenderImpl::HasIncomingRenderStream(
-                                                    const uint32_t streamId) const
-{
-    CriticalSectionScoped cs(&_moduleCrit);
+    const uint32_t streamId) const {
+  CriticalSectionScoped cs(&_moduleCrit);
 
-    bool hasStream = false;
-    if (_streamRenderMap.Find(streamId) != NULL)
-    {
-        hasStream = true;
-    }
-    return hasStream;
+  return _streamRenderMap.find(streamId) != _streamRenderMap.end();
 }
 
 int32_t ModuleVideoRenderImpl::RegisterRawFrameCallback(
-                                                              const uint32_t streamId,
-                                                              VideoRenderCallback* callbackObj)
-{
-    return -1;
+    const uint32_t streamId,
+    VideoRenderCallback* callbackObj) {
+  return -1;
 }
 
 int32_t ModuleVideoRenderImpl::StartRender(const uint32_t streamId)
@@ -615,15 +590,14 @@
     }
 
     // Start the stream
-    MapItem* item = _streamRenderMap.Find(streamId);
-    if (item == NULL)
+    IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
+
+    if (item == _streamRenderMap.end())
     {
         return -1;
     }
 
-    IncomingVideoStream* incomingStream =
-            static_cast<IncomingVideoStream*> (item->GetItem());
-    if (incomingStream->Start() == -1)
+    if (item->second->Start() == -1)
     {
         return -1;
     }
@@ -648,15 +622,14 @@
     }
 
     // Stop the incoming stream
-    MapItem* item = _streamRenderMap.Find(streamId);
-    if (item == NULL)
+    IncomingVideoStreamMap::iterator item = _streamRenderMap.find(streamId);
+
+    if (item == _streamRenderMap.end())
     {
         return -1;
     }
 
-    IncomingVideoStream* incomingStream =
-            static_cast<IncomingVideoStream*> (item->GetItem());
-    if (incomingStream->Stop() == -1)
+    if (item->second->Stop() == -1)
     {
         return -1;
     }
@@ -668,21 +641,15 @@
 {
     CriticalSectionScoped cs(&_moduleCrit);
 
-    int32_t error = 0;
-
-    // Loop through all incoming streams and stop them
-    MapItem* item = _streamRenderMap.First();
-    while (item)
-    {
-        IncomingVideoStream* incomingStream =
-                static_cast<IncomingVideoStream*> (item->GetItem());
-        if (incomingStream->Reset() == -1)
-        {
-            error = -1;
-        }
-        item = _streamRenderMap.Next(item);
+    int32_t ret = 0;
+    // Loop through all incoming streams and reset them
+    for (IncomingVideoStreamMap::iterator it = _streamRenderMap.begin();
+         it != _streamRenderMap.end();
+         ++it) {
+      if (it->second->Reset() == -1)
+        ret = -1;
     }
-    return error;
+    return ret;
 }
 
 RawVideoType ModuleVideoRenderImpl::PreferredVideoType() const
@@ -830,24 +797,18 @@
         return -1;
     }
 
-    MapItem *item = _streamRenderMap.Find(streamId);
-    if (item == NULL)
+    IncomingVideoStreamMap::const_iterator item =
+        _streamRenderMap.find(streamId);
+    if (item == _streamRenderMap.end())
     {
         // This stream doesn't exist
         WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
                      "%s: stream doesn't exist", __FUNCTION__);
         return 0;
     }
-    IncomingVideoStream* incomingStream =
-            static_cast<IncomingVideoStream*> (item->GetItem());
-    if (incomingStream == NULL)
-    {
-        // This should never happen
-        assert(false);
-        _streamRenderMap.Erase(item);
-        return 0;
-    }
-    return incomingStream->GetLastRenderedFrame(frame);
+
+    assert(item->second != NULL);
+    return item->second->GetLastRenderedFrame(frame);
 }
 
 int32_t ModuleVideoRenderImpl::SetExpectedRenderDelay(
@@ -860,8 +821,9 @@
     return false;
   }
 
-  MapItem *item = _streamRenderMap.Find(stream_id);
-  if (item == NULL) {
+  IncomingVideoStreamMap::const_iterator item =
+      _streamRenderMap.find(stream_id);
+  if (item == _streamRenderMap.end()) {
     // This stream doesn't exist
     WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
                  "%s(%u, %d): stream doesn't exist", __FUNCTION__, stream_id,
@@ -869,16 +831,8 @@
     return -1;
   }
 
-  IncomingVideoStream* incoming_stream =
-      static_cast<IncomingVideoStream*> (item->GetItem());
-  if (incoming_stream == NULL) {
-      // This should never happen
-      assert(false);
-      _streamRenderMap.Erase(item);
-      return 0;
-  }
-
-  return incoming_stream->SetExpectedRenderDelay(delay_ms);
+  assert(item->second != NULL);
+  return item->second->SetExpectedRenderDelay(delay_ms);
 }
 
 int32_t ModuleVideoRenderImpl::ConfigureRenderer(
@@ -914,24 +868,17 @@
         return -1;
     }
 
-    MapItem *item = _streamRenderMap.Find(streamId);
-    if (item == NULL)
+    IncomingVideoStreamMap::const_iterator item =
+        _streamRenderMap.find(streamId);
+    if (item == _streamRenderMap.end())
     {
         // This stream doesn't exist
         WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
                      "%s: stream doesn't exist", __FUNCTION__);
         return -1;
     }
-    IncomingVideoStream* incomingStream =
-            static_cast<IncomingVideoStream*> (item->GetItem());
-    if (incomingStream == NULL)
-    {
-        // This should never happen
-        assert(false);
-        _streamRenderMap.Erase(item);
-        return 0;
-    }
-    return incomingStream->SetStartImage(videoFrame);
+    assert (item->second != NULL);
+    return item->second->SetStartImage(videoFrame);
 
 }
 
@@ -949,24 +896,17 @@
         return -1;
     }
 
-    MapItem *item = _streamRenderMap.Find(streamId);
-    if (item == NULL)
+    IncomingVideoStreamMap::const_iterator item =
+        _streamRenderMap.find(streamId);
+    if (item == _streamRenderMap.end())
     {
         // This stream doesn't exist
         WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
                      "%s: stream doesn't exist", __FUNCTION__);
         return -1;
     }
-    IncomingVideoStream* incomingStream =
-            static_cast<IncomingVideoStream*> (item->GetItem());
-    if (incomingStream == NULL)
-    {
-        // This should never happen
-        assert(false);
-        _streamRenderMap.Erase(item);
-        return 0;
-    }
-    return incomingStream->SetTimeoutImage(videoFrame, timeout);
+    assert(item->second != NULL);
+    return item->second->SetTimeoutImage(videoFrame, timeout);
 }
 
 int32_t ModuleVideoRenderImpl::MirrorRenderStream(const int renderId,
@@ -983,25 +923,18 @@
         return -1;
     }
 
-    MapItem *item = _streamRenderMap.Find(renderId);
-    if (item == NULL)
+    IncomingVideoStreamMap::const_iterator item =
+        _streamRenderMap.find(renderId);
+    if (item == _streamRenderMap.end())
     {
         // This stream doesn't exist
         WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, _id,
                      "%s: stream doesn't exist", __FUNCTION__);
         return 0;
     }
-    IncomingVideoStream* incomingStream =
-            static_cast<IncomingVideoStream*> (item->GetItem());
-    if (incomingStream == NULL)
-    {
-        // This should never happen
-        assert(false);
-        _streamRenderMap.Erase(item);
-        return 0;
-    }
+    assert(item->second != NULL);
 
-    return incomingStream->EnableMirroring(enable, mirrorXAxis, mirrorYAxis);
+    return item->second->EnableMirroring(enable, mirrorXAxis, mirrorYAxis);
 }
 
 }  // namespace webrtc