Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(876)

Unified Diff: modules/audio_conference_mixer/source/memory_pool_win.h

Issue 3015553002: Remove voe::OutputMixer and AudioConferenceMixer. (Closed)
Patch Set: remove conference mixer from presubmit.py Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: modules/audio_conference_mixer/source/memory_pool_win.h
diff --git a/modules/audio_conference_mixer/source/memory_pool_win.h b/modules/audio_conference_mixer/source/memory_pool_win.h
deleted file mode 100644
index cce38aa24271aaa1cd8c3f0e7a246beb06675a3b..0000000000000000000000000000000000000000
--- a/modules/audio_conference_mixer/source/memory_pool_win.h
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CONFERENCE_MIXER_SOURCE_MEMORY_POOL_WINDOWS_H_
-#define MODULES_AUDIO_CONFERENCE_MIXER_SOURCE_MEMORY_POOL_WINDOWS_H_
-
-#include <assert.h>
-#include <windows.h>
-
-#include "system_wrappers/include/aligned_malloc.h"
-#include "system_wrappers/include/atomic32.h"
-#include "typedefs.h" // NOLINT(build/include)
-
-namespace webrtc {
-template<class MemoryType> struct MemoryPoolItem;
-
-template<class MemoryType>
-struct MemoryPoolItemPayload
-{
- MemoryPoolItemPayload()
- : memoryType(),
- base(NULL)
- {
- }
- MemoryType memoryType;
- MemoryPoolItem<MemoryType>* base;
-};
-
-template<class MemoryType>
-struct MemoryPoolItem
-{
- // Atomic single linked list entry header.
- SLIST_ENTRY itemEntry;
- // Atomic single linked list payload.
- MemoryPoolItemPayload<MemoryType>* payload;
-};
-
-template<class MemoryType>
-class MemoryPoolImpl
-{
-public:
- // MemoryPool functions.
- int32_t PopMemory(MemoryType*& memory);
- int32_t PushMemory(MemoryType*& memory);
-
- MemoryPoolImpl(int32_t /*initialPoolSize*/);
- ~MemoryPoolImpl();
-
- // Atomic functions.
- int32_t Terminate();
- bool Initialize();
-private:
- // Non-atomic function.
- MemoryPoolItem<MemoryType>* CreateMemory();
-
- // Windows implementation of single linked atomic list, documented here:
- // http://msdn.microsoft.com/en-us/library/ms686962(VS.85).aspx
-
- // Atomic single linked list head.
- PSLIST_HEADER _pListHead;
-
- Atomic32 _createdMemory;
- Atomic32 _outstandingMemory;
-};
-
-template<class MemoryType>
-MemoryPoolImpl<MemoryType>::MemoryPoolImpl(
- int32_t /*initialPoolSize*/)
- : _pListHead(NULL),
- _createdMemory(0),
- _outstandingMemory(0)
-{
-}
-
-template<class MemoryType>
-MemoryPoolImpl<MemoryType>::~MemoryPoolImpl()
-{
- Terminate();
- if(_pListHead != NULL)
- {
- AlignedFree(reinterpret_cast<void*>(_pListHead));
- _pListHead = NULL;
- }
- // Trigger assert if there is outstanding memory.
- assert(_createdMemory.Value() == 0);
- assert(_outstandingMemory.Value() == 0);
-}
-
-template<class MemoryType>
-int32_t MemoryPoolImpl<MemoryType>::PopMemory(MemoryType*& memory)
-{
- PSLIST_ENTRY pListEntry = InterlockedPopEntrySList(_pListHead);
- if(pListEntry == NULL)
- {
- MemoryPoolItem<MemoryType>* item = CreateMemory();
- if(item == NULL)
- {
- return -1;
- }
- pListEntry = &(item->itemEntry);
- }
- ++_outstandingMemory;
- memory = &((MemoryPoolItem<MemoryType>*)pListEntry)->payload->memoryType;
- return 0;
-}
-
-template<class MemoryType>
-int32_t MemoryPoolImpl<MemoryType>::PushMemory(MemoryType*& memory)
-{
- if(memory == NULL)
- {
- return -1;
- }
-
- MemoryPoolItem<MemoryType>* item =
- ((MemoryPoolItemPayload<MemoryType>*)memory)->base;
-
- const int32_t usedItems = --_outstandingMemory;
- const int32_t totalItems = _createdMemory.Value();
- const int32_t freeItems = totalItems - usedItems;
- if(freeItems < 0)
- {
- assert(false);
- delete item->payload;
- AlignedFree(item);
- return -1;
- }
- if(freeItems >= totalItems>>1)
- {
- delete item->payload;
- AlignedFree(item);
- --_createdMemory;
- return 0;
- }
- InterlockedPushEntrySList(_pListHead,&(item->itemEntry));
- return 0;
-}
-
-template<class MemoryType>
-bool MemoryPoolImpl<MemoryType>::Initialize()
-{
- _pListHead = (PSLIST_HEADER)AlignedMalloc(sizeof(SLIST_HEADER),
- MEMORY_ALLOCATION_ALIGNMENT);
- if(_pListHead == NULL)
- {
- return false;
- }
- InitializeSListHead(_pListHead);
- return true;
-}
-
-template<class MemoryType>
-int32_t MemoryPoolImpl<MemoryType>::Terminate()
-{
- int32_t itemsFreed = 0;
- PSLIST_ENTRY pListEntry = InterlockedPopEntrySList(_pListHead);
- while(pListEntry != NULL)
- {
- MemoryPoolItem<MemoryType>* item = ((MemoryPoolItem<MemoryType>*)pListEntry);
- delete item->payload;
- AlignedFree(item);
- --_createdMemory;
- itemsFreed++;
- pListEntry = InterlockedPopEntrySList(_pListHead);
- }
- return itemsFreed;
-}
-
-template<class MemoryType>
-MemoryPoolItem<MemoryType>* MemoryPoolImpl<MemoryType>::CreateMemory()
-{
- MemoryPoolItem<MemoryType>* returnValue = (MemoryPoolItem<MemoryType>*)
- AlignedMalloc(sizeof(MemoryPoolItem<MemoryType>),
- MEMORY_ALLOCATION_ALIGNMENT);
- if(returnValue == NULL)
- {
- return NULL;
- }
-
- returnValue->payload = new MemoryPoolItemPayload<MemoryType>();
- if(returnValue->payload == NULL)
- {
- delete returnValue;
- return NULL;
- }
- returnValue->payload->base = returnValue;
- ++_createdMemory;
- return returnValue;
-}
-} // namespace webrtc
-
-#endif // MODULES_AUDIO_CONFERENCE_MIXER_SOURCE_MEMORY_POOL_WINDOWS_H_
« no previous file with comments | « modules/audio_conference_mixer/source/memory_pool_posix.h ('k') | modules/audio_conference_mixer/source/time_scheduler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698