Removes usage of ListWrapper from several files.
BUG=2164
R=andrew@webrtc.org, pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/6269004
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@5373 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/modules/audio_conference_mixer/source/memory_pool_posix.h b/modules/audio_conference_mixer/source/memory_pool_posix.h
index 6d4dccf..04e7cd5 100644
--- a/modules/audio_conference_mixer/source/memory_pool_posix.h
+++ b/modules/audio_conference_mixer/source/memory_pool_posix.h
@@ -12,9 +12,9 @@
#define WEBRTC_MODULES_AUDIO_CONFERENCE_MIXER_SOURCE_MEMORY_POOL_GENERIC_H_
#include <assert.h>
+#include <list>
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
#include "webrtc/typedefs.h"
namespace webrtc {
@@ -40,7 +40,7 @@
bool _terminate;
- ListWrapper _memoryPool;
+ std::list<MemoryType*> _memoryPool;
uint32_t _initialPoolSize;
uint32_t _createdMemory;
@@ -51,7 +51,6 @@
MemoryPoolImpl<MemoryType>::MemoryPoolImpl(int32_t initialPoolSize)
: _crit(CriticalSectionWrapper::CreateCriticalSection()),
_terminate(false),
- _memoryPool(),
_initialPoolSize(initialPoolSize),
_createdMemory(0),
_outstandingMemory(0)
@@ -76,20 +75,17 @@
memory = NULL;
return -1;
}
- ListItem* item = _memoryPool.First();
- if(item == NULL)
- {
+ if (_memoryPool.empty()) {
// _memoryPool empty create new memory.
CreateMemory(_initialPoolSize);
- item = _memoryPool.First();
- if(item == NULL)
+ if(_memoryPool.empty())
{
memory = NULL;
return -1;
}
}
- memory = static_cast<MemoryType*>(item->GetItem());
- _memoryPool.Erase(item);
+ memory = _memoryPool.front();
+ _memoryPool.pop_front();
_outstandingMemory++;
return 0;
}
@@ -103,7 +99,7 @@
}
CriticalSectionScoped cs(_crit);
_outstandingMemory--;
- if(_memoryPool.GetSize() > (_initialPoolSize << 1))
+ if(_memoryPool.size() > (_initialPoolSize << 1))
{
// Reclaim memory if less than half of the pool is unused.
_createdMemory--;
@@ -111,7 +107,7 @@
memory = NULL;
return 0;
}
- _memoryPool.PushBack(static_cast<void*>(memory));
+ _memoryPool.push_back(memory);
memory = NULL;
return 0;
}
@@ -127,21 +123,15 @@
int32_t MemoryPoolImpl<MemoryType>::Terminate()
{
CriticalSectionScoped cs(_crit);
- assert(_createdMemory == _outstandingMemory + _memoryPool.GetSize());
+ assert(_createdMemory == _outstandingMemory + _memoryPool.size());
_terminate = true;
// Reclaim all memory.
while(_createdMemory > 0)
{
- ListItem* item = _memoryPool.First();
- if(item == NULL)
- {
- // There is memory that hasn't been returned yet.
- return -1;
- }
- MemoryType* memory = static_cast<MemoryType*>(item->GetItem());
+ MemoryType* memory = _memoryPool.front();
+ _memoryPool.pop_front();
delete memory;
- _memoryPool.Erase(item);
_createdMemory--;
}
return 0;
@@ -158,7 +148,7 @@
{
return -1;
}
- _memoryPool.PushBack(static_cast<void*>(memory));
+ _memoryPool.push_back(memory);
_createdMemory++;
}
return 0;
diff --git a/modules/audio_device/test/func_test_manager.cc b/modules/audio_device/test/func_test_manager.cc
index 12a4bad..ccbcc2a 100644
--- a/modules/audio_device/test/func_test_manager.cc
+++ b/modules/audio_device/test/func_test_manager.cc
@@ -37,15 +37,6 @@
const char* RecordedMicrophoneAGCFile = "recorded_microphone_AGC_mono_48.pcm";
const char* RecordedSpeakerFile = "recorded_speaker_48.pcm";
-struct AudioPacket
-{
- uint8_t dataBuffer[4 * 960];
- uint16_t nSamples;
- uint16_t nBytesPerSample;
- uint8_t nChannels;
- uint32_t samplesPerSec;
-};
-
// Helper functions
#if !defined(WEBRTC_IOS)
char* GetFilename(char* filename)
@@ -103,8 +94,7 @@
_loopBackMeasurements(false),
_playFile(*FileWrapper::Create()),
_recCount(0),
- _playCount(0),
- _audioList()
+ _playCount(0)
{
_resampler.Reset(48000, 48000, kResamplerSynchronousStereo);
}
@@ -115,18 +105,9 @@
_playFile.CloseFile();
delete &_playFile;
- while (!_audioList.Empty())
- {
- ListItem* item = _audioList.First();
- if (item)
- {
- AudioPacket* packet = static_cast<AudioPacket*> (item->GetItem());
- if (packet)
- {
- delete packet;
- }
- }
- _audioList.PopFront();
+ for (AudioPacketList::iterator iter = _audioList.begin();
+ iter != _audioList.end(); ++iter) {
+ delete *iter;
}
}
@@ -152,19 +133,11 @@
{
_fullDuplex = enable;
- while (!_audioList.Empty())
- {
- ListItem* item = _audioList.First();
- if (item)
- {
- AudioPacket* packet = static_cast<AudioPacket*> (item->GetItem());
- if (packet)
- {
- delete packet;
- }
- }
- _audioList.PopFront();
+ for (AudioPacketList::iterator iter = _audioList.begin();
+ iter != _audioList.end(); ++iter) {
+ delete *iter;
}
+ _audioList.clear();
}
int32_t AudioTransportImpl::RecordedDataIsAvailable(
@@ -179,7 +152,7 @@
const bool keyPressed,
uint32_t& newMicLevel)
{
- if (_fullDuplex && _audioList.GetSize() < 15)
+ if (_fullDuplex && _audioList.size() < 15)
{
AudioPacket* packet = new AudioPacket();
memcpy(packet->dataBuffer, audioSamples, nSamples * nBytesPerSample);
@@ -187,7 +160,7 @@
packet->nBytesPerSample = nBytesPerSample;
packet->nChannels = nChannels;
packet->samplesPerSec = samplesPerSec;
- _audioList.PushBack(packet);
+ _audioList.push_back(packet);
}
_recCount++;
@@ -323,14 +296,14 @@
{
if (_fullDuplex)
{
- if (_audioList.Empty())
+ if (_audioList.empty())
{
// use zero stuffing when not enough data
memset(audioSamples, 0, nBytesPerSample * nSamples);
} else
{
- ListItem* item = _audioList.First();
- AudioPacket* packet = static_cast<AudioPacket*> (item->GetItem());
+ AudioPacket* packet = _audioList.front();
+ _audioList.pop_front();
if (packet)
{
int ret(0);
@@ -441,7 +414,6 @@
nSamplesOut = nSamples;
delete packet;
}
- _audioList.PopFront();
}
} // if (_fullDuplex)
@@ -531,12 +503,12 @@
{
uint16_t recDelayMS(0);
uint16_t playDelayMS(0);
- uint32_t nItemsInList(0);
+ size_t nItemsInList(0);
- nItemsInList = _audioList.GetSize();
+ nItemsInList = _audioList.size();
EXPECT_EQ(0, _audioDevice->RecordingDelay(&recDelayMS));
EXPECT_EQ(0, _audioDevice->PlayoutDelay(&playDelayMS));
- TEST_LOG("Delay (rec+play)+buf: %3u (%3u+%3u)+%3u [ms]\n",
+ TEST_LOG("Delay (rec+play)+buf: %3zu (%3u+%3u)+%3zu [ms]\n",
recDelayMS + playDelayMS + 10 * (nItemsInList + 1),
recDelayMS, playDelayMS, 10 * (nItemsInList + 1));
diff --git a/modules/audio_device/test/func_test_manager.h b/modules/audio_device/test/func_test_manager.h
index f8bacb2..f7a150b 100644
--- a/modules/audio_device/test/func_test_manager.h
+++ b/modules/audio_device/test/func_test_manager.h
@@ -13,13 +13,13 @@
#include "webrtc/modules/audio_device/audio_device_utility.h"
+#include <list>
#include <string>
#include "webrtc/common_audio/resampler/include/resampler.h"
#include "webrtc/modules/audio_device/include/audio_device.h"
#include "webrtc/modules/audio_device/test/audio_device_test_defines.h"
#include "webrtc/system_wrappers/interface/file_wrapper.h"
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
#include "webrtc/typedefs.h"
#if defined(WEBRTC_IOS) || defined(ANDROID)
@@ -60,6 +60,15 @@
TTTest = 66,
};
+struct AudioPacket
+{
+ uint8_t dataBuffer[4 * 960];
+ uint16_t nSamples;
+ uint16_t nBytesPerSample;
+ uint8_t nChannels;
+ uint32_t samplesPerSec;
+};
+
class ProcessThread;
namespace webrtc
@@ -165,6 +174,7 @@
;
private:
+ typedef std::list<AudioPacket*> AudioPacketList;
AudioDeviceModule* _audioDevice;
bool _playFromFile;
@@ -181,8 +191,7 @@
uint32_t _recCount;
uint32_t _playCount;
-
- ListWrapper _audioList;
+ AudioPacketList _audioList;
Resampler _resampler;
};
diff --git a/modules/media_file/source/avi_file.cc b/modules/media_file/source/avi_file.cc
index 92c51ac..19baaa3 100644
--- a/modules/media_file/source/avi_file.cc
+++ b/modules/media_file/source/avi_file.cc
@@ -23,7 +23,6 @@
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/file_wrapper.h"
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
#include "webrtc/system_wrappers/interface/trace.h"
// http://msdn2.microsoft.com/en-us/library/ms779636.aspx
@@ -178,8 +177,7 @@
_videoCodecConfigParamsLength(0),
_videoStreamDataChunkPrefix(0),
_audioStreamDataChunkPrefix(0),
- _created(false),
- _indexList(new ListWrapper())
+ _created(false)
{
ResetComplexMembers();
}
@@ -188,7 +186,6 @@
{
Close();
- delete _indexList;
delete[] _videoCodecConfigParams;
delete _crit;
}
@@ -1712,21 +1709,11 @@
void AviFile::ClearIndexList()
{
- while (!_indexList->Empty())
- {
- ListItem* listItem = _indexList->First();
- if (listItem == 0)
- {
- break;
- }
-
- AVIINDEXENTRY* item = static_cast<AVIINDEXENTRY*>(listItem->GetItem());
- if (item != NULL)
- {
- delete item;
- }
- _indexList->PopFront();
- }
+ for (IndexList::iterator iter = _indexList.begin();
+ iter != _indexList.end(); ++iter) {
+ delete *iter;
+ }
+ _indexList.clear();
}
void AviFile::AddChunkToIndexList(uint32_t inChunkId,
@@ -1734,7 +1721,7 @@
uint32_t inOffset,
uint32_t inSize)
{
- _indexList->PushBack(new AVIINDEXENTRY(inChunkId, inFlags, inOffset,
+ _indexList.push_back(new AVIINDEXENTRY(inChunkId, inFlags, inOffset,
inSize));
}
@@ -1747,19 +1734,13 @@
_bytesWritten += PutLE32(0);
const size_t idxChunkSize = _bytesWritten;
- for (ListItem* listItem = _indexList->First();
- listItem != NULL;
- listItem = _indexList->Next(listItem))
- {
- const AVIINDEXENTRY* item =
- static_cast<AVIINDEXENTRY*>(listItem->GetItem());
- if (item != NULL)
- {
- _bytesWritten += PutLE32(item->ckid);
- _bytesWritten += PutLE32(item->dwFlags);
- _bytesWritten += PutLE32(item->dwChunkOffset);
- _bytesWritten += PutLE32(item->dwChunkLength);
- }
+ for (IndexList::iterator iter = _indexList.begin();
+ iter != _indexList.end(); ++iter) {
+ const AVIINDEXENTRY* item = *iter;
+ _bytesWritten += PutLE32(item->ckid);
+ _bytesWritten += PutLE32(item->dwFlags);
+ _bytesWritten += PutLE32(item->dwChunkOffset);
+ _bytesWritten += PutLE32(item->dwChunkLength);
}
PutLE32LengthFromCurrent(static_cast<long>(idxChunkSize));
}
diff --git a/modules/media_file/source/avi_file.h b/modules/media_file/source/avi_file.h
index a55fc18..d8b1062 100644
--- a/modules/media_file/source/avi_file.h
+++ b/modules/media_file/source/avi_file.h
@@ -14,12 +14,12 @@
#define WEBRTC_MODULES_MEDIA_FILE_SOURCE_AVI_FILE_H_
#include <stdio.h>
+#include <list>
#include "webrtc/typedefs.h"
namespace webrtc {
class CriticalSectionWrapper;
-class ListWrapper;
struct AVISTREAMHEADER
{
@@ -194,6 +194,7 @@
void WriteIndex();
private:
+ typedef std::list<AVIINDEXENTRY*> IndexList;
struct AVIMAINHEADER
{
AVIMAINHEADER();
@@ -269,7 +270,7 @@
uint32_t _audioStreamDataChunkPrefix;
bool _created;
- ListWrapper* _indexList; // Elements are of type AVIINDEXENTRY.
+ IndexList _indexList;
};
} // namespace webrtc
diff --git a/modules/utility/interface/process_thread.h b/modules/utility/interface/process_thread.h
index cdbb4d3..4db92a3 100644
--- a/modules/utility/interface/process_thread.h
+++ b/modules/utility/interface/process_thread.h
@@ -25,7 +25,7 @@
virtual int32_t Start() = 0;
virtual int32_t Stop() = 0;
- virtual int32_t RegisterModule(const Module* module) = 0;
+ virtual int32_t RegisterModule(Module* module) = 0;
virtual int32_t DeRegisterModule(const Module* module) = 0;
protected:
virtual ~ProcessThread();
diff --git a/modules/utility/source/file_recorder_impl.cc b/modules/utility/source/file_recorder_impl.cc
index 16faa58..032869c 100644
--- a/modules/utility/source/file_recorder_impl.cc
+++ b/modules/utility/source/file_recorder_impl.cc
@@ -342,31 +342,6 @@
#ifdef WEBRTC_MODULE_UTILITY_VIDEO
-class AudioFrameFileInfo
-{
- public:
- AudioFrameFileInfo(const int8_t* audioData,
- const uint16_t audioSize,
- const uint16_t audioMS,
- const TickTime& playoutTS)
- : _audioData(), _audioSize(audioSize), _audioMS(audioMS),
- _playoutTS(playoutTS)
- {
- if(audioSize > MAX_AUDIO_BUFFER_IN_BYTES)
- {
- assert(false);
- _audioSize = 0;
- return;
- }
- memcpy(_audioData, audioData, audioSize);
- };
- // TODO (hellner): either turn into a struct or provide get/set functions.
- int8_t _audioData[MAX_AUDIO_BUFFER_IN_BYTES];
- uint16_t _audioSize;
- uint16_t _audioMS;
- TickTime _playoutTS;
-};
-
AviRecorder::AviRecorder(uint32_t instanceID, FileFormats fileFormat)
: FileRecorderImpl(instanceID, fileFormat),
_videoOnly(false),
@@ -545,49 +520,39 @@
{
// Syncronize audio to the current frame to process by throwing away
// audio samples with older timestamp than the video frame.
- uint32_t numberOfAudioElements =
- _audioFramesToWrite.GetSize();
- for (uint32_t i = 0; i < numberOfAudioElements; ++i)
+ size_t numberOfAudioElements =
+ _audioFramesToWrite.size();
+ for (size_t i = 0; i < numberOfAudioElements; ++i)
{
- AudioFrameFileInfo* frameInfo =
- (AudioFrameFileInfo*)_audioFramesToWrite.First()->GetItem();
- if(frameInfo)
+ AudioFrameFileInfo* frameInfo = _audioFramesToWrite.front();
+ if(TickTime::TicksToMilliseconds(
+ frameInfo->_playoutTS.Ticks()) <
+ frameToProcess->render_time_ms())
{
- if(TickTime::TicksToMilliseconds(
- frameInfo->_playoutTS.Ticks()) <
- frameToProcess->render_time_ms())
- {
- delete frameInfo;
- _audioFramesToWrite.PopFront();
- } else
- {
- break;
- }
+ delete frameInfo;
+ _audioFramesToWrite.pop_front();
+ } else
+ {
+ break;
}
}
}
}
// Write all audio up to current timestamp.
int32_t error = 0;
- uint32_t numberOfAudioElements = _audioFramesToWrite.GetSize();
- for (uint32_t i = 0; i < numberOfAudioElements; ++i)
+ size_t numberOfAudioElements = _audioFramesToWrite.size();
+ for (size_t i = 0; i < numberOfAudioElements; ++i)
{
- AudioFrameFileInfo* frameInfo =
- (AudioFrameFileInfo*)_audioFramesToWrite.First()->GetItem();
- if(frameInfo)
+ AudioFrameFileInfo* frameInfo = _audioFramesToWrite.front();
+ if((TickTime::Now() - frameInfo->_playoutTS).Milliseconds() > 0)
{
- if((TickTime::Now() - frameInfo->_playoutTS).Milliseconds() > 0)
- {
- _moduleFile->IncomingAudioData(frameInfo->_audioData,
- frameInfo->_audioSize);
- _writtenAudioMS += frameInfo->_audioMS;
- delete frameInfo;
- _audioFramesToWrite.PopFront();
- } else {
- break;
- }
+ _moduleFile->IncomingAudioData(frameInfo->_audioData,
+ frameInfo->_audioSize);
+ _writtenAudioMS += frameInfo->_audioMS;
+ delete frameInfo;
+ _audioFramesToWrite.pop_front();
} else {
- _audioFramesToWrite.PopFront();
+ break;
}
}
return error;
@@ -762,7 +727,7 @@
{
return -1;
}
- if (_audioFramesToWrite.GetSize() > kMaxAudioBufferQueueLength)
+ if (_audioFramesToWrite.size() > kMaxAudioBufferQueueLength)
{
StopRecording();
return -1;
@@ -771,15 +736,15 @@
if(playoutTS)
{
- _audioFramesToWrite.PushBack(new AudioFrameFileInfo(audioBuffer,
- bufferLength,
- millisecondsOfData,
- *playoutTS));
+ _audioFramesToWrite.push_back(new AudioFrameFileInfo(audioBuffer,
+ bufferLength,
+ millisecondsOfData,
+ *playoutTS));
} else {
- _audioFramesToWrite.PushBack(new AudioFrameFileInfo(audioBuffer,
- bufferLength,
- millisecondsOfData,
- TickTime::Now()));
+ _audioFramesToWrite.push_back(new AudioFrameFileInfo(audioBuffer,
+ bufferLength,
+ millisecondsOfData,
+ TickTime::Now()));
}
_timeEvent.Set();
return 0;
diff --git a/modules/utility/source/file_recorder_impl.h b/modules/utility/source/file_recorder_impl.h
index 0b7290e..53fd26b 100644
--- a/modules/utility/source/file_recorder_impl.h
+++ b/modules/utility/source/file_recorder_impl.h
@@ -15,6 +15,8 @@
#ifndef WEBRTC_MODULES_UTILITY_SOURCE_FILE_RECORDER_IMPL_H_
#define WEBRTC_MODULES_UTILITY_SOURCE_FILE_RECORDER_IMPL_H_
+#include <list>
+
#include "webrtc/common_audio/resampler/include/resampler.h"
#include "webrtc/common_types.h"
#include "webrtc/engine_configurations.h"
@@ -40,6 +42,8 @@
enum { MAX_AUDIO_BUFFER_IN_BYTES = MAX_AUDIO_BUFFER_IN_SAMPLES*2};
enum { kMaxAudioBufferQueueLength = 100 };
+class CriticalSectionWrapper;
+
class FileRecorderImpl : public FileRecorder
{
public:
@@ -103,6 +107,31 @@
#ifdef WEBRTC_MODULE_UTILITY_VIDEO
+class AudioFrameFileInfo
+{
+ public:
+ AudioFrameFileInfo(const int8_t* audioData,
+ const uint16_t audioSize,
+ const uint16_t audioMS,
+ const TickTime& playoutTS)
+ : _audioData(), _audioSize(audioSize), _audioMS(audioMS),
+ _playoutTS(playoutTS)
+ {
+ if(audioSize > MAX_AUDIO_BUFFER_IN_BYTES)
+ {
+ assert(false);
+ _audioSize = 0;
+ return;
+ }
+ memcpy(_audioData, audioData, audioSize);
+ };
+ // TODO (hellner): either turn into a struct or provide get/set functions.
+ int8_t _audioData[MAX_AUDIO_BUFFER_IN_BYTES];
+ uint16_t _audioSize;
+ uint16_t _audioMS;
+ TickTime _playoutTS;
+};
+
class AviRecorder : public FileRecorderImpl
{
public:
@@ -126,6 +155,7 @@
uint16_t millisecondsOfData,
const TickTime* playoutTS);
private:
+ typedef std::list<AudioFrameFileInfo*> AudioInfoList;
static bool Run(ThreadObj threadObj);
bool Process();
@@ -141,7 +171,7 @@
VideoCodec _videoCodecInst;
bool _videoOnly;
- ListWrapper _audioFramesToWrite;
+ AudioInfoList _audioFramesToWrite;
bool _firstAudioFrameReceived;
VideoFramesQueue* _videoFramesQueue;
diff --git a/modules/utility/source/process_thread_impl.cc b/modules/utility/source/process_thread_impl.cc
index 08979d2..dd5c42c 100644
--- a/modules/utility/source/process_thread_impl.cc
+++ b/modules/utility/source/process_thread_impl.cc
@@ -87,25 +87,23 @@
return 0;
}
-int32_t ProcessThreadImpl::RegisterModule(const Module* module)
+int32_t ProcessThreadImpl::RegisterModule(Module* module)
{
CriticalSectionScoped lock(_critSectModules);
// Only allow module to be registered once.
- ListItem* item = _modules.First();
- for(uint32_t i = 0; i < _modules.GetSize() && item; i++)
- {
- if(module == item->GetItem())
+ for (ModuleList::iterator iter = _modules.begin();
+ iter != _modules.end(); ++iter) {
+ if(module == *iter)
{
return -1;
}
- item = _modules.Next(item);
}
- _modules.PushFront(module);
+ _modules.push_front(module);
WEBRTC_TRACE(kTraceInfo, kTraceUtility, -1,
"number of registered modules has increased to %d",
- _modules.GetSize());
+ _modules.size());
// Wake the thread calling ProcessThreadImpl::Process() to update the
// waiting time. The waiting time for the just registered module may be
// shorter than all other registered modules.
@@ -116,19 +114,16 @@
int32_t ProcessThreadImpl::DeRegisterModule(const Module* module)
{
CriticalSectionScoped lock(_critSectModules);
-
- ListItem* item = _modules.First();
- for(uint32_t i = 0; i < _modules.GetSize() && item; i++)
- {
- if(module == item->GetItem())
+ for (ModuleList::iterator iter = _modules.begin();
+ iter != _modules.end(); ++iter) {
+ if(module == *iter)
{
- int res = _modules.Erase(item);
+ _modules.erase(iter);
WEBRTC_TRACE(kTraceInfo, kTraceUtility, -1,
"number of registered modules has decreased to %d",
- _modules.GetSize());
- return res;
+ _modules.size());
+ return 0;
}
- item = _modules.Next(item);
}
return -1;
}
@@ -145,16 +140,13 @@
int32_t minTimeToNext = 100;
{
CriticalSectionScoped lock(_critSectModules);
- ListItem* item = _modules.First();
- for(uint32_t i = 0; i < _modules.GetSize() && item; i++)
- {
- int32_t timeToNext =
- static_cast<Module*>(item->GetItem())->TimeUntilNextProcess();
+ for (ModuleList::iterator iter = _modules.begin();
+ iter != _modules.end(); ++iter) {
+ int32_t timeToNext = (*iter)->TimeUntilNextProcess();
if(minTimeToNext > timeToNext)
{
minTimeToNext = timeToNext;
}
- item = _modules.Next(item);
}
}
@@ -172,16 +164,13 @@
}
{
CriticalSectionScoped lock(_critSectModules);
- ListItem* item = _modules.First();
- for(uint32_t i = 0; i < _modules.GetSize() && item; i++)
- {
- int32_t timeToNext =
- static_cast<Module*>(item->GetItem())->TimeUntilNextProcess();
+ for (ModuleList::iterator iter = _modules.begin();
+ iter != _modules.end(); ++iter) {
+ int32_t timeToNext = (*iter)->TimeUntilNextProcess();
if(timeToNext < 1)
{
- static_cast<Module*>(item->GetItem())->Process();
+ (*iter)->Process();
}
- item = _modules.Next(item);
}
}
return true;
diff --git a/modules/utility/source/process_thread_impl.h b/modules/utility/source/process_thread_impl.h
index d1913c4..14fbc18 100644
--- a/modules/utility/source/process_thread_impl.h
+++ b/modules/utility/source/process_thread_impl.h
@@ -11,10 +11,11 @@
#ifndef WEBRTC_MODULES_UTILITY_SOURCE_PROCESS_THREAD_IMPL_H_
#define WEBRTC_MODULES_UTILITY_SOURCE_PROCESS_THREAD_IMPL_H_
+#include <list>
+
#include "webrtc/modules/utility/interface/process_thread.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/event_wrapper.h"
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
#include "webrtc/system_wrappers/interface/thread_wrapper.h"
#include "webrtc/typedefs.h"
@@ -28,7 +29,7 @@
virtual int32_t Start();
virtual int32_t Stop();
- virtual int32_t RegisterModule(const Module* module);
+ virtual int32_t RegisterModule(Module* module);
virtual int32_t DeRegisterModule(const Module* module);
protected:
@@ -37,9 +38,10 @@
bool Process();
private:
+ typedef std::list<Module*> ModuleList;
EventWrapper& _timeEvent;
CriticalSectionWrapper* _critSectModules;
- ListWrapper _modules;
+ ModuleList _modules;
ThreadWrapper* _thread;
};
} // namespace webrtc
diff --git a/modules/utility/source/video_frames_queue.cc b/modules/utility/source/video_frames_queue.cc
index d3d37be..53b4465 100644
--- a/modules/utility/source/video_frames_queue.cc
+++ b/modules/utility/source/video_frames_queue.cc
@@ -21,36 +21,24 @@
namespace webrtc {
VideoFramesQueue::VideoFramesQueue()
- : _incomingFrames(),
- _renderDelayMs(10)
+ : _renderDelayMs(10)
{
}
VideoFramesQueue::~VideoFramesQueue() {
- while (!_incomingFrames.Empty()) {
- ListItem* item = _incomingFrames.First();
- if (item) {
- I420VideoFrame* ptrFrame = static_cast<I420VideoFrame*>(item->GetItem());
- assert(ptrFrame != NULL);
- delete ptrFrame;
- }
- _incomingFrames.Erase(item);
+ for (FrameList::iterator iter = _incomingFrames.begin();
+ iter != _incomingFrames.end(); ++iter) {
+ delete *iter;
}
- while (!_emptyFrames.Empty()) {
- ListItem* item = _emptyFrames.First();
- if (item) {
- I420VideoFrame* ptrFrame =
- static_cast<I420VideoFrame*>(item->GetItem());
- assert(ptrFrame != NULL);
- delete ptrFrame;
- }
- _emptyFrames.Erase(item);
+ for (FrameList::iterator iter = _emptyFrames.begin();
+ iter != _emptyFrames.end(); ++iter) {
+ delete *iter;
}
}
int32_t VideoFramesQueue::AddFrame(const I420VideoFrame& newFrame) {
if (newFrame.native_handle() != NULL) {
- _incomingFrames.PushBack(new TextureVideoFrame(
+ _incomingFrames.push_back(new TextureVideoFrame(
static_cast<NativeHandle*>(newFrame.native_handle()),
newFrame.width(),
newFrame.height(),
@@ -61,15 +49,12 @@
I420VideoFrame* ptrFrameToAdd = NULL;
// Try to re-use a VideoFrame. Only allocate new memory if it is necessary.
- if (!_emptyFrames.Empty()) {
- ListItem* item = _emptyFrames.First();
- if (item) {
- ptrFrameToAdd = static_cast<I420VideoFrame*>(item->GetItem());
- _emptyFrames.Erase(item);
- }
+ if (!_emptyFrames.empty()) {
+ ptrFrameToAdd = _emptyFrames.front();
+ _emptyFrames.pop_front();
}
if (!ptrFrameToAdd) {
- if (_emptyFrames.GetSize() + _incomingFrames.GetSize() >
+ if (_emptyFrames.size() + _incomingFrames.size() >
KMaxNumberOfFrames) {
WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer, -1,
"%s: too many frames, limit: %d", __FUNCTION__,
@@ -79,17 +64,12 @@
WEBRTC_TRACE(kTraceMemory, kTraceVideoRenderer, -1,
"%s: allocating buffer %d", __FUNCTION__,
- _emptyFrames.GetSize() + _incomingFrames.GetSize());
+ _emptyFrames.size() + _incomingFrames.size());
ptrFrameToAdd = new I420VideoFrame();
- if (!ptrFrameToAdd) {
- WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, -1,
- "%s: could not create new frame for", __FUNCTION__);
- return -1;
- }
}
ptrFrameToAdd->CopyFrame(newFrame);
- _incomingFrames.PushBack(ptrFrameToAdd);
+ _incomingFrames.push_back(ptrFrameToAdd);
return 0;
}
@@ -99,20 +79,16 @@
// Recycle all frames that are older than the most recent frame.
I420VideoFrame* VideoFramesQueue::FrameToRecord() {
I420VideoFrame* ptrRenderFrame = NULL;
- ListItem* item = _incomingFrames.First();
- while(item) {
- I420VideoFrame* ptrOldestFrameInList =
- static_cast<I420VideoFrame*>(item->GetItem());
+ for (FrameList::iterator iter = _incomingFrames.begin();
+ iter != _incomingFrames.end(); ++iter) {
+ I420VideoFrame* ptrOldestFrameInList = *iter;
if (ptrOldestFrameInList->render_time_ms() <=
TickTime::MillisecondTimestamp() + _renderDelayMs) {
- if (ptrRenderFrame) {
- // List is traversed beginning to end. If ptrRenderFrame is not
- // NULL it must be the first, and thus oldest, VideoFrame in the
- // queue. It can be recycled.
- ReturnFrame(ptrRenderFrame);
- _incomingFrames.PopFront();
- }
- item = _incomingFrames.Next(item);
+ // List is traversed beginning to end. If ptrRenderFrame is not
+ // NULL it must be the first, and thus oldest, VideoFrame in the
+ // queue. It can be recycled.
+ ReturnFrame(ptrRenderFrame);
+ iter = _incomingFrames.erase(iter);
ptrRenderFrame = ptrOldestFrameInList;
} else {
// All VideoFrames following this one will be even newer. No match
@@ -131,7 +107,7 @@
ptrOldFrame->set_height(0);
ptrOldFrame->set_render_time_ms(0);
ptrOldFrame->ResetSize();
- _emptyFrames.PushBack(ptrOldFrame);
+ _emptyFrames.push_back(ptrOldFrame);
} else {
delete ptrOldFrame;
}
diff --git a/modules/utility/source/video_frames_queue.h b/modules/utility/source/video_frames_queue.h
index 4316bf7..afc64d9 100644
--- a/modules/utility/source/video_frames_queue.h
+++ b/modules/utility/source/video_frames_queue.h
@@ -13,9 +13,10 @@
#ifdef WEBRTC_MODULE_UTILITY_VIDEO
+#include <list>
+
#include "webrtc/common_video/interface/i420_video_frame.h"
#include "webrtc/engine_configurations.h"
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
#include "webrtc/typedefs.h"
namespace webrtc {
@@ -42,6 +43,7 @@
int32_t ReturnFrame(I420VideoFrame* ptrOldFrame);
private:
+ typedef std::list<I420VideoFrame*> FrameList;
// Don't allow the buffer to expand beyond KMaxNumberOfFrames VideoFrames.
// 300 frames correspond to 10 seconds worth of frames at 30 fps.
enum {KMaxNumberOfFrames = 300};
@@ -49,9 +51,9 @@
// List of VideoFrame pointers. The list is sorted in the order of when the
// VideoFrame was inserted into the list. The first VideoFrame in the list
// was inserted first.
- ListWrapper _incomingFrames;
+ FrameList _incomingFrames;
// A list of frames that are free to be re-used.
- ListWrapper _emptyFrames;
+ FrameList _emptyFrames;
// Estimated render delay.
uint32_t _renderDelayMs;
diff --git a/modules/video_render/video_render_frames.cc b/modules/video_render/video_render_frames.cc
index bedb8be..7025d62 100644
--- a/modules/video_render/video_render_frames.cc
+++ b/modules/video_render/video_render_frames.cc
@@ -8,7 +8,7 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#include "webrtc/modules/video_render//video_render_frames.h"
+#include "webrtc/modules/video_render/video_render_frames.h"
#include <assert.h>
@@ -19,13 +19,12 @@
namespace webrtc {
-const int32_t KEventMaxWaitTimeMs = 200;
+const uint32_t KEventMaxWaitTimeMs = 200;
const uint32_t kMinRenderDelayMs = 10;
const uint32_t kMaxRenderDelayMs= 500;
VideoRenderFrames::VideoRenderFrames()
- : incoming_frames_(),
- render_delay_ms_(10) {
+ : render_delay_ms_(10) {
}
VideoRenderFrames::~VideoRenderFrames() {
@@ -37,7 +36,7 @@
// Drop old frames only when there are other frames in the queue, otherwise, a
// really slow system never renders any frames.
- if (!incoming_frames_.Empty() &&
+ if (!incoming_frames_.empty() &&
new_frame->render_time_ms() + KOldRenderTimestampMS < time_now) {
WEBRTC_TRACE(kTraceWarning,
kTraceVideoRenderer,
@@ -56,26 +55,23 @@
}
if (new_frame->native_handle() != NULL) {
- incoming_frames_.PushBack(new TextureVideoFrame(
+ incoming_frames_.push_back(new TextureVideoFrame(
static_cast<NativeHandle*>(new_frame->native_handle()),
new_frame->width(),
new_frame->height(),
new_frame->timestamp(),
new_frame->render_time_ms()));
- return incoming_frames_.GetSize();
+ return static_cast<int32_t>(incoming_frames_.size());
}
// Get an empty frame
I420VideoFrame* frame_to_add = NULL;
- if (!empty_frames_.Empty()) {
- ListItem* item = empty_frames_.First();
- if (item) {
- frame_to_add = static_cast<I420VideoFrame*>(item->GetItem());
- empty_frames_.Erase(item);
- }
+ if (!empty_frames_.empty()) {
+ frame_to_add = empty_frames_.front();
+ empty_frames_.pop_front();
}
if (!frame_to_add) {
- if (empty_frames_.GetSize() + incoming_frames_.GetSize() >
+ if (empty_frames_.size() + incoming_frames_.size() >
KMaxNumberOfFrames) {
// Already allocated too many frames.
WEBRTC_TRACE(kTraceWarning, kTraceVideoRenderer,
@@ -87,7 +83,7 @@
// Allocate new memory.
WEBRTC_TRACE(kTraceMemory, kTraceVideoRenderer, -1,
"%s: allocating buffer %d", __FUNCTION__,
- empty_frames_.GetSize() + incoming_frames_.GetSize());
+ empty_frames_.size() + incoming_frames_.size());
frame_to_add = new I420VideoFrame();
if (!frame_to_add) {
@@ -104,33 +100,28 @@
// TODO(mflodman) Change this!
// Remove const ness. Copying will be costly.
frame_to_add->SwapFrame(new_frame);
- incoming_frames_.PushBack(frame_to_add);
+ incoming_frames_.push_back(frame_to_add);
- return incoming_frames_.GetSize();
+ return static_cast<int32_t>(incoming_frames_.size());
}
I420VideoFrame* VideoRenderFrames::FrameToRender() {
I420VideoFrame* render_frame = NULL;
- while (!incoming_frames_.Empty()) {
- ListItem* item = incoming_frames_.First();
- if (item) {
- I420VideoFrame* oldest_frame_in_list =
- static_cast<I420VideoFrame*>(item->GetItem());
- if (oldest_frame_in_list->render_time_ms() <=
- TickTime::MillisecondTimestamp() + render_delay_ms_) {
- // This is the oldest one so far and it's OK to render.
- if (render_frame) {
- // This one is older than the newly found frame, remove this one.
- ReturnFrame(render_frame);
- }
- render_frame = oldest_frame_in_list;
- incoming_frames_.Erase(item);
- } else {
- // We can't release this one yet, we're done here.
- break;
+ FrameList::iterator iter = incoming_frames_.begin();
+ while(iter != incoming_frames_.end()) {
+ I420VideoFrame* oldest_frame_in_list = *iter;
+ if (oldest_frame_in_list->render_time_ms() <=
+ TickTime::MillisecondTimestamp() + render_delay_ms_) {
+ // This is the oldest one so far and it's OK to render.
+ if (render_frame) {
+ // This one is older than the newly found frame, remove this one.
+ ReturnFrame(render_frame);
}
+ render_frame = oldest_frame_in_list;
+ iter = incoming_frames_.erase(iter);
} else {
- assert(false);
+ // We can't release this one yet, we're done here.
+ break;
}
}
return render_frame;
@@ -142,7 +133,7 @@
old_frame->ResetSize();
old_frame->set_timestamp(0);
old_frame->set_render_time_ms(0);
- empty_frames_.PushBack(old_frame);
+ empty_frames_.push_back(old_frame);
} else {
delete old_frame;
}
@@ -150,40 +141,29 @@
}
int32_t VideoRenderFrames::ReleaseAllFrames() {
- while (!incoming_frames_.Empty()) {
- ListItem* item = incoming_frames_.First();
- if (item) {
- I420VideoFrame* frame = static_cast<I420VideoFrame*>(item->GetItem());
- assert(frame != NULL);
- delete frame;
- }
- incoming_frames_.Erase(item);
+ for (FrameList::iterator iter = incoming_frames_.begin();
+ iter != incoming_frames_.end(); ++iter) {
+ delete *iter;
}
- while (!empty_frames_.Empty()) {
- ListItem* item = empty_frames_.First();
- if (item) {
- I420VideoFrame* frame = static_cast<I420VideoFrame*>(item->GetItem());
- assert(frame != NULL);
- delete frame;
- }
- empty_frames_.Erase(item);
+ incoming_frames_.clear();
+
+ for (FrameList::iterator iter = empty_frames_.begin();
+ iter != empty_frames_.end(); ++iter) {
+ delete *iter;
}
+ empty_frames_.clear();
return 0;
}
uint32_t VideoRenderFrames::TimeToNextFrameRelease() {
- int64_t time_to_release = 0;
- ListItem* item = incoming_frames_.First();
- if (item) {
- I420VideoFrame* oldest_frame =
- static_cast<I420VideoFrame*>(item->GetItem());
- time_to_release = oldest_frame->render_time_ms() - render_delay_ms_
- - TickTime::MillisecondTimestamp();
- if (time_to_release < 0) {
- time_to_release = 0;
- }
- } else {
- time_to_release = KEventMaxWaitTimeMs;
+ if (incoming_frames_.empty()) {
+ return KEventMaxWaitTimeMs;
+ }
+ I420VideoFrame* oldest_frame = incoming_frames_.front();
+ int64_t time_to_release = oldest_frame->render_time_ms() - render_delay_ms_
+ - TickTime::MillisecondTimestamp();
+ if (time_to_release < 0) {
+ time_to_release = 0;
}
return static_cast<uint32_t>(time_to_release);
}
diff --git a/modules/video_render/video_render_frames.h b/modules/video_render/video_render_frames.h
index 1a5d64d..d2e887f 100644
--- a/modules/video_render/video_render_frames.h
+++ b/modules/video_render/video_render_frames.h
@@ -11,8 +11,9 @@
#ifndef WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_FRAMES_H_ // NOLINT
#define WEBRTC_MODULES_VIDEO_RENDER_MAIN_SOURCE_VIDEO_RENDER_FRAMES_H_ // NOLINT
+#include <list>
+
#include "webrtc/modules/video_render/include/video_render.h"
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
namespace webrtc {
@@ -41,6 +42,8 @@
int32_t SetRenderDelay(const uint32_t render_delay);
private:
+ typedef std::list<I420VideoFrame*> FrameList;
+
// 10 seconds for 30 fps.
enum { KMaxNumberOfFrames = 300 };
// Don't render frames with timestamp older than 500ms from now.
@@ -49,9 +52,9 @@
enum { KFutureRenderTimestampMS = 10000 };
// Sorted list with framed to be rendered, oldest first.
- ListWrapper incoming_frames_;
+ FrameList incoming_frames_;
// Empty frames.
- ListWrapper empty_frames_;
+ FrameList empty_frames_;
// Estimated delay from a frame is released until it's rendered.
uint32_t render_delay_ms_;
diff --git a/test/channel_transport/udp_socket2_manager_win.cc b/test/channel_transport/udp_socket2_manager_win.cc
index 54bd42f..bfab51e 100644
--- a/test/channel_transport/udp_socket2_manager_win.cc
+++ b/test/channel_transport/udp_socket2_manager_win.cc
@@ -65,14 +65,11 @@
}
StopWorkerThreads();
- // All threads are stopped. Safe to delete them.
- ListItem* pItem = NULL;
- while((pItem = _workerThreadsList.First()) != NULL)
- {
- delete static_cast<UdpSocket2WorkerWindows*>(pItem->GetItem());
- _workerThreadsList.PopFront();
+ for (WorkerList::iterator iter = _workerThreadsList.begin();
+ iter != _workerThreadsList.end(); ++iter) {
+ delete *iter;
}
-
+ _workerThreadsList.clear();
_ioContextPool.Free();
_numOfActiveManagers--;
@@ -134,14 +131,10 @@
// Start worker threads.
_stopped = false;
int32_t error = 0;
- ListItem* pItem = _workerThreadsList.First();
- UdpSocket2WorkerWindows* pWorker;
- while(pItem != NULL && !error)
- {
- pWorker = (UdpSocket2WorkerWindows*)pItem->GetItem();
- if(!pWorker->Start())
- error = 1;
- pItem = _workerThreadsList.Next(pItem);
+ for (WorkerList::iterator iter = _workerThreadsList.begin();
+ iter != _workerThreadsList.end() && !error; ++iter) {
+ if(!(*iter)->Start())
+ error = 1;
}
if(error)
{
@@ -194,7 +187,7 @@
delete pWorker;
break;
}
- _workerThreadsList.PushFront(pWorker);
+ _workerThreadsList.push_front(pWorker);
i++;
}
if(error)
@@ -207,12 +200,11 @@
"creating work threads",
_managerNumber);
// Delete worker threads.
- ListItem* pItem = NULL;
- while((pItem = _workerThreadsList.First()) != NULL)
- {
- delete static_cast<UdpSocket2WorkerWindows*>(pItem->GetItem());
- _workerThreadsList.PopFront();
+ for (WorkerList::iterator iter = _workerThreadsList.begin();
+ iter != _workerThreadsList.end(); ++iter) {
+ delete *iter;
}
+ _workerThreadsList.clear();
_pCrit->Leave();
return false;
}
@@ -281,38 +273,30 @@
threadsStoped, numActicve Sockets=%d",
_managerNumber,
_numActiveSockets);
- UdpSocket2WorkerWindows* pWorker;
- ListItem* pItem = _workerThreadsList.First();
// Set worker threads to not alive so that they will stop calling
// UdpSocket2WorkerWindows::Run().
- while(pItem != NULL)
- {
- pWorker = (UdpSocket2WorkerWindows*)pItem->GetItem();
- pWorker->SetNotAlive();
- pItem = _workerThreadsList.Next(pItem);
+ for (WorkerList::iterator iter = _workerThreadsList.begin();
+ iter != _workerThreadsList.end(); ++iter) {
+ (*iter)->SetNotAlive();
}
// Release all threads waiting for GetQueuedCompletionStatus(..).
if(_ioCompletionHandle)
{
uint32_t i = 0;
- for(i = 0; i < _workerThreadsList.GetSize(); i++)
+ for(i = 0; i < _workerThreadsList.size(); i++)
{
PostQueuedCompletionStatus(_ioCompletionHandle, 0 ,0 , NULL);
}
}
- pItem = _workerThreadsList.First();
-
- while(pItem != NULL)
- {
- pWorker = (UdpSocket2WorkerWindows*)pItem->GetItem();
- if(pWorker->Stop() == false)
+ for (WorkerList::iterator iter = _workerThreadsList.begin();
+ iter != _workerThreadsList.end(); ++iter) {
+ if((*iter)->Stop() == false)
{
error = -1;
WEBRTC_TRACE(kTraceWarning, kTraceTransport, -1,
"failed to stop worker thread");
}
- pItem = _workerThreadsList.Next(pItem);
}
if(error)
diff --git a/test/channel_transport/udp_socket2_manager_win.h b/test/channel_transport/udp_socket2_manager_win.h
index 0eef997..956cc03 100644
--- a/test/channel_transport/udp_socket2_manager_win.h
+++ b/test/channel_transport/udp_socket2_manager_win.h
@@ -12,11 +12,11 @@
#define WEBRTC_TEST_CHANNEL_TRANSPORT_UDP_SOCKET2_MANAGER_WINDOWS_H_
#include <winsock2.h>
+#include <list>
#include "webrtc/system_wrappers/interface/atomic32.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/event_wrapper.h"
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
#include "webrtc/system_wrappers/interface/thread_wrapper.h"
#include "webrtc/test/channel_transport/udp_socket2_win.h"
#include "webrtc/test/channel_transport/udp_socket_manager_wrapper.h"
@@ -91,6 +91,27 @@
Atomic32 _inUse;
};
+class UdpSocket2WorkerWindows
+{
+public:
+ UdpSocket2WorkerWindows(HANDLE ioCompletionHandle);
+ virtual ~UdpSocket2WorkerWindows();
+
+ virtual bool Start();
+ virtual bool Stop();
+ virtual int32_t Init();
+ virtual void SetNotAlive();
+protected:
+ static bool Run(ThreadObj obj);
+ bool Process();
+private:
+ HANDLE _ioCompletionHandle;
+ ThreadWrapper*_pThread;
+ static int32_t _numOfWorkers;
+ int32_t _workerNumber;
+ volatile bool _stop;
+ bool _init;
+};
class UdpSocket2ManagerWindows : public UdpSocketManager
{
@@ -115,6 +136,7 @@
int32_t PushIoContext(PerIoContext* pIoContext);
private:
+ typedef std::list<UdpSocket2WorkerWindows*> WorkerList;
bool StopWorkerThreads();
bool StartWorkerThreads();
bool AddSocketPrv(UdpSocket2Windows* s);
@@ -129,35 +151,13 @@
volatile bool _stopped;
bool _init;
int32_t _numActiveSockets;
- ListWrapper _workerThreadsList;
+ WorkerList _workerThreadsList;
EventWrapper* _event;
HANDLE _ioCompletionHandle;
IoContextPool _ioContextPool;
};
-class UdpSocket2WorkerWindows
-{
-public:
- UdpSocket2WorkerWindows(HANDLE ioCompletionHandle);
- virtual ~UdpSocket2WorkerWindows();
-
- virtual bool Start();
- virtual bool Stop();
- virtual int32_t Init();
- virtual void SetNotAlive();
-protected:
- static bool Run(ThreadObj obj);
- bool Process();
-private:
- HANDLE _ioCompletionHandle;
- ThreadWrapper*_pThread;
- static int32_t _numOfWorkers;
- int32_t _workerNumber;
- volatile bool _stop;
- bool _init;
-};
-
} // namespace test
} // namespace webrtc
diff --git a/test/channel_transport/udp_socket2_win.h b/test/channel_transport/udp_socket2_win.h
index 0bc3581..e4d6b8c 100644
--- a/test/channel_transport/udp_socket2_win.h
+++ b/test/channel_transport/udp_socket2_win.h
@@ -23,7 +23,6 @@
#include "webrtc/system_wrappers/interface/condition_variable_wrapper.h"
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/event_wrapper.h"
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
#include "webrtc/system_wrappers/interface/rw_lock_wrapper.h"
#include "webrtc/system_wrappers/interface/trace.h"
#include "webrtc/test/channel_transport/udp_socket2_manager_win.h"
diff --git a/test/channel_transport/udp_socket_manager_posix.cc b/test/channel_transport/udp_socket_manager_posix.cc
index 5543814..1e13475 100644
--- a/test/channel_transport/udp_socket_manager_posix.cc
+++ b/test/channel_transport/udp_socket_manager_posix.cc
@@ -322,7 +322,7 @@
return false;
}
_critSectList->Enter();
- _addList.PushBack(s);
+ _addList.push_back(s);
_critSectList->Leave();
return true;
}
@@ -333,26 +333,24 @@
_critSectList->Enter();
// If the socket is in the add list it's safe to remove and delete it.
- ListItem* addListItem = _addList.First();
- while(addListItem)
- {
- UdpSocketPosix* addSocket = (UdpSocketPosix*)addListItem->GetItem();
+ for (SocketList::iterator iter = _addList.begin();
+ iter != _addList.end(); ++iter) {
+ UdpSocketPosix* addSocket = static_cast<UdpSocketPosix*>(*iter);
unsigned int addFD = addSocket->GetFd();
unsigned int removeFD = static_cast<UdpSocketPosix*>(s)->GetFd();
if(removeFD == addFD)
{
- _removeList.PushBack(removeFD);
+ _removeList.push_back(removeFD);
_critSectList->Leave();
return true;
}
- addListItem = _addList.Next(addListItem);
}
// Checking the socket map is safe since all Erase and Insert calls to this
// map are also protected by _critSectList.
if (_socketMap.find(static_cast<UdpSocketPosix*>(s)->GetFd()) !=
_socketMap.end()) {
- _removeList.PushBack(static_cast<UdpSocketPosix*>(s)->GetFd());
+ _removeList.push_back(static_cast<UdpSocketPosix*>(s)->GetFd());
_critSectList->Leave();
return true;
}
@@ -364,25 +362,23 @@
{
// Remove items in remove list.
_critSectList->Enter();
- while(!_removeList.Empty())
- {
+ for (FdList::iterator iter = _removeList.begin();
+ iter != _removeList.end(); ++iter) {
UdpSocketPosix* deleteSocket = NULL;
- SOCKET removeFD = _removeList.First()->GetUnsignedItem();
+ SOCKET removeFD = *iter;
// If the socket is in the add list it hasn't been added to the socket
// map yet. Just remove the socket from the add list.
- ListItem* addListItem = _addList.First();
- while(addListItem)
- {
- UdpSocketPosix* addSocket = (UdpSocketPosix*)addListItem->GetItem();
+ for (SocketList::iterator iter = _addList.begin();
+ iter != _addList.end(); ++iter) {
+ UdpSocketPosix* addSocket = static_cast<UdpSocketPosix*>(*iter);
SOCKET addFD = addSocket->GetFd();
if(removeFD == addFD)
{
deleteSocket = addSocket;
- _addList.Erase(addListItem);
+ _addList.erase(iter);
break;
}
- addListItem = _addList.Next(addListItem);
}
// Find and remove socket from _socketMap.
@@ -398,19 +394,18 @@
deleteSocket->ReadyForDeletion();
delete deleteSocket;
}
- _removeList.PopFront();
}
+ _removeList.clear();
// Add sockets from add list.
- while(!_addList.Empty())
- {
- UdpSocketPosix* s =
- static_cast<UdpSocketPosix*>(_addList.First()->GetItem());
+ for (SocketList::iterator iter = _addList.begin();
+ iter != _addList.end(); ++iter) {
+ UdpSocketPosix* s = static_cast<UdpSocketPosix*>(*iter);
if(s) {
_socketMap[s->GetFd()] = s;
}
- _addList.PopFront();
}
+ _addList.clear();
_critSectList->Leave();
}
diff --git a/test/channel_transport/udp_socket_manager_posix.h b/test/channel_transport/udp_socket_manager_posix.h
index 0efd6ff..cbcb479 100644
--- a/test/channel_transport/udp_socket_manager_posix.h
+++ b/test/channel_transport/udp_socket_manager_posix.h
@@ -14,10 +14,10 @@
#include <sys/types.h>
#include <unistd.h>
+#include <list>
#include <map>
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
#include "webrtc/system_wrappers/interface/thread_wrapper.h"
#include "webrtc/test/channel_transport/udp_socket_manager_wrapper.h"
#include "webrtc/test/channel_transport/udp_socket_wrapper.h"
@@ -74,14 +74,16 @@
void UpdateSocketMap();
private:
+ typedef std::list<UdpSocketWrapper*> SocketList;
+ typedef std::list<SOCKET> FdList;
ThreadWrapper* _thread;
CriticalSectionWrapper* _critSectList;
fd_set _readFds;
std::map<SOCKET, UdpSocketPosix*> _socketMap;
- ListWrapper _addList;
- ListWrapper _removeList;
+ SocketList _addList;
+ FdList _removeList;
};
} // namespace test
diff --git a/video_engine/encoder_state_feedback_unittest.cc b/video_engine/encoder_state_feedback_unittest.cc
index 7f33165..f85d989 100644
--- a/video_engine/encoder_state_feedback_unittest.cc
+++ b/video_engine/encoder_state_feedback_unittest.cc
@@ -30,7 +30,7 @@
~TestProcessThread() {}
virtual int32_t Start() { return 0; }
virtual int32_t Stop() { return 0; }
- virtual int32_t RegisterModule(const Module* module) { return 0; }
+ virtual int32_t RegisterModule(Module* module) { return 0; }
virtual int32_t DeRegisterModule(const Module* module) { return 0; }
};
diff --git a/video_engine/vie_remb_unittest.cc b/video_engine/vie_remb_unittest.cc
index 0fd9e51..cdfe39c 100644
--- a/video_engine/vie_remb_unittest.cc
+++ b/video_engine/vie_remb_unittest.cc
@@ -35,7 +35,7 @@
~TestProcessThread() {}
virtual int32_t Start() { return 0; }
virtual int32_t Stop() { return 0; }
- virtual int32_t RegisterModule(const Module* module) { return 0; }
+ virtual int32_t RegisterModule(Module* module) { return 0; }
virtual int32_t DeRegisterModule(const Module* module) { return 0; }
};
diff --git a/video_engine/vie_render_manager.cc b/video_engine/vie_render_manager.cc
index 2480d90..b232e56 100644
--- a/video_engine/vie_render_manager.cc
+++ b/video_engine/vie_render_manager.cc
@@ -65,7 +65,7 @@
}
// Register module.
- render_list_.PushBack(static_cast<void*>(render_module));
+ render_list_.push_back(render_module);
use_external_render_module_ = true;
return 0;
}
@@ -81,24 +81,17 @@
return -1;
}
- // Erase the render module from the map.
- ListItem* list_item = NULL;
- bool found = false;
- for (list_item = render_list_.First(); list_item != NULL;
- list_item = render_list_.Next(list_item)) {
- if (render_module == static_cast<VideoRender*>(list_item->GetItem())) {
- // We've found our renderer.
- render_list_.Erase(list_item);
- found = true;
- break;
+ for (RenderList::iterator iter = render_list_.begin();
+ iter != render_list_.end(); ++iter) {
+ if (render_module == *iter) {
+ // We've found our renderer. Erase the render module from the map.
+ render_list_.erase(iter);
+ return 0;
}
}
- if (!found) {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideo, ViEId(engine_id_),
- "Module not registered");
- return -1;
- }
- return 0;
+ WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideo, ViEId(engine_id_),
+ "Module not registered");
+ return -1;
}
ViERenderer* ViERenderManager::AddRenderStream(const int32_t render_id,
@@ -129,7 +122,7 @@
"Could not create new render module");
return NULL;
}
- render_list_.PushBack(static_cast<void*>(render_module));
+ render_list_.push_back(render_module);
}
ViERenderer* vie_renderer = ViERenderer::CreateViERenderer(render_id,
@@ -176,12 +169,11 @@
if (!use_external_render_module_ &&
renderer.GetNumIncomingRenderStreams() == 0) {
// Erase the render module from the map.
- ListItem* list_item = NULL;
- for (list_item = render_list_.First(); list_item != NULL;
- list_item = render_list_.Next(list_item)) {
- if (&renderer == static_cast<VideoRender*>(list_item->GetItem())) {
+ for (RenderList::iterator iter = render_list_.begin();
+ iter != render_list_.end(); ++iter) {
+ if (&renderer == *iter) {
// We've found our renderer.
- render_list_.Erase(list_item);
+ render_list_.erase(iter);
break;
}
}
@@ -192,21 +184,14 @@
}
VideoRender* ViERenderManager::FindRenderModule(void* window) {
- VideoRender* renderer = NULL;
- ListItem* list_item = NULL;
- for (list_item = render_list_.First(); list_item != NULL;
- list_item = render_list_.Next(list_item)) {
- renderer = static_cast<VideoRender*>(list_item->GetItem());
- if (renderer == NULL) {
- break;
- }
- if (renderer->Window() == window) {
+ for (RenderList::iterator iter = render_list_.begin();
+ iter != render_list_.end(); ++iter) {
+ if ((*iter)->Window() == window) {
// We've found the render module.
- break;
+ return *iter;
}
- renderer = NULL;
}
- return renderer;
+ return NULL;
}
ViERenderer* ViERenderManager::ViERenderPtr(int32_t render_id) const {
diff --git a/video_engine/vie_render_manager.h b/video_engine/vie_render_manager.h
index bc32893..c1314cd 100644
--- a/video_engine/vie_render_manager.h
+++ b/video_engine/vie_render_manager.h
@@ -11,9 +11,9 @@
#ifndef WEBRTC_VIDEO_ENGINE_VIE_RENDER_MANAGER_H_
#define WEBRTC_VIDEO_ENGINE_VIE_RENDER_MANAGER_H_
+#include <list>
#include <map>
-#include "webrtc/system_wrappers/interface/list_wrapper.h"
#include "webrtc/system_wrappers/interface/scoped_ptr.h"
#include "webrtc/typedefs.h"
#include "webrtc/video_engine/vie_manager_base.h"
@@ -46,6 +46,7 @@
int32_t RemoveRenderStream(int32_t render_id);
private:
+ typedef std::list<VideoRender*> RenderList;
// Returns a pointer to the render module if it exists in the render list.
// Assumed protected.
VideoRender* FindRenderModule(void* window);
@@ -58,8 +59,7 @@
// Protected by ViEManagerBase.
typedef std::map<int32_t, ViERenderer*> RendererMap;
RendererMap stream_to_vie_renderer_;
-
- ListWrapper render_list_;
+ RenderList render_list_;
bool use_external_render_module_;
};