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