diff options
author | Angelo Mantellini (manangel) <angelo.mantellini@irt-systemx.fr> | 2017-06-06 14:22:24 +0200 |
---|---|---|
committer | Angelo Mantellini (manangel) <angelo.mantellini@irt-systemx.fr> | 2017-06-07 15:01:28 +0200 |
commit | 6358e611e09092ad121f4a85e548c0d9411ab09f (patch) | |
tree | 1e9ac163ce10ab44402dcce1566b7920afbe1bf1 /src/libdash/source | |
parent | dca773280df13ce3ecc6d306dffd603715cf25a5 (diff) |
update applications to use new version libicnet
Change-Id: I4b2381a13cf64488baf83056fc1fa11b359d1147
Signed-off-by: Angelo Mantellini (manangel) <angelo.mantellini@irt-systemx.fr>
Diffstat (limited to 'src/libdash/source')
83 files changed, 0 insertions, 7317 deletions
diff --git a/src/libdash/source/defaults.mk b/src/libdash/source/defaults.mk deleted file mode 100644 index d446c620..00000000 --- a/src/libdash/source/defaults.mk +++ /dev/null @@ -1,7 +0,0 @@ -LIBNAME=libdash -CC=g++ -AR=ar -LD=g++ -ARFLAGS=-cr -CFLAGS=-fPIC -c -Wall #-DDEBUG -LDFLAGS=-shared -Wl,-soname,$(LIBNAME).so diff --git a/src/libdash/source/dllmain.cpp b/src/libdash/source/dllmain.cpp deleted file mode 100644 index b624228b..00000000 --- a/src/libdash/source/dllmain.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * dllmain.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#if defined _WIN32 || defined _WIN64 - -#include "targetver.h" -#define WIN32_LEAN_AND_MEAN -#include <windows.h> - -BOOL APIENTRY DllMain( HMODULE hModule, - DWORD ul_reason_for_call, - LPVOID lpReserved ) -{ - switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DETACH: - break; - } - return TRUE; -} - -#endif diff --git a/src/libdash/source/helpers/Block.h b/src/libdash/source/helpers/Block.h deleted file mode 100644 index c71462e8..00000000 --- a/src/libdash/source/helpers/Block.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Block.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef __BLOCK_H__ -#define __BLOCK_H__ - -#include "config.h" - -namespace dash -{ - namespace helpers - { - struct block_t - { - uint8_t *data; - size_t len; - float millisec; - size_t offset; - }; - - static inline block_t* AllocBlock (size_t len) - { - block_t *block = (block_t *)malloc(sizeof(block_t)); - block->data = new uint8_t[len]; - block->len = len; - block->millisec = 0; - block->offset = 0; - return block; - } - static inline void DeleteBlock (block_t *block) - { - if(block) - { - delete [] block->data; - free(block); - block = NULL; - } - } - static inline block_t* DuplicateBlock (block_t *block) - { - block_t *ret = AllocBlock(block->len); - ret->offset = block->offset; - - memcpy(ret->data, block->data, ret->len); - - return block; - } - } -} - -#endif diff --git a/src/libdash/source/helpers/BlockStream.cpp b/src/libdash/source/helpers/BlockStream.cpp deleted file mode 100644 index fd34f88e..00000000 --- a/src/libdash/source/helpers/BlockStream.cpp +++ /dev/null @@ -1,290 +0,0 @@ -/* - * BlockStream.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "BlockStream.h" -#include <limits> - -using namespace dash::helpers; - -BlockStream::BlockStream () : - length (0) -{ -} -BlockStream::~BlockStream () -{ - this->Clear(); -} - -void BlockStream::PopAndDeleteFront () -{ - if(this->blockqueue.empty()) - return; - - this->length -= this->blockqueue.front()->len; - DeleteBlock(this->blockqueue.front()); - this->blockqueue.pop_front(); -} -void BlockStream::PushBack (block_t *block) -{ - this->length += block->len; - this->blockqueue.push_back(block); -} -void BlockStream::PushFront (block_t *block) -{ - this->length += block->len; - this->blockqueue.push_front(block); -} -const block_t* BlockStream::GetBytes (uint32_t len) -{ - /* Performance Intensive */ - if(this->length < len) - return NULL; - - block_t *block = AllocBlock(len); - this->BlockQueueGetBytes(block->data, block->len); - - this->length -= len; - - return block; -} -size_t BlockStream::GetBytes (uint8_t *data, size_t len) -{ - /* Performance Intensive */ - if(len > this->length) - len = (size_t) this->length; - - this->BlockQueueGetBytes(data, len); - - this->length -= len; - - return len; -} -size_t BlockStream::PeekBytes (uint8_t *data, size_t len) -{ - /* Performance Intensive */ - if(len > this->length) - len = (size_t) this->length; - - this->BlockQueuePeekBytes(data, len, 0); - - return len; -} -size_t BlockStream::PeekBytes (uint8_t *data, size_t len, size_t offset) -{ - /* Performance Intensive */ - if(len > this->length) - len = (size_t) this->length; - - if (offset + len > this->length) - len = (size_t) (this->length - offset); - - this->BlockQueuePeekBytes(data, len, offset); - - return len; -} -uint64_t BlockStream::Length () const -{ - return this->length; -} -const block_t* BlockStream::GetFront () -{ - if(this->blockqueue.empty()) - return NULL; - - const block_t* ret = this->blockqueue.front(); - this->length -= ret->len; - this->blockqueue.pop_front(); - - return ret; -} -const block_t* BlockStream::Front () const -{ - if(this->blockqueue.empty()) - return NULL; - - return this->blockqueue.front(); -} -bool BlockStream::BlockQueueGetBytes (uint8_t *data, uint32_t len) -{ - uint32_t pos = 0; - - block_t *block = NULL; - - while(pos < len) - { - block = this->blockqueue.front(); - if((len - pos) < (block->len)) - { - memcpy(data + pos, block->data, len - pos); - - this->blockqueue.pop_front(); - - block_t* newfront = AllocBlock(block->len - (len - pos)); - memcpy(newfront->data, block->data + (len - pos), newfront->len); - - DeleteBlock(block); - this->blockqueue.push_front(newfront); - - return true; - } - else - { - memcpy(data + pos, block->data, block->len); - pos += block->len; - - DeleteBlock(block); - this->blockqueue.pop_front(); - } - } - - return false; -} -bool BlockStream::BlockQueuePeekBytes (uint8_t *data, uint32_t len, size_t offset) -{ - uint32_t pos = 0; - int cnt = 0; - - const block_t *block = NULL; - - while(pos < len) - { - block = this->blockqueue.at(cnt); - if((offset + len - pos) < (block->len)) - { - memcpy(data + pos, block->data + offset, len - pos - offset); - return true; - } - else - { - memcpy(data + pos, block->data + offset, block->len - offset); - pos += block->len; - } - - cnt++; - } - - return false; -} -uint8_t BlockStream::ByteAt (uint64_t position) const -{ - if(position > this->length) - return -1; - - uint64_t pos = 0; - - for(size_t i = 0; i < this->blockqueue.size(); i++) - { - const block_t *block = this->blockqueue.at(i); - - if(pos + block->len > position) - return block->data[position - pos]; - else - pos += block->len; - } - - return -1; -} -const block_t* BlockStream::ToBlock () -{ - if(this->length > std::numeric_limits<size_t>::max()) - return NULL; - - return BlockStream::GetBytes((size_t)this->length); -} -void BlockStream::Clear () -{ - while(!this->blockqueue.empty()) - { - DeleteBlock(this->blockqueue.front()); - this->blockqueue.pop_front(); - } - - this->length = 0; -} -void BlockStream::EraseFront (uint64_t len) -{ - if(len > this->length) - len = this->length; - - uint64_t actLen = 0; - - while(actLen < len) - { - if(this->blockqueue.size() == 0) - return; - - block_t *front = this->blockqueue.front(); - - if((actLen + front->len) <= len) - { - this->length -= front->len; - actLen += front->len; - - DeleteBlock(front); - this->blockqueue.pop_front(); - } - else - { - uint32_t diff = (uint32_t) (len - actLen); - this->length -= diff; - actLen += diff; - block_t* newfront = AllocBlock(front->len - diff); - - memcpy(newfront->data, front->data + diff, newfront->len); - - DeleteBlock(front); - this->blockqueue.pop_front(); - this->blockqueue.push_front(newfront); - } - } -} -BlockStream* BlockStream::GetBlocks (uint64_t len) -{ - if(len > this->length) - return NULL; - - BlockStream *blocks = new BlockStream(); - - uint64_t actLen = 0; - - while(actLen < len) - { - block_t *front = this->blockqueue.front(); - - if((actLen + front->len) <= len) - { - this->length -= front->len; - actLen += front->len; - - blocks->PushBack(front); - this->blockqueue.pop_front(); - } - else - { - uint32_t diff = (uint32_t) (len - actLen); - this->length -= diff; - actLen += diff; - block_t *block = AllocBlock(diff); - block_t* newfront = AllocBlock(front->len - diff); - - memcpy(block->data, front->data, diff); - blocks->PushBack(block); - - memcpy(newfront->data, front->data+ diff, newfront->len); - - DeleteBlock(front); - this->blockqueue.pop_front(); - this->blockqueue.push_front(newfront); - } - } - - return blocks; -} diff --git a/src/libdash/source/helpers/BlockStream.h b/src/libdash/source/helpers/BlockStream.h deleted file mode 100644 index 4b8b3fd5..00000000 --- a/src/libdash/source/helpers/BlockStream.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * BlockStream.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef __BLOCKSTREAM_H__ -#define __BLOCKSTREAM_H__ - -#include "config.h" - -#include "Block.h" - -namespace dash -{ - namespace helpers - { - class BlockStream - { - public: - BlockStream (); - virtual ~BlockStream (); - - virtual void PushBack (block_t *block); - virtual void PushFront (block_t *block); - virtual const block_t* GetBytes (uint32_t len); - virtual size_t GetBytes (uint8_t *data, size_t len); - virtual size_t PeekBytes (uint8_t *data, size_t len); - virtual size_t PeekBytes (uint8_t *data, size_t len, size_t offset); - virtual const block_t* GetFront (); - virtual const block_t* Front () const; - virtual uint64_t Length () const; - virtual uint8_t ByteAt (uint64_t position) const; - virtual const block_t* ToBlock (); - virtual void Clear (); - virtual void EraseFront (uint64_t len); - virtual BlockStream* GetBlocks (uint64_t len); - virtual void PopAndDeleteFront (); - - protected: - uint64_t length; - std::deque<block_t *> blockqueue; - - virtual bool BlockQueueGetBytes (uint8_t *data, uint32_t len); - virtual bool BlockQueuePeekBytes (uint8_t *data, uint32_t len, size_t offset); - }; - } -} - -#endif // __BLOCKSTREAM_H__
\ No newline at end of file diff --git a/src/libdash/source/helpers/Path.cpp b/src/libdash/source/helpers/Path.cpp deleted file mode 100644 index 301d9fa0..00000000 --- a/src/libdash/source/helpers/Path.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Path.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "Path.h" - -using namespace dash::helpers; - -std::string Path::CombinePaths (const std::string &path1, const std::string &path2) -{ - if(path1 == "") - return path2; - if(path2 == "") - return path1; - - char path1Last = path1.at(path1.size() - 1); - char path2First = path2.at(0); - - if(path1Last == '/' && path2First == '/') - return path1 + path2.substr(1, path2.size()); - - if(path1Last != '/' && path2First != '/') - return path1 + "/" + path2; - - return path1 + path2; -} -std::string Path::GetDirectoryPath (const std::string &path) -{ - int pos = path.find_last_of('/'); - - return path.substr(0, pos); -} -std::vector<std::string> Path::Split (const std::string &s, char delim) -{ - std::stringstream ss(s); - std::string item; - std::vector<std::string> ret; - - while(std::getline(ss, item, delim)) - ret.push_back(item); - - return ret; -} -bool Path::GetHostPortAndPath (const std::string &url, std::string &host, size_t &port, std::string& path) -{ - std::string hostPort = ""; - size_t found = 0; - size_t pathBegin = 0; - - if (url.substr(0,7) == "http://" || url.substr(0,8) == "https://") - { - found = url.find("//"); - pathBegin = url.find('/', found+2); - path = url.substr(pathBegin, std::string::npos); - - hostPort = url.substr(found+2, pathBegin - (found+2)); - found = hostPort.find(':'); - if (found != std::string::npos) - { - port = strtoul(hostPort.substr(found+1, std::string::npos).c_str(), NULL, 10); - } - host = hostPort.substr(0, found); - return (host.size() > 0) && (path.size() > 0); - } - else if(url.substr(0,5) == "ndn:/") - { - found = url.find("/"); - pathBegin = url.find('/', found+1); - path = url.substr(pathBegin, std::string::npos); - - hostPort = url.substr(found+1, pathBegin - (found+1)); - found = hostPort.find(':'); - if (found != std::string::npos) - { - port = strtoul(hostPort.substr(found+1, std::string::npos).c_str(), NULL, 10); - } - host = hostPort.substr(0, found); - return (host.size() > 0) && (path.size() > 0); - } - else if(url.substr(0,6) == "ccnx:/") - { - found = url.find("/"); - pathBegin = url.find('/', found+1); - path = url.substr(pathBegin, std::string::npos); - - hostPort = url.substr(found+1, pathBegin - (found+1)); - found = hostPort.find(':'); - if (found != std::string::npos) - { - port = strtoul(hostPort.substr(found+1, std::string::npos).c_str(), NULL, 10); - } - host = hostPort.substr(0, found); - return (host.size() > 0) && (path.size() > 0); - } - - return false; -} -bool Path::GetStartAndEndBytes (const std::string &byteRange, size_t &startByte, size_t &endByte) -{ - size_t found = 0; - - found = byteRange.find('-'); - if (found != std::string::npos && found < byteRange.size()-1 ) - { - startByte = strtoul(byteRange.substr(0, found).c_str(), NULL, 10); - endByte = strtoul(byteRange.substr(found+1, std::string::npos).c_str(), NULL, 10); - return (startByte <= endByte); - } - - return false; -} diff --git a/src/libdash/source/helpers/Path.h b/src/libdash/source/helpers/Path.h deleted file mode 100644 index 1c791baa..00000000 --- a/src/libdash/source/helpers/Path.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Path.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef PATH_H_ -#define PATH_H_ - -#include "config.h" - -namespace dash -{ - namespace helpers - { - class Path - { - public: - static std::string CombinePaths (const std::string &path1, const std::string &path2); - static std::string GetDirectoryPath (const std::string &path); - static std::vector<std::string> Split (const std::string &s, char delim); - static bool GetHostPortAndPath (const std::string &url, std::string &host, size_t &port, std::string& path); - static bool GetStartAndEndBytes (const std::string &byteRange, size_t &startByte, size_t &endByte); - }; - } -} - -#endif /* PATH_H_ */
\ No newline at end of file diff --git a/src/libdash/source/helpers/String.cpp b/src/libdash/source/helpers/String.cpp deleted file mode 100644 index 53da5592..00000000 --- a/src/libdash/source/helpers/String.cpp +++ /dev/null @@ -1,53 +0,0 @@ -/* - * String.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "String.h" - -using namespace dash::helpers; - -void String::Split (const std::string &s, char delim, std::vector<std::string>& vector) -{ - std::stringstream ss(s); - std::string item; - - while(std::getline(ss, item, delim)) - vector.push_back(item); -} -void String::Split (const std::string &s, char delim, std::vector<uint32_t>& vector) -{ - size_t lengthOfString = s.length(); - size_t pos = 0; - size_t i = 0; - uint32_t level = 0; - - while (pos != std::string::npos) - { - pos = s.find(delim, i); - - if (i < lengthOfString) - { - level = strtoul(s.substr(i, pos-i).c_str(), NULL, 10); - vector.push_back(level); - i = pos + 1; - } - } -} -bool String::ToBool (const std::string &s) -{ - if (s == "true" || s == "True" || s == "TRUE") - { - return true; - } - else - { - return false; - } -}
\ No newline at end of file diff --git a/src/libdash/source/helpers/String.h b/src/libdash/source/helpers/String.h deleted file mode 100644 index 73ac6db8..00000000 --- a/src/libdash/source/helpers/String.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * String.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef STRING_H_ -#define STRING_H_ - -#include "config.h" - -namespace dash -{ - namespace helpers - { - class String - { - public: - static void Split (const std::string &s, char delim, std::vector<std::string>& vector); - static void Split (const std::string &s, char delim, std::vector<uint32_t>& vector); - static bool ToBool (const std::string &s); - }; - } -} - -#endif /* STRING_H_ */
\ No newline at end of file diff --git a/src/libdash/source/helpers/SyncedBlockStream.cpp b/src/libdash/source/helpers/SyncedBlockStream.cpp deleted file mode 100644 index 84fa63cf..00000000 --- a/src/libdash/source/helpers/SyncedBlockStream.cpp +++ /dev/null @@ -1,250 +0,0 @@ -/* - * SyncedBlockStream.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "SyncedBlockStream.h" - -using namespace dash::helpers; - -SyncedBlockStream::SyncedBlockStream () : - eos (false) -{ - InitializeConditionVariable (&this->full); - InitializeCriticalSection (&this->monitorMutex); -} -SyncedBlockStream::~SyncedBlockStream () -{ - DeleteConditionVariable(&this->full); - DeleteCriticalSection(&this->monitorMutex); -} - -void SyncedBlockStream::PopAndDeleteFront () -{ - EnterCriticalSection(&this->monitorMutex); - - BlockStream::PopAndDeleteFront(); - - LeaveCriticalSection(&this->monitorMutex); -} -void SyncedBlockStream::PushBack (block_t *block) -{ - EnterCriticalSection(&this->monitorMutex); - - BlockStream::PushBack(block); - - WakeAllConditionVariable(&this->full); - LeaveCriticalSection(&this->monitorMutex); -} -void SyncedBlockStream::PushFront (block_t *block) -{ - EnterCriticalSection(&this->monitorMutex); - - BlockStream::PushFront(block); - - WakeAllConditionVariable(&this->full); - LeaveCriticalSection(&this->monitorMutex); -} -const block_t* SyncedBlockStream::GetBytes (uint32_t len) -{ - EnterCriticalSection(&this->monitorMutex); - - while(this->length == 0 && !this->eos) - SleepConditionVariableCS(&this->full, &this->monitorMutex, INFINITE); - - if(this->length == 0) - { - LeaveCriticalSection(&this->monitorMutex); - return NULL; - } - - const block_t* block = BlockStream::GetBytes(len); - LeaveCriticalSection(&this->monitorMutex); - - return block; -} -size_t SyncedBlockStream::GetBytes (uint8_t *data, size_t len) -{ - EnterCriticalSection(&this->monitorMutex); - - while(this->length == 0 && !this->eos) - SleepConditionVariableCS(&this->full, &this->monitorMutex, INFINITE); - - if(this->length == 0) - { - LeaveCriticalSection(&this->monitorMutex); - return 0; - } - - size_t ret = BlockStream::GetBytes(data, len); - LeaveCriticalSection(&this->monitorMutex); - - return ret; -} -size_t SyncedBlockStream::PeekBytes (uint8_t *data, size_t len) -{ - EnterCriticalSection(&this->monitorMutex); - - while(this->length == 0 && !this->eos) - SleepConditionVariableCS(&this->full, &this->monitorMutex, INFINITE); - - if(this->length == 0) - { - LeaveCriticalSection(&this->monitorMutex); - return 0; - } - - size_t ret = BlockStream::PeekBytes(data, len); - LeaveCriticalSection(&this->monitorMutex); - - return ret; -} -size_t SyncedBlockStream::PeekBytes (uint8_t *data, size_t len, size_t offset) -{ - EnterCriticalSection(&this->monitorMutex); - - while((this->length == 0 || offset >= this->length) && !this->eos) - SleepConditionVariableCS(&this->full, &this->monitorMutex, INFINITE); - - if(this->length == 0 || offset >= this->length) - { - LeaveCriticalSection(&this->monitorMutex); - return 0; - } - - size_t ret = BlockStream::PeekBytes(data, len, offset); - LeaveCriticalSection(&this->monitorMutex); - - return ret; -} -uint64_t SyncedBlockStream::Length () const -{ - EnterCriticalSection(&this->monitorMutex); - - uint64_t len = BlockStream::Length(); - - LeaveCriticalSection(&this->monitorMutex); - - return len; -} -const block_t* SyncedBlockStream::GetFront () -{ - EnterCriticalSection(&this->monitorMutex); - - while(this->length == 0 && !this->eos) - SleepConditionVariableCS(&this->full, &this->monitorMutex, INFINITE); - - if(this->length == 0) - { - LeaveCriticalSection(&this->monitorMutex); - return NULL; - } - - const block_t* block = BlockStream::GetFront(); - LeaveCriticalSection(&this->monitorMutex); - - return block; -} -const block_t* SyncedBlockStream::Front () const -{ - EnterCriticalSection(&this->monitorMutex); - - while(this->length == 0 && !this->eos) - SleepConditionVariableCS(&this->full, &this->monitorMutex, INFINITE); - - if(this->length == 0) - { - LeaveCriticalSection(&this->monitorMutex); - return NULL; - } - - const block_t* block = BlockStream::Front(); - LeaveCriticalSection(&this->monitorMutex); - - return block; -} -uint8_t SyncedBlockStream::ByteAt (uint64_t position) const -{ - EnterCriticalSection(&this->monitorMutex); - - while(this->length < position && !this->eos) - SleepConditionVariableCS(&this->full, &this->monitorMutex, INFINITE); - - if(this->length < position) - { - LeaveCriticalSection(&this->monitorMutex); - return 0; - } - - uint8_t ret = BlockStream::ByteAt(position); - LeaveCriticalSection(&this->monitorMutex); - - return ret; -} -const block_t* SyncedBlockStream::ToBlock () -{ - EnterCriticalSection(&this->monitorMutex); - - while(this->length == 0 && !this->eos) - SleepConditionVariableCS(&this->full, &this->monitorMutex, INFINITE); - - if(this->length == 0) - { - LeaveCriticalSection(&this->monitorMutex); - return NULL; - } - - const block_t* block = BlockStream::ToBlock(); - LeaveCriticalSection(&this->monitorMutex); - - return block; -} -void SyncedBlockStream::Clear () -{ - EnterCriticalSection(&this->monitorMutex); - - BlockStream::Clear(); - - LeaveCriticalSection(&this->monitorMutex); -} -void SyncedBlockStream::EraseFront (uint64_t len) -{ - EnterCriticalSection(&this->monitorMutex); - - BlockStream::EraseFront(len); - - LeaveCriticalSection(&this->monitorMutex); -} -BlockStream* SyncedBlockStream::GetBlocks (uint64_t len) -{ - EnterCriticalSection(&this->monitorMutex); - - while(this->length == 0 && !this->eos) - SleepConditionVariableCS(&this->full, &this->monitorMutex, INFINITE); - - if(this->length == 0) - { - LeaveCriticalSection(&this->monitorMutex); - return NULL; - } - - BlockStream *stream = BlockStream::GetBlocks(len); - LeaveCriticalSection(&this->monitorMutex); - - return stream; -} -void SyncedBlockStream::SetEOS (bool value) -{ - EnterCriticalSection(&this->monitorMutex); - - this->eos = value; - - WakeAllConditionVariable(&this->full); - LeaveCriticalSection(&this->monitorMutex); -} diff --git a/src/libdash/source/helpers/SyncedBlockStream.h b/src/libdash/source/helpers/SyncedBlockStream.h deleted file mode 100644 index 9e266c60..00000000 --- a/src/libdash/source/helpers/SyncedBlockStream.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * SyncedBlockStream.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef __SYNCEDBLOCKSTREAM_H__ -#define __SYNCEDBLOCKSTREAM_H__ - -#include "config.h" - -#include "BlockStream.h" -#include "../portable/MultiThreading.h" - -namespace dash -{ - namespace helpers - { - class SyncedBlockStream : public BlockStream - { - public: - SyncedBlockStream (); - virtual ~SyncedBlockStream (); - - virtual void PushBack (block_t *block); - virtual void PushFront (block_t *block); - virtual const block_t* GetBytes (uint32_t len); - virtual size_t GetBytes (uint8_t *data, size_t len); - virtual size_t PeekBytes (uint8_t *data, size_t len); - virtual size_t PeekBytes (uint8_t *data, size_t len, size_t offset); - virtual const block_t* GetFront (); - virtual const block_t* Front () const; - virtual uint64_t Length () const; - virtual uint8_t ByteAt (uint64_t position) const; - virtual const block_t* ToBlock (); - virtual void Clear (); - virtual void EraseFront (uint64_t len); - virtual BlockStream* GetBlocks (uint64_t len); - virtual void PopAndDeleteFront (); - virtual void SetEOS (bool value); - - private: - bool eos; - - mutable CRITICAL_SECTION monitorMutex; - mutable CONDITION_VARIABLE full; - - }; - } -} - -#endif // __SYNCEDBLOCKSTREAM_H__
\ No newline at end of file diff --git a/src/libdash/source/helpers/Time.cpp b/src/libdash/source/helpers/Time.cpp deleted file mode 100644 index e6ca2b81..00000000 --- a/src/libdash/source/helpers/Time.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Time.cpp - ***************************************************************************** - * Copyright (C) 2013, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "Time.h" - -using namespace dash::helpers; - -uint32_t Time::GetCurrentUTCTimeInSec () -{ - return mktime(Time::GetCurrentUTCTime()); -} -std::string Time::GetCurrentUTCTimeStr () -{ - char timeString[30]; - strftime(timeString, 30, "%Y-%m-%dT%H:%M:%SZ", Time::GetCurrentUTCTime()); - - return std::string(timeString); -} -struct tm* Time::GetCurrentUTCTime () -{ - time_t rawTime; - - time(&rawTime); - return gmtime(&rawTime); -} diff --git a/src/libdash/source/helpers/Time.h b/src/libdash/source/helpers/Time.h deleted file mode 100644 index e7de0cd9..00000000 --- a/src/libdash/source/helpers/Time.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Time.h - ***************************************************************************** - * Copyright (C) 2013, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef DASH_HELPERS_TIME_H_ -#define DASH_HELPERS_TIME_H_ - -#include <time.h> -#include "config.h" - -namespace dash -{ - namespace helpers - { - class Time - { - public: - static uint32_t GetCurrentUTCTimeInSec (); - static std::string GetCurrentUTCTimeStr (); - - private: - static struct tm* GetCurrentUTCTime (); - - }; - } -} - -#endif /* DASH_HELPERS_TIME_H_ */ diff --git a/src/libdash/source/libdash.cpp b/src/libdash/source/libdash.cpp deleted file mode 100644 index f26c8224..00000000 --- a/src/libdash/source/libdash.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/* - * libdash.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "../include/libdash.h" -#include "manager/DASHManager.h" - -using namespace dash; - -__declspec(dllexport) IDASHManager* __cdecl CreateDashManager() -{ - return new DASHManager(); -}
\ No newline at end of file diff --git a/src/libdash/source/manager/DASHManager.cpp b/src/libdash/source/manager/DASHManager.cpp deleted file mode 100644 index 7650111e..00000000 --- a/src/libdash/source/manager/DASHManager.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/* - * DASHManager.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "DASHManager.h" - -using namespace dash; -using namespace dash::xml; -using namespace dash::mpd; -using namespace dash::network; -using namespace dash::helpers; - -DASHManager::DASHManager () -{ -} -DASHManager::~DASHManager () -{ -} -IMPD* DASHManager::Open (char *path, std::string mUrl) -{ - DOMParser parser(path); - - uint32_t fetchTime = Time::GetCurrentUTCTimeInSec(); - - if (!parser.Parse(mUrl)) - return NULL; - - MPD* mpd = parser.GetRootNode()->ToMPD(); - - if (mpd) - mpd->SetFetchTime(fetchTime); - - return mpd; -} -void DASHManager::Delete () -{ - delete this; -} diff --git a/src/libdash/source/manager/DASHManager.h b/src/libdash/source/manager/DASHManager.h deleted file mode 100644 index 99ef188b..00000000 --- a/src/libdash/source/manager/DASHManager.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * DASHManager.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef DASHMANAGER_H_ -#define DASHMANAGER_H_ - -#include "config.h" - -#include "../xml/Node.h" -#include "../xml/DOMParser.h" -#include "IDASHManager.h" -#include "../helpers/Time.h" - -namespace dash -{ - class DASHManager : public IDASHManager - { - public: - DASHManager (); - virtual ~DASHManager (); - - mpd::IMPD* Open (char *path, std::string mUrl = ""); - void Delete (); - }; -} - -#endif /* DASHMANAGER_H_ */ diff --git a/src/libdash/source/metrics/HTTPTransaction.cpp b/src/libdash/source/metrics/HTTPTransaction.cpp deleted file mode 100644 index 2767b514..00000000 --- a/src/libdash/source/metrics/HTTPTransaction.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/* - * HTTPTransaction.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "HTTPTransaction.h" - -using namespace dash::metrics; - -HTTPTransaction::HTTPTransaction () : - tcpId (0), - type (dash::metrics::Other), - responseCode (0), - interval (0), - url (""), - actualUrl (""), - range (""), - tRequest (""), - tResponse (""), - httpHeader ("") -{ -} -HTTPTransaction::~HTTPTransaction() -{ - for (size_t i = 0; i < trace.size(); i++) - delete trace.at(i); -} - -uint32_t HTTPTransaction::TCPId () const -{ - return this->tcpId; -} -void HTTPTransaction::SetTCPId (uint32_t tcpId) -{ - this->tcpId = tcpId; -} -HTTPTransactionType HTTPTransaction::Type () const -{ - return this->type; -} -void HTTPTransaction::SetType (HTTPTransactionType type) -{ - this->type = type; -} -const std::string& HTTPTransaction::OriginalUrl () const -{ - return this->url; -} -void HTTPTransaction::SetOriginalUrl (const std::string& origUrl) -{ - this->url = origUrl; -} -const std::string& HTTPTransaction::ActualUrl () const -{ - return this->actualUrl; -} -void HTTPTransaction::SetActualUrl (const std::string& actUrl) -{ - this->actualUrl = actUrl; -} -const std::string& HTTPTransaction::Range () const -{ - return this->range; -} -void HTTPTransaction::SetRange (const std::string& range) -{ - this->range = range; -} -const std::string& HTTPTransaction::RequestSentTime () const -{ - return this->tRequest; -} -void HTTPTransaction::SetRequestSentTime (std::string tRequest) -{ - this->tRequest = tRequest; -} -const std::string& HTTPTransaction::ResponseReceivedTime () const -{ - return this->tResponse; -} -void HTTPTransaction::SetResponseReceivedTime (std::string tResponse) -{ - this->tResponse = tResponse; -} -uint16_t HTTPTransaction::ResponseCode () const -{ - return this->responseCode; -} -void HTTPTransaction::SetResponseCode (uint16_t respCode) -{ - this->responseCode = respCode; -} -uint64_t HTTPTransaction::Interval () const -{ - return this->interval; -} -void HTTPTransaction::SetInterval (uint64_t interval) -{ - this->interval = interval; -} -const std::vector<IThroughputMeasurement *>& HTTPTransaction::ThroughputTrace () const -{ - return (std::vector<IThroughputMeasurement *> &) this->trace; -} -void HTTPTransaction::AddThroughputMeasurement (ThroughputMeasurement *throuputEntry) -{ - this->trace.push_back(throuputEntry); -} -const std::string& HTTPTransaction::HTTPHeader () const -{ - return this->httpHeader; -} -void HTTPTransaction::AddHTTPHeaderLine (std::string headerLine) -{ - this->httpHeader.append(headerLine); -} diff --git a/src/libdash/source/metrics/HTTPTransaction.h b/src/libdash/source/metrics/HTTPTransaction.h deleted file mode 100644 index 77c69234..00000000 --- a/src/libdash/source/metrics/HTTPTransaction.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * HTTPTransaction.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef HTTPTRANSACTION_H_ -#define HTTPTRANSACTION_H_ - -#include "IHTTPTransaction.h" -#include "ThroughputMeasurement.h" - -namespace dash -{ - namespace metrics - { - class HTTPTransaction : public IHTTPTransaction - { - public: - HTTPTransaction (); - virtual ~HTTPTransaction (); - - uint32_t TCPId () const; - HTTPTransactionType Type () const; - const std::string& OriginalUrl () const; - const std::string& ActualUrl () const; - const std::string& Range () const; - const std::string& RequestSentTime () const; - const std::string& ResponseReceivedTime () const; - uint16_t ResponseCode () const; - uint64_t Interval () const; - const std::vector<IThroughputMeasurement *>& ThroughputTrace () const; - const std::string& HTTPHeader () const; - - void SetTCPId (uint32_t tcpId); - void SetType (HTTPTransactionType type); - void SetOriginalUrl (const std::string& origUrl); - void SetActualUrl (const std::string& actUrl); - void SetRange (const std::string& range); - void SetRequestSentTime (std::string tRequest); - void SetResponseReceivedTime (std::string tResponse); - void SetResponseCode (uint16_t respCode); - void SetInterval (uint64_t interval); - void AddThroughputMeasurement (ThroughputMeasurement *throuputEntry); - void AddHTTPHeaderLine (std::string headerLine); - - private: - uint32_t tcpId; - HTTPTransactionType type; - std::string url; - std::string actualUrl; - std::string range; - std::string tRequest; - std::string tResponse; - uint16_t responseCode; - uint64_t interval; - std::vector<ThroughputMeasurement *> trace; - std::string httpHeader; - }; - } -} - -#endif /* HTTPTRANSACTION_H_ */ diff --git a/src/libdash/source/metrics/TCPConnection.cpp b/src/libdash/source/metrics/TCPConnection.cpp deleted file mode 100644 index 581b0539..00000000 --- a/src/libdash/source/metrics/TCPConnection.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - * TCPConnection.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "TCPConnection.h" - -using namespace dash::metrics; - -TCPConnection::TCPConnection () -{ -} -TCPConnection::~TCPConnection() -{ -} - -uint32_t TCPConnection::TCPId () const -{ - return this->tcpId; -} -void TCPConnection::SetTCPId (uint32_t tcpId) -{ - this->tcpId = tcpId; -} -const std::string& TCPConnection::DestinationAddress () const -{ - return this->dest; -} -void TCPConnection::SetDestinationAddress (const std::string& destAddress) -{ - this->dest = destAddress; -} -const std::string& TCPConnection::ConnectionOpenedTime () const -{ - return this->tOpen; -} -void TCPConnection::SetConnectionOpenedTime (std::string tOpen) -{ - this->tOpen = tOpen; -} -const std::string& TCPConnection::ConnectionClosedTime () const -{ - return this->tClose; -} -void TCPConnection::SetConnectionClosedTime (std::string tClose) -{ - this->tClose = tClose; -} -uint64_t TCPConnection::ConnectionTime () const -{ - return this->tConnect; -} -void TCPConnection::SetConnectionTime (uint64_t tConnect) -{ - this->tConnect = tConnect; -} diff --git a/src/libdash/source/metrics/TCPConnection.h b/src/libdash/source/metrics/TCPConnection.h deleted file mode 100644 index d4618d7f..00000000 --- a/src/libdash/source/metrics/TCPConnection.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * TCPConnection.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef TCPCONNECTION_H_ -#define TCPCONNECTION_H_ - -#include "ITCPConnection.h" - -namespace dash -{ - namespace metrics - { - class TCPConnection : public ITCPConnection - { - public: - TCPConnection (); - virtual ~TCPConnection (); - - uint32_t TCPId () const; - const std::string& DestinationAddress () const; - const std::string& ConnectionOpenedTime () const; - const std::string& ConnectionClosedTime () const; - uint64_t ConnectionTime () const; - - void SetTCPId (uint32_t tcpId); - void SetDestinationAddress (const std::string& destAddress); - void SetConnectionOpenedTime (std::string tOpen); - void SetConnectionClosedTime (std::string tClose); - void SetConnectionTime (uint64_t tConnect); - - private: - uint32_t tcpId; - std::string dest; - std::string tOpen; - std::string tClose; - uint64_t tConnect; - }; - } -} - -#endif /* TCPCONNECTION_H_ */ diff --git a/src/libdash/source/metrics/ThroughputMeasurement.cpp b/src/libdash/source/metrics/ThroughputMeasurement.cpp deleted file mode 100644 index 8d2c485e..00000000 --- a/src/libdash/source/metrics/ThroughputMeasurement.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* - * ThroughputMeasurement.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "ThroughputMeasurement.h" - -using namespace dash::metrics; - -ThroughputMeasurement::ThroughputMeasurement () -{ -} -ThroughputMeasurement::~ThroughputMeasurement() -{ -} - -const std::string& ThroughputMeasurement::StartOfPeriod () const -{ - return this->startOfPeriod; -} -void ThroughputMeasurement::SetStartOfPeriod (std::string start) -{ - this->startOfPeriod = start; -} -uint64_t ThroughputMeasurement::DurationOfPeriod () const -{ - return this->durationOfPeriod; -} -void ThroughputMeasurement::SetDurationOfPeriod (uint64_t duration) -{ - this->durationOfPeriod = duration; -} -const std::vector<uint32_t>& ThroughputMeasurement::ReceivedBytesPerTrace () const -{ - return this->receivedBytesPerTrace; -} -void ThroughputMeasurement::AddReceivedBytes (uint32_t numberOfBytes) -{ - this->receivedBytesPerTrace.push_back(numberOfBytes); -} diff --git a/src/libdash/source/metrics/ThroughputMeasurement.h b/src/libdash/source/metrics/ThroughputMeasurement.h deleted file mode 100644 index 817e30d9..00000000 --- a/src/libdash/source/metrics/ThroughputMeasurement.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * ThroughputMeasurement.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef THROUGHPUTMEASUREMENT_H_ -#define THROUGHPUTMEASUREMENT_H_ - -#include "IThroughputMeasurement.h" - -namespace dash -{ - namespace metrics - { - class ThroughputMeasurement : public IThroughputMeasurement - { - public: - ThroughputMeasurement (); - virtual ~ThroughputMeasurement (); - - const std::string& StartOfPeriod () const; - uint64_t DurationOfPeriod () const; - const std::vector<uint32_t>& ReceivedBytesPerTrace () const; - - void SetStartOfPeriod (std::string startOfPeriod); - void SetDurationOfPeriod (uint64_t duration); - void AddReceivedBytes (uint32_t numberOfBytes); - - private: - std::string startOfPeriod; - uint64_t durationOfPeriod; - std::vector<uint32_t> receivedBytesPerTrace; - }; - } -} - -#endif /* THROUGHPUTMEASUREMENT_H_ */ diff --git a/src/libdash/source/mpd/AbstractMPDElement.cpp b/src/libdash/source/mpd/AbstractMPDElement.cpp deleted file mode 100644 index 146d1776..00000000 --- a/src/libdash/source/mpd/AbstractMPDElement.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* - * AbstractMPDElement.cpp - ***************************************************************************** - * Copyright (C) 2013, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "AbstractMPDElement.h" - -using namespace dash::mpd; -using namespace dash::xml; - -AbstractMPDElement::AbstractMPDElement () -{ -} -AbstractMPDElement::~AbstractMPDElement () -{ - for(size_t i = 0; i < this->additionalSubNodes.size(); i++) - delete(this->additionalSubNodes.at(i)); -} - -const std::vector<INode *> AbstractMPDElement::GetAdditionalSubNodes () const -{ - return this->additionalSubNodes; -} -const std::map<std::string, std::string> AbstractMPDElement::GetRawAttributes () const -{ - return this->rawAttributes; -} -void AbstractMPDElement::AddAdditionalSubNode (INode *node) -{ - this->additionalSubNodes.push_back(node); -} -void AbstractMPDElement::AddRawAttributes (std::map<std::string, std::string> attributes) -{ - this->rawAttributes = attributes; -}
\ No newline at end of file diff --git a/src/libdash/source/mpd/AbstractMPDElement.h b/src/libdash/source/mpd/AbstractMPDElement.h deleted file mode 100644 index b4235087..00000000 --- a/src/libdash/source/mpd/AbstractMPDElement.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * AbstractMPDElement.h - ***************************************************************************** - * Copyright (C) 2013, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef ABSTRACTMPDELEMENT_H_ -#define ABSTRACTMPDELEMENT_H_ - -#include "config.h" - -#include "IMPDElement.h" - -namespace dash -{ - namespace mpd - { - class AbstractMPDElement : public virtual IMPDElement - { - public: - AbstractMPDElement (); - virtual ~AbstractMPDElement (); - - virtual const std::vector<xml::INode *> GetAdditionalSubNodes () const; - virtual const std::map<std::string, std::string> GetRawAttributes () const; - virtual void AddAdditionalSubNode (xml::INode * node); - virtual void AddRawAttributes (std::map<std::string, std::string> attributes); - - private: - std::vector<xml::INode *> additionalSubNodes; - std::map<std::string, std::string> rawAttributes; - }; - } -} - -#endif /* ABSTRACTMPDELEMENT_H_ */ diff --git a/src/libdash/source/mpd/AdaptationSet.cpp b/src/libdash/source/mpd/AdaptationSet.cpp deleted file mode 100644 index b1a0331f..00000000 --- a/src/libdash/source/mpd/AdaptationSet.cpp +++ /dev/null @@ -1,343 +0,0 @@ -/* - * AdaptationSet.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "AdaptationSet.h" -#include <cstdlib> - -using namespace dash::mpd; - -AdaptationSet::AdaptationSet () : - segmentBase(NULL), - segmentList(NULL), - segmentTemplate(NULL), - xlinkHref(""), - xlinkActuate("onRequest"), - id(0), - lang(""), - contentType(""), - par(""), - minBandwidth(0), - maxBandwidth(0), - minWidth(0), - maxWidth(0), - minHeight(0), - maxHeight(0), - minFramerate(""), - maxFramerate(""), - segmentAlignmentIsBool(true), - subsegmentAlignmentIsBool(true), - usesSegmentAlignment(false), - usesSubsegmentAlignment(false), - segmentAlignment(0), - subsegmentAlignment(0), - isBitstreamSwitching(false) -{ -} -AdaptationSet::~AdaptationSet () -{ - for(size_t i = 0; i < this->accessibility.size(); i++) - delete(this->accessibility.at(i)); - for(size_t i = 0; i < this->role.size(); i++) - delete(this->role.at(i)); - for(size_t i = 0; i < this->rating.size(); i++) - delete(this->rating.at(i)); - for(size_t i = 0; i < this->viewpoint.size(); i++) - delete(this->viewpoint.at(i)); - for(size_t i = 0; i < this->contentComponent.size(); i++) - delete(this->contentComponent.at(i)); - for(size_t i = 0; i < this->baseURLs.size(); i++) - delete(this->baseURLs.at(i)); - for(size_t i = 0; i < this->representation.size(); i++) - delete(this->representation.at(i)); - - delete(segmentBase); - delete(segmentList); - delete(segmentTemplate); -} - -const std::vector<IDescriptor *>& AdaptationSet::GetAccessibility () const -{ - return (std::vector<IDescriptor *> &) this->accessibility; -} -void AdaptationSet::AddAccessibity (Descriptor *accessibility) -{ - this->accessibility.push_back(accessibility); -} -const std::vector<IDescriptor *>& AdaptationSet::GetRole () const -{ - return (std::vector<IDescriptor *> &) this->role; -} -void AdaptationSet::AddRole (Descriptor *role) -{ - this->role.push_back(role); -} -const std::vector<IDescriptor *>& AdaptationSet::GetRating () const -{ - return (std::vector<IDescriptor *> &) this->rating; -} -void AdaptationSet::AddRating (Descriptor *rating) -{ - this->rating.push_back(rating); -} -const std::vector<IDescriptor *>& AdaptationSet::GetViewpoint () const -{ - return (std::vector<IDescriptor *> &) this->viewpoint; -} -void AdaptationSet::AddViewpoint (Descriptor *viewpoint) -{ - this->viewpoint.push_back(viewpoint); -} -const std::vector<IContentComponent *>& AdaptationSet::GetContentComponent () const -{ - return (std::vector<IContentComponent *> &) this->contentComponent; -} -void AdaptationSet::AddContentComponent (ContentComponent *contentComponent) -{ - this->contentComponent.push_back(contentComponent); -} -const std::vector<IBaseUrl *>& AdaptationSet::GetBaseURLs () const -{ - return (std::vector<IBaseUrl *> &) this->baseURLs; -} -void AdaptationSet::AddBaseURL (BaseUrl *baseUrl) -{ - this->baseURLs.push_back(baseUrl); -} -ISegmentBase* AdaptationSet::GetSegmentBase () const -{ - return this->segmentBase; -} -void AdaptationSet::SetSegmentBase (SegmentBase *segmentBase) -{ - this->segmentBase = segmentBase; -} -ISegmentList* AdaptationSet::GetSegmentList () const -{ - return this->segmentList; -} -void AdaptationSet::SetSegmentList (SegmentList *segmentList) -{ - this->segmentList = segmentList; -} -ISegmentTemplate* AdaptationSet::GetSegmentTemplate () const -{ - return this->segmentTemplate; -} -void AdaptationSet::SetSegmentTemplate (SegmentTemplate *segmentTemplate) -{ - this->segmentTemplate = segmentTemplate; -} -const std::vector<IRepresentation *>& AdaptationSet::GetRepresentation () const -{ - return (std::vector<IRepresentation *> &) this->representation; -} -void AdaptationSet::AddRepresentation (Representation *representation) -{ - this->representation.push_back(representation); -} -const std::string& AdaptationSet::GetXlinkHref () const -{ - return this->xlinkHref; -} -void AdaptationSet::SetXlinkHref (const std::string& xlinkHref) -{ - this->xlinkHref = xlinkHref; -} -const std::string& AdaptationSet::GetXlinkActuate () const -{ - return this->xlinkActuate; -} -void AdaptationSet::SetXlinkActuate (const std::string& xlinkActuate) -{ - this->xlinkActuate = xlinkActuate; -} -uint32_t AdaptationSet::GetId () const -{ - return this->id; -} -void AdaptationSet::SetId (uint32_t id) -{ - this->id = id; -} -uint32_t AdaptationSet::GetGroup () const -{ - return this->group; -} -void AdaptationSet::SetGroup (uint32_t group) -{ - this->group = group; -} -const std::string& AdaptationSet::GetLang () const -{ - return this->lang; -} -void AdaptationSet::SetLang (const std::string& lang) -{ - this->lang = lang; -} -const std::string& AdaptationSet::GetContentType () const -{ - return this->contentType; -} -void AdaptationSet::SetContentType (const std::string& contentType) -{ - this->contentType = contentType; -} -const std::string& AdaptationSet::GetPar () const -{ - return this->par; -} -void AdaptationSet::SetPar (const std::string& par) -{ - this->par = par; -} -uint32_t AdaptationSet::GetMinBandwidth () const -{ - return this->minBandwidth; -} -void AdaptationSet::SetMinBandwidth (uint32_t minBandwidth) -{ - this->minBandwidth = minBandwidth; -} -uint32_t AdaptationSet::GetMaxBandwidth () const -{ - return this->maxBandwidth; -} -void AdaptationSet::SetMaxBandwidth (uint32_t maxBandwidth) -{ - this->maxBandwidth = maxBandwidth; -} -uint32_t AdaptationSet::GetMinWidth () const -{ - return this->minWidth; -} -void AdaptationSet::SetMinWidth (uint32_t minWidth) -{ - this->minWidth = minWidth; -} -uint32_t AdaptationSet::GetMaxWidth () const -{ - return this->maxWidth; -} -void AdaptationSet::SetMaxWidth (uint32_t maxWidth) -{ - this->maxWidth = maxWidth; -} -uint32_t AdaptationSet::GetMinHeight () const -{ - return this->minHeight; -} -void AdaptationSet::SetMinHeight (uint32_t minHeight) -{ - this->minHeight = minHeight; -} -uint32_t AdaptationSet::GetMaxHeight () const -{ - return this->maxHeight; -} -void AdaptationSet::SetMaxHeight (uint32_t maxHeight) -{ - this->maxHeight = maxHeight; -} -const std::string& AdaptationSet::GetMinFramerate () const -{ - return this->minFramerate; -} -void AdaptationSet::SetMinFramerate (const std::string& minFramerate) -{ - this->minFramerate = minFramerate; -} -const std::string& AdaptationSet::GetMaxFramerate () const -{ - return this->maxFramerate; -} -void AdaptationSet::SetMaxFramerate (const std::string& maxFramerate) -{ - this->maxFramerate = maxFramerate; -} -bool AdaptationSet::SegmentAlignmentIsBoolValue () const -{ - return this->segmentAlignmentIsBool; -} -bool AdaptationSet::SubsegmentAlignmentIsBoolValue () const -{ - return this->subsegmentAlignmentIsBool; -} -bool AdaptationSet::HasSegmentAlignment () const -{ - return this->usesSegmentAlignment; -} -bool AdaptationSet::HasSubsegmentAlignment () const -{ - return this->usesSubsegmentAlignment; -} -uint32_t AdaptationSet::GetSegmentAligment () const -{ - return this->segmentAlignment; -} -void AdaptationSet::SetSegmentAlignment (const std::string& segmentAlignment) -{ - if (segmentAlignment == "true" || segmentAlignment == "True" || segmentAlignment == "TRUE") - { - this->segmentAlignmentIsBool = true; - this->usesSegmentAlignment = true; - return; - } - - if (segmentAlignment == "false" || segmentAlignment == "False" || segmentAlignment == "FALSE") - { - this->segmentAlignmentIsBool = true; - this->usesSegmentAlignment = false; - return; - } - - this->segmentAlignmentIsBool = false; - this->segmentAlignment = strtoul(segmentAlignment.c_str(), NULL, 10); -} -void AdaptationSet::SetSubsegmentAlignment (const std::string& subsegmentAlignment) -{ - if (subsegmentAlignment == "true" || subsegmentAlignment == "True" || subsegmentAlignment == "TRUE") - { - this->subsegmentAlignmentIsBool = true; - this->usesSubsegmentAlignment = true; - return; - } - - if (subsegmentAlignment == "false" || subsegmentAlignment == "False" || subsegmentAlignment == "FALSE") - { - this->subsegmentAlignmentIsBool = true; - this->usesSubsegmentAlignment = false; - return; - } - - this->subsegmentAlignmentIsBool = false; - this->subsegmentAlignment = strtoul(subsegmentAlignment.c_str(), NULL, 10); -} -uint32_t AdaptationSet::GetSubsegmentAlignment () const -{ - return this->subsegmentAlignment; -} -uint8_t AdaptationSet::GetSubsegmentStartsWithSAP () const -{ - return this->subsegmentStartsWithSAP; -} -void AdaptationSet::SetSubsegmentStartsWithSAP (uint8_t subsegmentStartsWithSAP) -{ - this->subsegmentStartsWithSAP = subsegmentStartsWithSAP; -} -bool AdaptationSet::GetBitstreamSwitching () const -{ - return this->isBitstreamSwitching; -} -void AdaptationSet::SetBitstreamSwitching (bool value) -{ - this->isBitstreamSwitching = value; -} diff --git a/src/libdash/source/mpd/AdaptationSet.h b/src/libdash/source/mpd/AdaptationSet.h deleted file mode 100644 index 5a17cf4a..00000000 --- a/src/libdash/source/mpd/AdaptationSet.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * AdaptationSet.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef ADAPTATIONSET_H_ -#define ADAPTATIONSET_H_ - -#include "config.h" - -#include "IAdaptationSet.h" -#include "RepresentationBase.h" -#include "BaseUrl.h" -#include "SegmentBase.h" -#include "SegmentList.h" -#include "SegmentTemplate.h" -#include "ContentComponent.h" -#include "Representation.h" - -namespace dash -{ - namespace mpd - { - class AdaptationSet : public IAdaptationSet, public RepresentationBase - { - public: - AdaptationSet (); - virtual ~AdaptationSet (); - - const std::vector<IDescriptor *>& GetAccessibility () const; - const std::vector<IDescriptor *>& GetRole () const; - const std::vector<IDescriptor *>& GetRating () const; - const std::vector<IDescriptor *>& GetViewpoint () const; - const std::vector<IContentComponent *>& GetContentComponent () const; - const std::vector<IBaseUrl *>& GetBaseURLs () const; - ISegmentBase* GetSegmentBase () const; - ISegmentList* GetSegmentList () const; - ISegmentTemplate* GetSegmentTemplate () const; - const std::vector<IRepresentation *>& GetRepresentation () const; - const std::string& GetXlinkHref () const; - const std::string& GetXlinkActuate () const; - uint32_t GetId () const; - uint32_t GetGroup () const; - const std::string& GetLang () const; - const std::string& GetContentType () const; - const std::string& GetPar () const; - uint32_t GetMinBandwidth () const; - uint32_t GetMaxBandwidth () const; - uint32_t GetMinWidth () const; - uint32_t GetMaxWidth () const; - uint32_t GetMinHeight () const; - uint32_t GetMaxHeight () const; - const std::string& GetMinFramerate () const; - const std::string& GetMaxFramerate () const; - bool SegmentAlignmentIsBoolValue () const; - bool HasSegmentAlignment () const; - uint32_t GetSegmentAligment () const; - bool SubsegmentAlignmentIsBoolValue () const; - bool HasSubsegmentAlignment () const; - uint32_t GetSubsegmentAlignment () const; - uint8_t GetSubsegmentStartsWithSAP () const; - bool GetBitstreamSwitching () const; - - void AddAccessibity (Descriptor *accessibility); - void AddRole (Descriptor *role); - void AddRating (Descriptor *rating); - void AddViewpoint (Descriptor *viewpoint); - void AddContentComponent (ContentComponent *contentComponent); - void AddBaseURL (BaseUrl *baseURL); - void SetSegmentBase (SegmentBase *segmentBase); - void SetSegmentList (SegmentList *segmentList); - void SetSegmentTemplate (SegmentTemplate *segmentTemplate); - void AddRepresentation (Representation* representation); - void SetXlinkHref (const std::string& xlinkHref); - void SetXlinkActuate (const std::string& xlinkActuate); - void SetId (uint32_t id); - void SetGroup (uint32_t group); - void SetLang (const std::string& lang); - void SetContentType (const std::string& contentType); - void SetPar (const std::string& par); - void SetMinBandwidth (uint32_t minBandwidth); - void SetMaxBandwidth (uint32_t maxBandwidth); - void SetMinWidth (uint32_t minWidth); - void SetMaxWidth (uint32_t maxWidth); - void SetMinHeight (uint32_t minHeight); - void SetMaxHeight (uint32_t maxHeight); - void SetMinFramerate (const std::string& minFramerate); - void SetMaxFramerate (const std::string& maxFramerate); - void SetSegmentAlignment (const std::string& segmentAlignment); - void SetSubsegmentAlignment (const std::string& subsegmentAlignment); - void SetSubsegmentStartsWithSAP (uint8_t subsegmentStartsWithSAP); - void SetBitstreamSwitching (bool value); - - private: - std::vector<Descriptor *> accessibility; - std::vector<Descriptor *> role; - std::vector<Descriptor *> rating; - std::vector<Descriptor *> viewpoint; - std::vector<ContentComponent *> contentComponent; - std::vector<BaseUrl *> baseURLs; - SegmentBase *segmentBase; - SegmentList *segmentList; - SegmentTemplate *segmentTemplate; - std::vector<Representation *> representation; - std::string xlinkHref; - std::string xlinkActuate; - uint32_t id; - uint32_t group; - std::string lang; - std::string contentType; - std::string par; - uint32_t minBandwidth; - uint32_t maxBandwidth; - uint32_t minWidth; - uint32_t maxWidth; - uint32_t minHeight; - uint32_t maxHeight; - std::string minFramerate; - std::string maxFramerate; - bool segmentAlignmentIsBool; - bool subsegmentAlignmentIsBool; - bool usesSegmentAlignment; - bool usesSubsegmentAlignment; - uint32_t segmentAlignment; - uint32_t subsegmentAlignment; - uint8_t subsegmentStartsWithSAP; - bool isBitstreamSwitching; - }; - } -} - -#endif /* ADAPTATIONSET_H_ */ diff --git a/src/libdash/source/mpd/BaseUrl.cpp b/src/libdash/source/mpd/BaseUrl.cpp deleted file mode 100644 index 7bafe794..00000000 --- a/src/libdash/source/mpd/BaseUrl.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - * BaseUrl.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "BaseUrl.h" - -using namespace dash::mpd; - -BaseUrl::BaseUrl () : - url(""), - serviceLocation(""), - byteRange("") -{ -} -BaseUrl::~BaseUrl () -{ -} - -const std::string& BaseUrl::GetUrl () const -{ - return this->url; -} -void BaseUrl::SetUrl (const std::string& url) -{ - this->url = url; -} -const std::string& BaseUrl::GetServiceLocation () const -{ - return this->serviceLocation; -} -void BaseUrl::SetServiceLocation (const std::string& serviceLocation) -{ - this->serviceLocation = serviceLocation; -} -const std::string& BaseUrl::GetByteRange () const -{ - return this->byteRange; -} -void BaseUrl::SetByteRange (const std::string& byteRange) -{ - this->byteRange = byteRange; -} -ISegment* BaseUrl::ToMediaSegment (const std::vector<IBaseUrl *>& baseurls) const -{ - Segment *seg = new Segment(); - - if(seg->Init(baseurls, this->url, this->byteRange, dash::metrics::MediaSegment)) - return seg; - - delete(seg); - - return NULL; -} diff --git a/src/libdash/source/mpd/BaseUrl.h b/src/libdash/source/mpd/BaseUrl.h deleted file mode 100644 index 0147c1ed..00000000 --- a/src/libdash/source/mpd/BaseUrl.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * BaseUrl.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef BASEURL_H_ -#define BASEURL_H_ - -#include "config.h" - -#include "Segment.h" -#include "IBaseUrl.h" -#include "AbstractMPDElement.h" - -namespace dash -{ - namespace mpd - { - class BaseUrl : public IBaseUrl, public AbstractMPDElement - { - public: - BaseUrl (); - virtual ~BaseUrl(); - - const std::string& GetUrl () const; - const std::string& GetServiceLocation () const; - const std::string& GetByteRange () const; - - void SetUrl (const std::string& url); - void SetServiceLocation (const std::string& serviceLocation); - void SetByteRange (const std::string& byteRange); - - virtual ISegment* ToMediaSegment (const std::vector<IBaseUrl *>& baseurls) const; - - private: - std::string url; - std::string serviceLocation; - std::string byteRange; - }; - } -} - -#endif /* BASEURL_H_ */ diff --git a/src/libdash/source/mpd/ContentComponent.cpp b/src/libdash/source/mpd/ContentComponent.cpp deleted file mode 100644 index ce3de857..00000000 --- a/src/libdash/source/mpd/ContentComponent.cpp +++ /dev/null @@ -1,98 +0,0 @@ -/* - * ContentComponent.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "ContentComponent.h" - -using namespace dash::mpd; - -ContentComponent::ContentComponent () : - id(0), - lang(""), - contentType(""), - par("") -{ -} -ContentComponent::~ContentComponent () -{ - for(size_t i = 0; i < this->accessibility.size(); i++) - delete(this->accessibility.at(i)); - for(size_t i = 0; i < this->role.size(); i++) - delete(this->role.at(i)); - for(size_t i = 0; i < this->rating.size(); i++) - delete(this->rating.at(i)); - for(size_t i = 0; i < this->viewpoint.size(); i++) - delete(this->viewpoint.at(i)); -} - -const std::vector<IDescriptor *>& ContentComponent::GetAccessibility () const -{ - return (std::vector<IDescriptor *> &)this->accessibility; -} -void ContentComponent::AddAccessibity (Descriptor *accessibility) -{ - this->accessibility.push_back(accessibility); -} -const std::vector<IDescriptor *>& ContentComponent::GetRole () const -{ - return (std::vector<IDescriptor *> &)this->role; -} -void ContentComponent::AddRole (Descriptor *role) -{ - this->role.push_back(role); -} -const std::vector<IDescriptor *>& ContentComponent::GetRating () const -{ - return (std::vector<IDescriptor *> &)this->rating; -} -void ContentComponent::AddRating (Descriptor *rating) -{ - this->rating.push_back(rating); -} -const std::vector<IDescriptor *>& ContentComponent::GetViewpoint () const -{ - return (std::vector<IDescriptor *> &)this->viewpoint; -} -void ContentComponent::AddViewpoint (Descriptor *viewpoint) -{ - this->viewpoint.push_back(viewpoint); -} -uint32_t ContentComponent::GetId () const -{ - return this->id; -} -void ContentComponent::SetId (uint32_t id) -{ - this->id = id; -} -const std::string& ContentComponent::GetLang () const -{ - return this->lang; -} -void ContentComponent::SetLang (const std::string& lang) -{ - this->lang = lang; -} -const std::string& ContentComponent::GetContentType () const -{ - return this->contentType; -} -void ContentComponent::SetContentType (const std::string& contentType) -{ - this->contentType = contentType; -} -const std::string& ContentComponent::GetPar () const -{ - return this->par; -} -void ContentComponent::SetPar (const std::string& par) -{ - this->par = par; -} diff --git a/src/libdash/source/mpd/ContentComponent.h b/src/libdash/source/mpd/ContentComponent.h deleted file mode 100644 index b59ab6d8..00000000 --- a/src/libdash/source/mpd/ContentComponent.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * ContentComponent.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef CONTENTCOMPONENT_H_ -#define CONTENTCOMPONENT_H_ - -#include "config.h" - -#include "IContentComponent.h" -#include "Descriptor.h" -#include "AbstractMPDElement.h" - -namespace dash -{ - namespace mpd - { - class ContentComponent : public IContentComponent, public AbstractMPDElement - { - public: - ContentComponent (); - virtual ~ContentComponent (); - - const std::vector<IDescriptor *>& GetAccessibility () const; - const std::vector<IDescriptor *>& GetRole () const; - const std::vector<IDescriptor *>& GetRating () const; - const std::vector<IDescriptor *>& GetViewpoint () const; - uint32_t GetId () const; - const std::string& GetLang () const; - const std::string& GetContentType () const; - const std::string& GetPar () const; - - void AddAccessibity (Descriptor *accessibility); - void AddRole (Descriptor *role); - void AddRating (Descriptor *rating); - void AddViewpoint (Descriptor *viewpoint); - void SetId (uint32_t id); - void SetLang (const std::string& lang); - void SetContentType (const std::string& contentType); - void SetPar (const std::string& par); - - private: - std::vector<Descriptor *> accessibility; - std::vector<Descriptor *> role; - std::vector<Descriptor *> rating; - std::vector<Descriptor *> viewpoint; - uint32_t id; - std::string lang; - std::string contentType; - std::string par; - }; - } -} - -#endif /* CONTENTCOMPONENT_H_ */ diff --git a/src/libdash/source/mpd/Descriptor.cpp b/src/libdash/source/mpd/Descriptor.cpp deleted file mode 100644 index c6eb787b..00000000 --- a/src/libdash/source/mpd/Descriptor.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Descriptor.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "Descriptor.h" - -using namespace dash::mpd; - -Descriptor::Descriptor () : - schemeIdUri (""), - value ("") -{ -} -Descriptor::~Descriptor () -{ -} -const std::string& Descriptor::GetSchemeIdUri () const -{ - return this->schemeIdUri; -} -void Descriptor::SetSchemeIdUri (const std::string& schemeIdUri) -{ - this->schemeIdUri = schemeIdUri; -} -const std::string& Descriptor::GetValue () const -{ - return this->value; -} -void Descriptor::SetValue (const std::string& value) -{ - this->value = value; -} diff --git a/src/libdash/source/mpd/Descriptor.h b/src/libdash/source/mpd/Descriptor.h deleted file mode 100644 index 5cb66b94..00000000 --- a/src/libdash/source/mpd/Descriptor.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Descriptor.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef DESCRIPTOR_H_ -#define DESCRIPTOR_H_ - -#include "config.h" - -#include "IDescriptor.h" -#include "AbstractMPDElement.h" - -namespace dash -{ - namespace mpd - { - class Descriptor : public IDescriptor, public AbstractMPDElement - { - public: - Descriptor (); - virtual ~Descriptor (); - - const std::string& GetSchemeIdUri () const; - const std::string& GetValue () const; - - void SetValue (const std::string& value); - void SetSchemeIdUri (const std::string& schemeIdUri); - - private: - std::string schemeIdUri; - std::string value; - }; - } -} - -#endif /* DESCRIPTOR_H_ */ diff --git a/src/libdash/source/mpd/MPD.cpp b/src/libdash/source/mpd/MPD.cpp deleted file mode 100644 index 84e0e614..00000000 --- a/src/libdash/source/mpd/MPD.cpp +++ /dev/null @@ -1,212 +0,0 @@ -/* - * MPD.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "MPD.h" - -using namespace dash::mpd; -using namespace dash::metrics; - -MPD::MPD () : - id(""), - type("static"), - availabilityStarttime(""), - availabilityEndtime(""), - mediaPresentationDuration(""), - minimumUpdatePeriod(""), - minBufferTime(""), - timeShiftBufferDepth(""), - suggestedPresentationDelay(""), - maxSegmentDuration(""), - maxSubsegmentDuration("") -{ -} -MPD::~MPD () -{ - for(size_t i = 0; i < this->programInformations.size(); i++) - delete(this->programInformations.at(i)); - for(size_t i = 0; i < this->metrics.size(); i++) - delete(this->metrics.at(i)); - for(size_t i = 0; i < this->periods.size(); i++) - delete(this->periods.at(i)); - for(size_t i = 0; i < this->baseUrls.size(); i++) - delete(this->baseUrls.at(i)); -} - -const std::vector<IProgramInformation *>& MPD::GetProgramInformations () const -{ - return (std::vector<IProgramInformation *> &) this->programInformations; -} -void MPD::AddProgramInformation (ProgramInformation *programInformation) -{ - this->programInformations.push_back(programInformation); -} -const std::vector<IBaseUrl*>& MPD::GetBaseUrls () const -{ - return (std::vector<IBaseUrl*> &) this->baseUrls; -} -void MPD::AddBaseUrl (BaseUrl *url) -{ - this->baseUrls.push_back(url); -} -const std::vector<std::string>& MPD::GetLocations () const -{ - return this->locations; -} -void MPD::AddLocation (const std::string& location) -{ - this->locations.push_back(location); -} -const std::vector<IPeriod*>& MPD::GetPeriods () const -{ - return (std::vector<IPeriod*> &) this->periods; -} -void MPD::AddPeriod (Period *period) -{ - this->periods.push_back(period); -} -const std::vector<IMetrics *>& MPD::GetMetrics () const -{ - return (std::vector<IMetrics *> &) this->metrics; -} -void MPD::AddMetrics (Metrics *metrics) -{ - this->metrics.push_back(metrics); -} -const std::string& MPD::GetId () const -{ - return this->id; -} -void MPD::SetId (const std::string& id) -{ - this->id = id; -} -const std::vector<std::string>& MPD::GetProfiles () const -{ - return this->profiles; -} -void MPD::SetProfiles (const std::string& profiles) -{ - dash::helpers::String::Split(profiles, ',', this->profiles); -} -const std::string& MPD::GetType () const -{ - return this->type; -} -void MPD::SetType (const std::string& type) -{ - this->type = type; -} -const std::string& MPD::GetAvailabilityStarttime () const -{ - return this->availabilityStarttime; -} -void MPD::SetAvailabilityStarttime (const std::string& availabilityStarttime) -{ - this->availabilityStarttime = availabilityStarttime; -} -const std::string& MPD::GetAvailabilityEndtime () const -{ - return this->availabilityEndtime; -} -void MPD::SetAvailabilityEndtime (const std::string& availabilityEndtime) -{ - this->availabilityEndtime = availabilityEndtime; -} -const std::string& MPD::GetMediaPresentationDuration () const -{ - return this->mediaPresentationDuration; -} -void MPD::SetMediaPresentationDuration (const std::string& mediaPresentationDuration) -{ - this->mediaPresentationDuration = mediaPresentationDuration; -} -const std::string& MPD::GetMinimumUpdatePeriod () const -{ - return this->minimumUpdatePeriod; -} -void MPD::SetMinimumUpdatePeriod (const std::string& minimumUpdatePeriod) -{ - this->minimumUpdatePeriod = minimumUpdatePeriod; -} -const std::string& MPD::GetMinBufferTime () const -{ - return this->minBufferTime; -} -void MPD::SetMinBufferTime (const std::string& minBufferTime) -{ - this->minBufferTime = minBufferTime; -} -const std::string& MPD::GetTimeShiftBufferDepth () const -{ - return this->timeShiftBufferDepth; -} -void MPD::SetTimeShiftBufferDepth (const std::string& timeShiftBufferDepth) -{ - this->timeShiftBufferDepth = timeShiftBufferDepth; -} -const std::string& MPD::GetSuggestedPresentationDelay () const -{ - return this->suggestedPresentationDelay; -} -void MPD::SetSuggestedPresentationDelay (const std::string& suggestedPresentationDelay) -{ - this->suggestedPresentationDelay = suggestedPresentationDelay; -} -const std::string& MPD::GetMaxSegmentDuration () const -{ - return this->maxSegmentDuration; -} -void MPD::SetMaxSegmentDuration (const std::string& maxSegmentDuration) -{ - this->maxSegmentDuration = maxSegmentDuration; -} -const std::string& MPD::GetMaxSubsegmentDuration () const -{ - return this->maxSubsegmentDuration; -} -void MPD::SetMaxSubsegmentDuration (const std::string& maxSubsegmentDuration) -{ - this->maxSubsegmentDuration = maxSubsegmentDuration; -} -IBaseUrl* MPD::GetMPDPathBaseUrl () const -{ - return this->mpdPathBaseUrl; -} -void MPD::SetMPDPathBaseUrl (BaseUrl *mpdPath) -{ - this->mpdPathBaseUrl = mpdPath; -} -uint32_t MPD::GetFetchTime () const -{ - return this->fetchTime; -} -void MPD::SetFetchTime (uint32_t fetchTimeInSec) -{ - this->fetchTime = fetchTimeInSec; -} - - -const std::vector<ITCPConnection *>& MPD::GetTCPConnectionList () const -{ - return (std::vector<ITCPConnection *> &) this->tcpConnections; -} -void MPD::AddTCPConnection (TCPConnection *tcpConn) -{ - this->tcpConnections.push_back(tcpConn); -} -const std::vector<IHTTPTransaction *>& MPD::GetHTTPTransactionList () const -{ - return (std::vector<IHTTPTransaction *> &) this->httpTransactions; -} -void MPD::AddHTTPTransaction (HTTPTransaction *httpTransAct) -{ - this->httpTransactions.push_back(httpTransAct); -} diff --git a/src/libdash/source/mpd/MPD.h b/src/libdash/source/mpd/MPD.h deleted file mode 100644 index 9bcb38af..00000000 --- a/src/libdash/source/mpd/MPD.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * MPD.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef MPD_H_ -#define MPD_H_ - -#include "config.h" - -#include "IMPD.h" -#include "ProgramInformation.h" -#include "BaseUrl.h" -#include "Period.h" -#include "Metrics.h" -#include "AbstractMPDElement.h" -#include "../metrics/HTTPTransaction.h" -#include "../metrics/TCPConnection.h" - -namespace dash -{ - namespace mpd - { - class MPD : public IMPD, public AbstractMPDElement - { - public: - MPD (); - virtual ~MPD(); - - const std::vector<IProgramInformation *>& GetProgramInformations () const; - const std::vector<IBaseUrl *>& GetBaseUrls () const; - const std::vector<std::string>& GetLocations () const; - const std::vector<IPeriod *>& GetPeriods () const; - const std::vector<IMetrics *>& GetMetrics () const; - const std::string& GetId () const; - const std::vector<std::string>& GetProfiles () const; - const std::string& GetType () const; - const std::string& GetAvailabilityStarttime () const; - const std::string& GetAvailabilityEndtime () const; - const std::string& GetMediaPresentationDuration () const; - const std::string& GetMinimumUpdatePeriod () const; - const std::string& GetMinBufferTime () const; - const std::string& GetTimeShiftBufferDepth () const; - const std::string& GetSuggestedPresentationDelay () const; - const std::string& GetMaxSegmentDuration () const; - const std::string& GetMaxSubsegmentDuration () const; - IBaseUrl* GetMPDPathBaseUrl () const; - uint32_t GetFetchTime () const; - - const std::vector<dash::metrics::ITCPConnection *>& GetTCPConnectionList () const; - const std::vector<dash::metrics::IHTTPTransaction *>& GetHTTPTransactionList () const; - void AddTCPConnection (dash::metrics::TCPConnection *tcpConn); - void AddHTTPTransaction (dash::metrics::HTTPTransaction *httpTransAct); - - void AddProgramInformation (ProgramInformation *programInformation); - void AddBaseUrl (BaseUrl *url); - void AddLocation (const std::string& location); - void AddPeriod (Period *period); - void AddMetrics (Metrics *metrics); - void SetId (const std::string& id); - void SetProfiles (const std::string& profiles); - void SetType (const std::string& type); - void SetAvailabilityStarttime (const std::string& availabilityStarttime); - void SetAvailabilityEndtime (const std::string& availabilityEndtime); - void SetMediaPresentationDuration (const std::string& mediaPresentationDuration); - void SetMinimumUpdatePeriod (const std::string& minimumUpdatePeriod); - void SetMinBufferTime (const std::string& minBufferTime); - void SetTimeShiftBufferDepth (const std::string& timeShiftBufferDepth); - void SetSuggestedPresentationDelay (const std::string& suggestedPresentationDelay); - void SetMaxSegmentDuration (const std::string& maxSegmentDuration); - void SetMaxSubsegmentDuration (const std::string& maxSubsegmentDuration); - void SetMPDPathBaseUrl (BaseUrl *path); - void SetFetchTime (uint32_t fetchTimeInSec); - - private: - std::vector<ProgramInformation *> programInformations; - std::vector<BaseUrl *> baseUrls; - std::vector<std::string> locations; - std::vector<Period *> periods; - std::vector<Metrics *> metrics; - std::string id; - std::vector<std::string> profiles; - std::string type; - std::string availabilityStarttime; - std::string availabilityEndtime; - std::string mediaPresentationDuration; - std::string minimumUpdatePeriod; - std::string minBufferTime; - std::string timeShiftBufferDepth; - std::string suggestedPresentationDelay; - std::string maxSegmentDuration; - std::string maxSubsegmentDuration; - BaseUrl *mpdPathBaseUrl; - uint32_t fetchTime; - - std::vector<dash::metrics::TCPConnection *> tcpConnections; - std::vector<dash::metrics::HTTPTransaction *> httpTransactions; - }; - } -} -#endif /* MPD_H_ */ diff --git a/src/libdash/source/mpd/Metrics.cpp b/src/libdash/source/mpd/Metrics.cpp deleted file mode 100644 index 8e64dec4..00000000 --- a/src/libdash/source/mpd/Metrics.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Metrics.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "../mpd/Metrics.h" - -using namespace dash::mpd; - -Metrics::Metrics () : - metrics("") -{ -} -Metrics::~Metrics () -{ - for(size_t i = 0; i < this->reportings.size(); i++) - delete(this->reportings.at(i)); - for(size_t i = 0; i < this->ranges.size(); i++) - delete(this->ranges.at(i)); -} - -const std::vector<IDescriptor *>& Metrics::GetReportings () const -{ - return (std::vector<IDescriptor *> &)this->reportings; -} -void Metrics::AddReporting (Descriptor *reporting) -{ - this->reportings.push_back(reporting); -} -const std::vector<IRange *>& Metrics::GetRanges () const -{ - return (std::vector<IRange *> &)this->ranges; -} -void Metrics::AddRange (Range *range) -{ - this->ranges.push_back(range); -} -const std::string& Metrics::GetMetrics () const -{ - return this->metrics; -} -void Metrics::SetMetrics (const std::string& metrics) -{ - this->metrics = metrics; -} diff --git a/src/libdash/source/mpd/Metrics.h b/src/libdash/source/mpd/Metrics.h deleted file mode 100644 index c879f829..00000000 --- a/src/libdash/source/mpd/Metrics.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Metrics.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef METRICS_H_ -#define METRICS_H_ - -#include "config.h" - -#include <string> -#include <vector> - -#include "IMetrics.h" -#include "Descriptor.h" -#include "Range.h" -#include "AbstractMPDElement.h" - -namespace dash -{ - namespace mpd - { - class Metrics : public IMetrics, public AbstractMPDElement - { - public: - Metrics (); - virtual ~Metrics (); - - const std::vector<IDescriptor *>& GetReportings () const; - const std::vector<IRange *>& GetRanges () const; - const std::string& GetMetrics () const; - - void AddReporting (Descriptor *reporting); - void AddRange (Range *range); - void SetMetrics (const std::string& metrics); - - private: - std::vector<Descriptor *> reportings; - std::vector<Range *> ranges; - std::string metrics; - }; - } -} - -#endif /* METRICS_H_ */ diff --git a/src/libdash/source/mpd/MultipleSegmentBase.cpp b/src/libdash/source/mpd/MultipleSegmentBase.cpp deleted file mode 100644 index ccfba515..00000000 --- a/src/libdash/source/mpd/MultipleSegmentBase.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - * MultipleSegmentBase.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "MultipleSegmentBase.h" - -using namespace dash::mpd; - -MultipleSegmentBase::MultipleSegmentBase () : - bitstreamSwitching(NULL), - segmentTimeline(NULL), - duration(0), - startNumber(1) -{ -} -MultipleSegmentBase::~MultipleSegmentBase () -{ - delete(this->segmentTimeline); - delete(this->bitstreamSwitching); -} - -const ISegmentTimeline * MultipleSegmentBase::GetSegmentTimeline () const -{ - return (ISegmentTimeline *) this->segmentTimeline; -} -void MultipleSegmentBase::SetSegmentTimeline (SegmentTimeline *segmentTimeline) -{ - this->segmentTimeline = segmentTimeline; -} -const IURLType* MultipleSegmentBase::GetBitstreamSwitching () const -{ - return this->bitstreamSwitching; -} -void MultipleSegmentBase::SetBitstreamSwitching (URLType *bitstreamSwitching) -{ - this->bitstreamSwitching = bitstreamSwitching; -} -uint32_t MultipleSegmentBase::GetDuration () const -{ - return this->duration; -} -void MultipleSegmentBase::SetDuration (uint32_t duration) -{ - this->duration = duration; -} -uint32_t MultipleSegmentBase::GetStartNumber () const -{ - return this->startNumber; -} -void MultipleSegmentBase::SetStartNumber (uint32_t startNumber) -{ - this->startNumber = startNumber; -} diff --git a/src/libdash/source/mpd/MultipleSegmentBase.h b/src/libdash/source/mpd/MultipleSegmentBase.h deleted file mode 100644 index 386672ce..00000000 --- a/src/libdash/source/mpd/MultipleSegmentBase.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * MultipleSegmentBase.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef MULTIPLESEGMENTBASE_H_ -#define MULTIPLESEGMENTBASE_H_ - -#include "config.h" - -#include "IMultipleSegmentBase.h" -#include "SegmentBase.h" -#include "SegmentTimeline.h" -#include "URLType.h" - -namespace dash -{ - namespace mpd - { - class MultipleSegmentBase : public virtual IMultipleSegmentBase, public SegmentBase - { - public: - MultipleSegmentBase (); - virtual ~MultipleSegmentBase (); - - const ISegmentTimeline* GetSegmentTimeline () const; - const IURLType* GetBitstreamSwitching () const; - uint32_t GetDuration () const; - uint32_t GetStartNumber () const; - - void SetSegmentTimeline (SegmentTimeline *segmentTimeline); - void SetBitstreamSwitching (URLType *bitstreamSwitching); - void SetDuration (uint32_t duration); - void SetStartNumber (uint32_t startNumber); - - protected: - SegmentTimeline *segmentTimeline; - URLType *bitstreamSwitching; - uint32_t duration; - uint32_t startNumber; - }; - } -} - -#endif /* MULTIPLESEGMENTBASE_H_ */ diff --git a/src/libdash/source/mpd/Period.cpp b/src/libdash/source/mpd/Period.cpp deleted file mode 100644 index 291677ea..00000000 --- a/src/libdash/source/mpd/Period.cpp +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Period.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "Period.h" - -using namespace dash::mpd; - -Period::Period () : - segmentBase(NULL), - segmentList(NULL), - segmentTemplate(NULL), - xlinkActuate("onRequest"), - xlinkHref(""), - id(""), - start(""), - duration(""), - isBitstreamSwitching(false) -{ -} -Period::~Period () -{ - for(size_t i = 0; i < this->baseURLs.size(); i++) - delete(this->baseURLs.at(i)); - for(size_t i = 0; i < this->adaptationSets.size(); i++) - delete(this->adaptationSets.at(i)); - for(size_t i = 0; i < this->subsets.size(); i++) - delete(this->subsets.at(i)); - delete(segmentBase); - delete(segmentList); - delete(segmentTemplate); -} - -const std::vector<IBaseUrl *>& Period::GetBaseURLs () const -{ - return (std::vector<IBaseUrl *> &) this->baseURLs; -} -void Period::AddBaseURL (BaseUrl *baseUrl) -{ - this->baseURLs.push_back(baseUrl); -} -ISegmentBase* Period::GetSegmentBase () const -{ - return this->segmentBase; -} -void Period::SetSegmentBase (SegmentBase *segmentBase) -{ - this->segmentBase = segmentBase; -} -ISegmentList* Period::GetSegmentList () const -{ - return this->segmentList; -} -void Period::SetSegmentList (SegmentList *segmentList) -{ - this->segmentList = segmentList; -} -ISegmentTemplate* Period::GetSegmentTemplate () const -{ - return this->segmentTemplate; -} -void Period::SetSegmentTemplate (SegmentTemplate *segmentTemplate) -{ - this->segmentTemplate = segmentTemplate; -} -const std::vector<IAdaptationSet*>& Period::GetAdaptationSets () const -{ - return (std::vector<IAdaptationSet*> &) this->adaptationSets; -} -void Period::AddAdaptationSet (AdaptationSet *adaptationSet) -{ - if(adaptationSet != NULL) - this->adaptationSets.push_back(adaptationSet); -} -const std::vector<ISubset *>& Period::GetSubsets () const -{ - return (std::vector<ISubset *> &) this->subsets; -} -void Period::AddSubset (Subset *subset) -{ - this->subsets.push_back(subset); -} -const std::string& Period::GetXlinkHref () const -{ - return this->xlinkHref; -} -void Period::SetXlinkHref (const std::string& xlinkHref) -{ - this->xlinkHref = xlinkHref; -} -const std::string& Period::GetXlinkActuate () const -{ - return this->xlinkActuate; -} -void Period::SetXlinkActuate (const std::string& xlinkActuate) -{ - this->xlinkActuate = xlinkActuate; -} -const std::string& Period::GetId () const -{ - return this->id; -} -void Period::SetId (const std::string& id) -{ - this->id = id; -} -const std::string& Period::GetStart () const -{ - return this->start; -} -void Period::SetStart (const std::string& start) -{ - this->start = start; -} -const std::string& Period::GetDuration () const -{ - return this->duration; -} -void Period::SetDuration (const std::string& duration) -{ - this->duration = duration; -} -bool Period::GetBitstreamSwitching () const -{ - return this->isBitstreamSwitching; -} -void Period::SetBitstreamSwitching (bool value) -{ - this->isBitstreamSwitching = value; -} diff --git a/src/libdash/source/mpd/Period.h b/src/libdash/source/mpd/Period.h deleted file mode 100644 index 9e97f0cb..00000000 --- a/src/libdash/source/mpd/Period.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Period.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef PERIOD_H_ -#define PERIOD_H_ - -#include "config.h" - -#include "IPeriod.h" -#include "BaseUrl.h" -#include "AdaptationSet.h" -#include "Subset.h" -#include "SegmentBase.h" -#include "SegmentList.h" -#include "SegmentTemplate.h" -#include "AbstractMPDElement.h" - -namespace dash -{ - namespace mpd - { - class Period : public IPeriod, public AbstractMPDElement - { - public: - Period (); - virtual ~Period (); - - const std::vector<IBaseUrl *>& GetBaseURLs () const; - ISegmentBase* GetSegmentBase () const; - ISegmentList* GetSegmentList () const; - ISegmentTemplate* GetSegmentTemplate () const; - const std::vector<IAdaptationSet *>& GetAdaptationSets () const; - const std::vector<ISubset *>& GetSubsets () const; - const std::string& GetXlinkHref () const; - const std::string& GetXlinkActuate () const; - const std::string& GetId () const; - const std::string& GetStart () const; - const std::string& GetDuration () const; - bool GetBitstreamSwitching () const; - - void AddBaseURL (BaseUrl *baseURL); - void SetSegmentBase (SegmentBase *segmentBase); - void SetSegmentList (SegmentList *segmentList); - void SetSegmentTemplate (SegmentTemplate *segmentTemplate); - void AddAdaptationSet (AdaptationSet *AdaptationSet); - void AddSubset (Subset *subset); - void SetXlinkHref (const std::string& xlinkHref); - void SetXlinkActuate (const std::string& xlinkActuate); - void SetId (const std::string& id); - void SetStart (const std::string& start); - void SetDuration (const std::string& duration); - void SetBitstreamSwitching (bool value); - - private: - std::vector<BaseUrl *> baseURLs; - SegmentBase *segmentBase; - SegmentList *segmentList; - SegmentTemplate *segmentTemplate; - std::vector<AdaptationSet *> adaptationSets; - std::vector<Subset *> subsets; - std::string xlinkHref; - std::string xlinkActuate; - std::string id; - std::string start; - std::string duration; - bool isBitstreamSwitching; - }; - } -} - -#endif /* PERIOD_H_ */ diff --git a/src/libdash/source/mpd/ProgramInformation.cpp b/src/libdash/source/mpd/ProgramInformation.cpp deleted file mode 100644 index 2ba0d6ff..00000000 --- a/src/libdash/source/mpd/ProgramInformation.cpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - * ProgramInformation.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "ProgramInformation.h" - -using namespace dash::mpd; - -ProgramInformation::ProgramInformation () : - title(""), - source(""), - copyright(""), - lang(""), - moreInformationURL("") -{ -} -ProgramInformation::~ProgramInformation () -{ -} - -const std::string& ProgramInformation::GetTitle () const -{ - return this->title; -} -void ProgramInformation::SetTitle (const std::string& title) -{ - this->title = title; -} -const std::string& ProgramInformation::GetSource () const -{ - return this->source; -} -void ProgramInformation::SetSource (const std::string& source) -{ - this->source = source; -} -const std::string& ProgramInformation::GetCopyright () const -{ - return this->copyright; -} -void ProgramInformation::SetCopyright (const std::string& copyright) -{ - this->copyright = copyright; -} -const std::string& ProgramInformation::GetLang () const -{ - return this->lang; -} -void ProgramInformation::SetLang (const std::string& lang) -{ - this->lang = lang; -} -const std::string& ProgramInformation::GetMoreInformationURL () const -{ - return this->moreInformationURL; -} -void ProgramInformation::SetMoreInformationURL (const std::string& moreInfoURL) -{ - this->moreInformationURL = moreInfoURL; -} diff --git a/src/libdash/source/mpd/ProgramInformation.h b/src/libdash/source/mpd/ProgramInformation.h deleted file mode 100644 index 9b12f33d..00000000 --- a/src/libdash/source/mpd/ProgramInformation.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * ProgramInformation.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef PROGRAMINFORMATION_H_ -#define PROGRAMINFORMATION_H_ - -#include "config.h" - -#include "IProgramInformation.h" -#include "AbstractMPDElement.h" - -namespace dash -{ - namespace mpd - { - class ProgramInformation : public IProgramInformation, public AbstractMPDElement - { - public: - ProgramInformation (); - virtual ~ProgramInformation (); - - const std::string& GetTitle () const; - const std::string& GetSource () const; - const std::string& GetCopyright () const; - const std::string& GetLang () const; - const std::string& GetMoreInformationURL () const; - - void SetTitle (const std::string& title); - void SetSource (const std::string& source); - void SetCopyright (const std::string& copyright); - void SetLang (const std::string& lang); - void SetMoreInformationURL (const std::string& moreInformationURL); - - private: - std::string title; - std::string source; - std::string copyright; - std::string lang; - std::string moreInformationURL; - }; - } -} - -#endif /* PROGRAMINFORMATION_H_ */ diff --git a/src/libdash/source/mpd/Range.cpp b/src/libdash/source/mpd/Range.cpp deleted file mode 100644 index 6f0aed9f..00000000 --- a/src/libdash/source/mpd/Range.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Range.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "Range.h" - -using namespace dash::mpd; - -Range::Range () : - starttime(""), - duration("") -{ -} -Range::~Range () -{ -} - -const std::string& Range::GetStarttime () const -{ - return this->starttime; -} -void Range::SetStarttime (const std::string& starttime) -{ - this->starttime = starttime; -} -const std::string& Range::GetDuration () const -{ - return this->duration; -} -void Range::SetDuration (const std::string& duration) -{ - this->duration = duration; -} diff --git a/src/libdash/source/mpd/Range.h b/src/libdash/source/mpd/Range.h deleted file mode 100644 index f847b096..00000000 --- a/src/libdash/source/mpd/Range.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Range.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef RANGE_H_ -#define RANGE_H_ - -#include "config.h" - -#include "IRange.h" - -namespace dash -{ - namespace mpd - { - class Range : public IRange - { - public: - Range (); - virtual ~Range (); - - const std::string& GetStarttime () const; - const std::string& GetDuration () const; - - void SetStarttime (const std::string& start); - void SetDuration (const std::string& duration); - - private: - std::string starttime; - std::string duration; - }; - } -} - -#endif /* RANGE_H_ */ diff --git a/src/libdash/source/mpd/Representation.cpp b/src/libdash/source/mpd/Representation.cpp deleted file mode 100644 index fab7b493..00000000 --- a/src/libdash/source/mpd/Representation.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Representation.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "Representation.h" - -using namespace dash::mpd; - -Representation::Representation () : - segmentBase (NULL), - segmentList (NULL), - segmentTemplate (NULL), - id(""), - bandwidth (0), - qualityRanking (0) -{ -} -Representation::~Representation () -{ - for(size_t i = 0; i < this->baseURLs.size(); i++) - delete(this->baseURLs.at(i)); - for(size_t i = 0; i < this->subRepresentations.size(); i++) - delete(this->subRepresentations.at(i)); - - delete(this->segmentTemplate); - delete(this->segmentBase); - delete(this->segmentList); -} - -const std::vector<IBaseUrl *>& Representation::GetBaseURLs () const -{ - return (std::vector<IBaseUrl *> &) this->baseURLs; -} -void Representation::AddBaseURL (BaseUrl *baseUrl) -{ - this->baseURLs.push_back(baseUrl); -} -const std::vector<ISubRepresentation *>& Representation::GetSubRepresentations () const -{ - return (std::vector<ISubRepresentation *> &) this->subRepresentations; -} -void Representation::AddSubRepresentation (SubRepresentation *subRepresentation) -{ - this->subRepresentations.push_back(subRepresentation); -} -ISegmentBase* Representation::GetSegmentBase () const -{ - return this->segmentBase; -} -void Representation::SetSegmentBase (SegmentBase *segmentBase) -{ - this->segmentBase = segmentBase; -} -ISegmentList* Representation::GetSegmentList () const -{ - return this->segmentList; -} -void Representation::SetSegmentList (SegmentList *segmentList) -{ - this->segmentList = segmentList; -} -ISegmentTemplate* Representation::GetSegmentTemplate () const -{ - return this->segmentTemplate; -} -void Representation::SetSegmentTemplate (SegmentTemplate *segmentTemplate) -{ - this->segmentTemplate = segmentTemplate; -} -const std::string& Representation::GetId () const -{ - return this->id; -} -void Representation::SetId (const std::string &id) -{ - this->id = id; -} -uint32_t Representation::GetBandwidth () const -{ - return this->bandwidth; -} -void Representation::SetBandwidth (uint32_t bandwidth) -{ - this->bandwidth = bandwidth; -} -uint32_t Representation::GetQualityRanking () const -{ - return this->qualityRanking; -} -void Representation::SetQualityRanking (uint32_t qualityRanking) -{ - this->qualityRanking = qualityRanking; -} -const std::vector<std::string>& Representation::GetDependencyId () const -{ - return this->dependencyId; -} -void Representation::SetDependencyId (const std::string &dependencyId) -{ - dash::helpers::String::Split(dependencyId, ' ', this->dependencyId); -} -const std::vector<std::string>& Representation::GetMediaStreamStructureId () const -{ - return this->mediaStreamStructureId; -} -void Representation::SetMediaStreamStructureId (const std::string& mediaStreamStructureId) -{ - dash::helpers::String::Split(mediaStreamStructureId, ' ', this->mediaStreamStructureId); -} diff --git a/src/libdash/source/mpd/Representation.h b/src/libdash/source/mpd/Representation.h deleted file mode 100644 index a56f5828..00000000 --- a/src/libdash/source/mpd/Representation.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Representation.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef REPRESENTATION_H_ -#define REPRESENTATION_H_ - -#include "config.h" - -#include "IRepresentation.h" -#include "SegmentTemplate.h" -#include "RepresentationBase.h" -#include "BaseUrl.h" -#include "SubRepresentation.h" -#include "SegmentBase.h" -#include "SegmentList.h" -#include "../helpers/String.h" - -namespace dash -{ - namespace mpd - { - class Representation : public IRepresentation, public RepresentationBase - { - public: - Representation (); - virtual ~Representation (); - - const std::vector<IBaseUrl *>& GetBaseURLs () const; - const std::vector<ISubRepresentation *>& GetSubRepresentations () const; - ISegmentBase* GetSegmentBase () const; - ISegmentList* GetSegmentList () const; - ISegmentTemplate* GetSegmentTemplate () const; - const std::string& GetId () const; - uint32_t GetBandwidth () const; - uint32_t GetQualityRanking () const; - const std::vector<std::string>& GetDependencyId () const; - const std::vector<std::string>& GetMediaStreamStructureId () const; - - - void AddBaseURL (BaseUrl *baseURL); - void AddSubRepresentation (SubRepresentation *subRepresentation); - void SetSegmentBase (SegmentBase *segmentBase); - void SetSegmentList (SegmentList *segmentList); - void SetSegmentTemplate (SegmentTemplate *segmentTemplate); - void SetId (const std::string &id); - void SetBandwidth (uint32_t bandwidth); - void SetQualityRanking (uint32_t qualityRanking); - void SetDependencyId (const std::string &dependencyId); - void SetMediaStreamStructureId (const std::string &mediaStreamStructureId); - - private: - std::vector<BaseUrl *> baseURLs; - std::vector<SubRepresentation *> subRepresentations; - SegmentBase *segmentBase; - SegmentList *segmentList; - SegmentTemplate *segmentTemplate; - std::string id; - uint32_t bandwidth; - uint32_t qualityRanking; - std::vector<std::string> dependencyId; - std::vector<std::string> mediaStreamStructureId; - - }; - } -} - -#endif /* REPRESENTATION_H_ */ diff --git a/src/libdash/source/mpd/RepresentationBase.cpp b/src/libdash/source/mpd/RepresentationBase.cpp deleted file mode 100644 index f7b8970c..00000000 --- a/src/libdash/source/mpd/RepresentationBase.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/* - * RepresentationBase.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "RepresentationBase.h" - -using namespace dash::mpd; - -RepresentationBase::RepresentationBase () : - width(0), - height(0), - sar(""), - frameRate(""), - audioSamplingRate(""), - mimeType(""), - maximumSAPPeriod(0.0), - startWithSAP(0), - maxPlayoutRate(0.0), - codingDependency(false), - scanType("") -{ -} -RepresentationBase::~RepresentationBase () -{ - for(size_t i = 0; i < this->framePacking.size(); i++) - delete(this->framePacking.at(i)); - for(size_t i = 0; i < this->audioChannelConfiguration.size(); i++) - delete(this->audioChannelConfiguration.at(i)); - for(size_t i = 0; i < this->contentProtection.size(); i++) - delete(this->contentProtection.at(i)); -} - -const std::vector<IDescriptor*>& RepresentationBase::GetFramePacking () const -{ - return (std::vector<IDescriptor*> &) this->framePacking; -} -void RepresentationBase::AddFramePacking (Descriptor *framePacking) -{ - this->framePacking.push_back(framePacking); -} -const std::vector<IDescriptor*>& RepresentationBase::GetAudioChannelConfiguration () const -{ - return (std::vector<IDescriptor*> &) this->audioChannelConfiguration; -} -void RepresentationBase::AddAudioChannelConfiguration (Descriptor *audioChannelConfiguration) -{ - this->audioChannelConfiguration.push_back(audioChannelConfiguration); -} -const std::vector<IDescriptor*>& RepresentationBase::GetContentProtection () const -{ - return (std::vector<IDescriptor*> &) this->contentProtection; -} -void RepresentationBase::AddContentProtection (Descriptor *contentProtection) -{ - this->contentProtection.push_back(contentProtection); -} -const std::vector<std::string>& RepresentationBase::GetProfiles () const -{ - return this->profiles; -} -void RepresentationBase::SetProfiles (const std::string& profiles) -{ - dash::helpers::String::Split(profiles, ',', this->profiles); -} -uint32_t RepresentationBase::GetWidth () const -{ - return this->width; -} -void RepresentationBase::SetWidth (uint32_t width) -{ - this->width = width; -} -uint32_t RepresentationBase::GetHeight () const -{ - return this->height; -} -void RepresentationBase::SetHeight (uint32_t height) -{ - this->height = height; -} -std::string RepresentationBase::GetSar () const -{ - return this->sar; -} -void RepresentationBase::SetSar (const std::string& sar) -{ - this->sar = sar; -} -std::string RepresentationBase::GetFrameRate () const -{ - return this->frameRate; -} -void RepresentationBase::SetFrameRate (const std::string& frameRate) -{ - this->frameRate = frameRate; -} -std::string RepresentationBase::GetAudioSamplingRate () const -{ - return this->audioSamplingRate; -} -void RepresentationBase::SetAudioSamplingRate (const std::string& audioSamplingRate) -{ - this->audioSamplingRate = audioSamplingRate; -} -std::string RepresentationBase::GetMimeType () const -{ - return this->mimeType; -} -void RepresentationBase::SetMimeType (const std::string& mimeType) -{ - this->mimeType = mimeType; -} -const std::vector<std::string>& RepresentationBase::GetSegmentProfiles () const -{ - return this->segmentProfiles; -} -void RepresentationBase::SetSegmentProfiles (const std::string& segmentProfiles) -{ - dash::helpers::String::Split(segmentProfiles, ',', this->segmentProfiles); -} -const std::vector<std::string>& RepresentationBase::GetCodecs () const -{ - return this->codecs; -} -void RepresentationBase::SetCodecs (const std::string& codecs) -{ - dash::helpers::String::Split(codecs, ',', this->codecs); -} -double RepresentationBase::GetMaximumSAPPeriod () const -{ - return this->maximumSAPPeriod; -} -void RepresentationBase::SetMaximumSAPPeriod (double maximumSAPPeriod) -{ - this->maximumSAPPeriod = maximumSAPPeriod; -} -uint8_t RepresentationBase::GetStartWithSAP () const -{ - return this->startWithSAP; -} -void RepresentationBase::SetStartWithSAP (uint8_t startWithSAP) -{ - this->startWithSAP = startWithSAP; -} -double RepresentationBase::GetMaxPlayoutRate () const -{ - return this->maxPlayoutRate; -} -void RepresentationBase::SetMaxPlayoutRate (double maxPlayoutRate) -{ - this->maxPlayoutRate = maxPlayoutRate; -} -bool RepresentationBase::HasCodingDependency () const -{ - return this->codingDependency; -} -void RepresentationBase::SetCodingDependency (bool codingDependency) -{ - this->codingDependency = codingDependency; -} -std::string RepresentationBase::GetScanType () const -{ - return this->scanType; -} -void RepresentationBase::SetScanType (const std::string& scanType) -{ - this->scanType = scanType; -} diff --git a/src/libdash/source/mpd/RepresentationBase.h b/src/libdash/source/mpd/RepresentationBase.h deleted file mode 100644 index bb7fd287..00000000 --- a/src/libdash/source/mpd/RepresentationBase.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * RepresentationBase.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef REPRESENTATIONBASE_H_ -#define REPRESENTATIONBASE_H_ - -#include "config.h" - -#include "IRepresentationBase.h" -#include "Descriptor.h" -#include "../helpers/String.h" -#include "AbstractMPDElement.h" - -namespace dash -{ - namespace mpd - { - class RepresentationBase : public virtual IRepresentationBase, public AbstractMPDElement - { - public: - RepresentationBase (); - virtual ~RepresentationBase (); - - const std::vector<IDescriptor *>& GetFramePacking () const; - const std::vector<IDescriptor *>& GetAudioChannelConfiguration () const; - const std::vector<IDescriptor *>& GetContentProtection () const; - const std::vector<std::string>& GetProfiles () const; - uint32_t GetWidth () const; - uint32_t GetHeight () const; - std::string GetSar () const; - std::string GetFrameRate () const; - std::string GetAudioSamplingRate () const; - std::string GetMimeType () const; - const std::vector<std::string>& GetSegmentProfiles () const; - const std::vector<std::string>& GetCodecs () const; - double GetMaximumSAPPeriod () const; - uint8_t GetStartWithSAP () const; - double GetMaxPlayoutRate () const; - bool HasCodingDependency () const; - std::string GetScanType () const; - - void AddFramePacking (Descriptor *framePacking); - void AddAudioChannelConfiguration (Descriptor *audioChannelConfiguration); - void AddContentProtection (Descriptor *contentProtection); - void SetProfiles (const std::string& profiles); - void SetWidth (uint32_t width); - void SetHeight (uint32_t height); - void SetSar (const std::string& sar); - void SetFrameRate (const std::string& frameRate); - void SetAudioSamplingRate (const std::string& audioSamplingRate); - void SetMimeType (const std::string& mimeType); - void SetSegmentProfiles (const std::string& segmentProfiles); - void SetCodecs (const std::string& codecs); - void SetMaximumSAPPeriod (double maximumSAPPeroid); - void SetStartWithSAP (uint8_t startWithSAP); - void SetMaxPlayoutRate (double maxPlayoutRate); - void SetCodingDependency (bool codingDependency); - void SetScanType (const std::string& scanType); - - protected: - std::vector<Descriptor *> framePacking; - std::vector<Descriptor *> audioChannelConfiguration; - std::vector<Descriptor *> contentProtection; - std::vector<std::string> profiles; - uint32_t width; - uint32_t height; - std::string sar; - std::string frameRate; - std::string audioSamplingRate; - std::string mimeType; - std::vector<std::string> segmentProfiles; - std::vector<std::string> codecs; - double maximumSAPPeriod; - uint8_t startWithSAP; - double maxPlayoutRate; - bool codingDependency; - std::string scanType; - }; - } -} -#endif /* REPRESENTATIONBASE_H_ */ diff --git a/src/libdash/source/mpd/Segment.cpp b/src/libdash/source/mpd/Segment.cpp deleted file mode 100644 index 31200762..00000000 --- a/src/libdash/source/mpd/Segment.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Segment.cpp - ***************************************************************************** - * Copyright (C) 2013, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "Segment.h" - -using namespace dash::mpd; -using namespace dash::helpers; -using namespace dash::metrics; - -Segment::Segment () : - host(""), - port(0), - path(""), - startByte(0), - endByte(0), - hasByteRange(false) -{ -} -Segment::~Segment () -{ -} - -bool Segment::Init (const std::vector<IBaseUrl *>& baseurls, const std::string &uri, const std::string &range, HTTPTransactionType type) -{ - std::string host = ""; - size_t port = 80; - std::string path = ""; - size_t startByte = 0; - size_t endByte = 0; - - this->absoluteuri = ""; - - for(size_t i = 0; i < baseurls.size(); i++) - this->absoluteuri = Path::CombinePaths(this->absoluteuri, baseurls.at(i)->GetUrl()); - - this->absoluteuri = Path::CombinePaths(this->absoluteuri, uri); - - if (uri != "" && dash::helpers::Path::GetHostPortAndPath(this->absoluteuri, host, port, path)) - { - this->host = host; - this->port = port; - this->path = path; - - if (range != "" && dash::helpers::Path::GetStartAndEndBytes(range, startByte, endByte)) - { - this->range = range; - this->hasByteRange = true; - this->startByte = startByte; - this->endByte = endByte; - } - - this->type = type; - - return true; - } - - return false; -} -std::string& Segment::AbsoluteURI () -{ - return this->absoluteuri; -} -std::string& Segment::Host () -{ - return this->host; -} -size_t Segment::Port () -{ - return this->port; -} -std::string& Segment::Path () -{ - return this->path; -} -std::string& Segment::Range () -{ - return this->range; -} -size_t Segment::StartByte () -{ - return this->startByte; -} -size_t Segment::EndByte () -{ - return this->endByte; -} -bool Segment::HasByteRange () -{ - return this->hasByteRange; -} -void Segment::AbsoluteURI (std::string uri) -{ - this->absoluteuri = uri; -} -void Segment::Host (std::string host) -{ - this->host = host; -} -void Segment::Port (size_t port) -{ - this->port = port; -} -void Segment::Path (std::string path) -{ - this->path = path; -} -void Segment::Range (std::string range) -{ - this->range = range; -} -void Segment::StartByte (size_t startByte) -{ - this->startByte = startByte; -} -void Segment::EndByte (size_t endByte) -{ - this->endByte = endByte; -} -void Segment::HasByteRange (bool hasByteRange) -{ - this->hasByteRange = hasByteRange; -} -HTTPTransactionType Segment::GetType () -{ - return this->type; -} -void Segment::SetType (HTTPTransactionType type) -{ - this->type = type; -} diff --git a/src/libdash/source/mpd/Segment.h b/src/libdash/source/mpd/Segment.h deleted file mode 100644 index 6f44a6f2..00000000 --- a/src/libdash/source/mpd/Segment.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Segment.h - ***************************************************************************** - * Copyright (C) 2013, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef SEGMENT_H_ -#define SEGMENT_H_ - -#include "config.h" - -#include "../network/AbstractChunk.h" -#include "../helpers/Path.h" -#include "ISegment.h" -#include "IBaseUrl.h" -#include "../metrics/HTTPTransaction.h" - -namespace dash -{ - namespace mpd - { - class Segment : public network::AbstractChunk, public virtual ISegment - { - public: - Segment (); - virtual ~Segment(); - - bool Init (const std::vector<IBaseUrl *>& baseurls, const std::string &uri, - const std::string &range, dash::metrics::HTTPTransactionType type); - std::string& AbsoluteURI (); - std::string& Host (); - size_t Port (); - std::string& Path (); - std::string& Range (); - size_t StartByte (); - size_t EndByte (); - bool HasByteRange (); - dash::metrics::HTTPTransactionType GetType (); - - void AbsoluteURI (std::string uri); - void Host (std::string host); - void Port (size_t port); - void Path (std::string path); - void Range (std::string range); - void StartByte (size_t startByte); - void EndByte (size_t endByte); - void HasByteRange (bool hasByteRange); - void SetType (dash::metrics::HTTPTransactionType type); - - private: - std::string absoluteuri; - std::string host; - size_t port; - std::string path; - std::string range; - size_t startByte; - size_t endByte; - bool hasByteRange; - dash::metrics::HTTPTransactionType type; - }; - } -} - -#endif /* SEGMENT_H_ */ diff --git a/src/libdash/source/mpd/SegmentBase.cpp b/src/libdash/source/mpd/SegmentBase.cpp deleted file mode 100644 index b1d890d9..00000000 --- a/src/libdash/source/mpd/SegmentBase.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SegmentBase.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "SegmentBase.h" - -using namespace dash::mpd; - -SegmentBase::SegmentBase () : - initialization(NULL), - representationIndex(NULL), - timescale(1), - presentationTimeOffset(0), - indexRange(""), - indexRangeExact(false) -{ -} -SegmentBase::~SegmentBase () -{ - delete(this->initialization); - delete(this->representationIndex); -} - -const IURLType* SegmentBase::GetInitialization () const -{ - return this->initialization; -} -void SegmentBase::SetInitialization (URLType *initialization) -{ - this->initialization = initialization; -} -const IURLType* SegmentBase::GetRepresentationIndex () const -{ - return this->representationIndex; -} -void SegmentBase::SetRepresentationIndex (URLType *representationIndex) -{ - this->representationIndex = representationIndex; -} -uint32_t SegmentBase::GetTimescale () const -{ - return this->timescale; -} -void SegmentBase::SetTimescale (uint32_t timescale) -{ - this->timescale = timescale; -} -uint32_t SegmentBase::GetPresentationTimeOffset () const -{ - return this->presentationTimeOffset; -} -void SegmentBase::SetPresentationTimeOffset (uint32_t presentationTimeOffset) -{ - this->presentationTimeOffset = presentationTimeOffset; -} -const std::string& SegmentBase::GetIndexRange () const -{ - return this->indexRange; -} -void SegmentBase::SetIndexRange (const std::string& indexRange) -{ - this->indexRange = indexRange; -} -bool SegmentBase::HasIndexRangeExact () const -{ - return this->indexRangeExact; -} -void SegmentBase::SetIndexRangeExact (bool indexRangeExact) -{ - this->indexRangeExact = indexRangeExact; -} diff --git a/src/libdash/source/mpd/SegmentBase.h b/src/libdash/source/mpd/SegmentBase.h deleted file mode 100644 index d627eb04..00000000 --- a/src/libdash/source/mpd/SegmentBase.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * SegmentBase.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef SEGMENTBASE_H_ -#define SEGMENTBASE_H_ - -#include "config.h" - -#include "ISegmentBase.h" -#include "URLType.h" -#include "AbstractMPDElement.h" - -namespace dash -{ - namespace mpd - { - class SegmentBase : public virtual ISegmentBase, public AbstractMPDElement - { - public: - SegmentBase (); - virtual ~SegmentBase (); - - const IURLType* GetInitialization () const; - const IURLType* GetRepresentationIndex () const; - uint32_t GetTimescale () const; - uint32_t GetPresentationTimeOffset () const; - const std::string& GetIndexRange () const; - bool HasIndexRangeExact () const; - - void SetInitialization (URLType *initialization); - void SetRepresentationIndex (URLType *representationIndex); - void SetTimescale (uint32_t timescale); - void SetPresentationTimeOffset (uint32_t presentationTimeOffset); - void SetIndexRange (const std::string& indexRange); - void SetIndexRangeExact (bool indexRangeExact); - - protected: - URLType *initialization; - URLType *representationIndex; - uint32_t timescale; - uint32_t presentationTimeOffset; - std::string indexRange; - bool indexRangeExact; - }; - } -} - -#endif /* SEGMENTBASE_H_ */ diff --git a/src/libdash/source/mpd/SegmentList.cpp b/src/libdash/source/mpd/SegmentList.cpp deleted file mode 100644 index d96264cb..00000000 --- a/src/libdash/source/mpd/SegmentList.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - * SegmentList.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "SegmentList.h" - -using namespace dash::mpd; - -SegmentList::SegmentList () : - xlinkHref(""), - xlinkActuate("onRequest") -{ -} -SegmentList::~SegmentList () -{ - for (size_t i = 0; i < segmentURLs.size(); i++) - delete(this->segmentURLs.at(i)); -} - -const std::vector<ISegmentURL*>& SegmentList::GetSegmentURLs () const -{ - return (std::vector<ISegmentURL*> &) this->segmentURLs; -} -void SegmentList::AddSegmentURL (SegmentURL *segmentURL) -{ - this->segmentURLs.push_back(segmentURL); -} -const std::string& SegmentList::GetXlinkHref () const -{ - return this->xlinkHref; -} -void SegmentList::SetXlinkHref (const std::string& xlinkHref) -{ - this->xlinkHref = xlinkHref; -} -const std::string& SegmentList::GetXlinkActuate () const -{ - return this->xlinkActuate; -} -void SegmentList::SetXlinkActuate (const std::string& xlinkActuate) -{ - this->xlinkActuate = xlinkActuate; -} diff --git a/src/libdash/source/mpd/SegmentList.h b/src/libdash/source/mpd/SegmentList.h deleted file mode 100644 index b743c009..00000000 --- a/src/libdash/source/mpd/SegmentList.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * SegmentList.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef SEGMENTLIST_H_ -#define SEGMENTLIST_H_ - -#include "config.h" - -#include "ISegmentList.h" -#include "MultipleSegmentBase.h" -#include "SegmentURL.h" - -namespace dash -{ - namespace mpd - { - class SegmentList : public ISegmentList, public MultipleSegmentBase - { - public: - SegmentList (); - virtual ~SegmentList (); - - const std::vector<ISegmentURL *>& GetSegmentURLs () const; - const std::string& GetXlinkHref () const; - const std::string& GetXlinkActuate () const; - - void AddSegmentURL (SegmentURL *segmetURL); - void SetXlinkHref (const std::string& xlinkHref); - void SetXlinkActuate (const std::string& xlinkActuate); - - private: - std::vector<SegmentURL *> segmentURLs; - std::string xlinkHref; - std::string xlinkActuate; - }; - } -} - -#endif /* SEGMENTLIST_H_ */ diff --git a/src/libdash/source/mpd/SegmentTemplate.cpp b/src/libdash/source/mpd/SegmentTemplate.cpp deleted file mode 100644 index b92c4692..00000000 --- a/src/libdash/source/mpd/SegmentTemplate.cpp +++ /dev/null @@ -1,152 +0,0 @@ -/* - * SegmentTemplate.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "SegmentTemplate.h" - -using namespace dash::mpd; -using namespace dash::metrics; - -SegmentTemplate::SegmentTemplate () : - media(""), - index(""), - initialization(""), - bitstreamSwitching("") -{ -} -SegmentTemplate::~SegmentTemplate () -{ -} - -const std::string& SegmentTemplate::Getmedia () const -{ - return this->media; -} -void SegmentTemplate::SetMedia (const std::string& media) -{ - this->media = media; -} -const std::string& SegmentTemplate::Getindex () const -{ - return this->index; -} -void SegmentTemplate::SetIndex (const std::string& index) -{ - this->index = index; -} -const std::string& SegmentTemplate::Getinitialization () const -{ - return this->initialization; -} -void SegmentTemplate::SetInitialization (const std::string& initialization) -{ - this->initialization = initialization; -} -const std::string& SegmentTemplate::GetbitstreamSwitching () const -{ - return this->bitstreamSwitching; -} -void SegmentTemplate::SetBitstreamSwitching (const std::string& bitstreamSwitching) -{ - this->bitstreamSwitching = bitstreamSwitching; -} -ISegment* SegmentTemplate::ToInitializationSegment (const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth) const -{ - return ToSegment(this->initialization, baseurls, representationID, bandwidth, dash::metrics::InitializationSegment); -} -ISegment* SegmentTemplate::ToBitstreamSwitchingSegment (const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth) const -{ - return ToSegment(this->bitstreamSwitching, baseurls, representationID, bandwidth, dash::metrics::BitstreamSwitchingSegment); -} -ISegment* SegmentTemplate::GetMediaSegmentFromNumber (const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth, uint32_t number) const -{ - return ToSegment(this->media, baseurls, representationID, bandwidth, dash::metrics::MediaSegment, number); -} -ISegment* SegmentTemplate::GetIndexSegmentFromNumber (const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth, uint32_t number) const -{ - return ToSegment(this->index, baseurls, representationID, bandwidth, dash::metrics::IndexSegment, number); -} -ISegment* SegmentTemplate::GetMediaSegmentFromTime (const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth, uint32_t time) const -{ - return ToSegment(this->media, baseurls, representationID, bandwidth, dash::metrics::MediaSegment, 0, time); -} -ISegment* SegmentTemplate::GetIndexSegmentFromTime (const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth, uint32_t time) const -{ - return ToSegment(this->index, baseurls, representationID, bandwidth, dash::metrics::IndexSegment, 0, time); -} -std::string SegmentTemplate::ReplaceParameters (const std::string& uri, const std::string& representationID, uint32_t bandwidth, uint32_t number, uint32_t time) const -{ - std::vector<std::string> chunks; - std::string replacedUri = ""; - - dash::helpers::String::Split(uri, '$', chunks); - - if (chunks.size() > 1) - { - for(size_t i = 0; i < chunks.size(); i++) - { - if ( chunks.at(i) == "RepresentationID") { - chunks.at(i) = representationID; - continue; - } - - if (chunks.at(i).find("Bandwidth") == 0) - { - FormatChunk(chunks.at(i), bandwidth); - continue; - } - - if (chunks.at(i).find("Number") == 0) - { - FormatChunk(chunks.at(i), number); - continue; - } - - if (chunks.at(i).find("Time") == 0) - { - FormatChunk(chunks.at(i), time); - continue; - } - } - - for(size_t i = 0; i < chunks.size(); i++) - replacedUri += chunks.at(i); - - return replacedUri; - } - else - { - replacedUri = uri; - return replacedUri; - } -} -void SegmentTemplate::FormatChunk (std::string& uri, uint32_t number) const -{ - char formattedNumber [50]; - size_t pos = 0; - std::string formatTag = "%01d"; - - if ( (pos = uri.find("%0")) != std::string::npos) - formatTag = uri.substr(pos).append("d"); - - sprintf(formattedNumber, formatTag.c_str(), number); - uri = formattedNumber; -} -ISegment* SegmentTemplate::ToSegment (const std::string& uri, const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth, HTTPTransactionType type, uint32_t number, uint32_t time) const -{ - Segment *seg = new Segment(); - - if(seg->Init(baseurls, ReplaceParameters(uri, representationID, bandwidth, number, time), "", type)) - return seg; - - delete(seg); - - return NULL; -}
\ No newline at end of file diff --git a/src/libdash/source/mpd/SegmentTemplate.h b/src/libdash/source/mpd/SegmentTemplate.h deleted file mode 100644 index e5782a83..00000000 --- a/src/libdash/source/mpd/SegmentTemplate.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * SegmentTemplate.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef SEGMENTTEMPLATE_H_ -#define SEGMENTTEMPLATE_H_ - -#include "config.h" - -#include "ISegmentTemplate.h" -#include "MultipleSegmentBase.h" -#include "../helpers/String.h" - -namespace dash -{ - namespace mpd - { - class SegmentTemplate : public ISegmentTemplate, public MultipleSegmentBase - { - public: - SegmentTemplate (); - virtual ~SegmentTemplate (); - - const std::string& Getmedia () const; - const std::string& Getindex () const; - const std::string& Getinitialization () const; - const std::string& GetbitstreamSwitching () const; - ISegment* ToInitializationSegment (const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth) const; - ISegment* ToBitstreamSwitchingSegment (const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth) const; - ISegment* GetMediaSegmentFromNumber (const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth, uint32_t number) const; - ISegment* GetIndexSegmentFromNumber (const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth, uint32_t number) const; - ISegment* GetMediaSegmentFromTime (const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth, uint32_t time) const; - ISegment* GetIndexSegmentFromTime (const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth, uint32_t time) const; - - void SetMedia (const std::string& media); - void SetIndex (const std::string& index); - void SetInitialization (const std::string& initialization); - void SetBitstreamSwitching (const std::string& bitstreamSwichting); - - private: - std::string ReplaceParameters (const std::string& uri, const std::string& representationID, uint32_t bandwidth, uint32_t number, uint32_t time) const; - void FormatChunk (std::string& uri, uint32_t number) const; - ISegment* ToSegment (const std::string& uri, const std::vector<IBaseUrl *>& baseurls, const std::string& representationID, uint32_t bandwidth, - dash::metrics::HTTPTransactionType type, uint32_t number = 0, uint32_t time = 0) const; - - std::string media; - std::string index; - std::string initialization; - std::string bitstreamSwitching; - }; - } -} - -#endif /* SEGMENTTEMPLATE_H_ */ diff --git a/src/libdash/source/mpd/SegmentTimeline.cpp b/src/libdash/source/mpd/SegmentTimeline.cpp deleted file mode 100644 index 8a55dc46..00000000 --- a/src/libdash/source/mpd/SegmentTimeline.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/* - * SegmentTimeline.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "SegmentTimeline.h" - -using namespace dash::mpd; - -SegmentTimeline::SegmentTimeline () -{ -} -SegmentTimeline::~SegmentTimeline () -{ - for (size_t i=0; i < this->timelines.size(); i++) - delete(this->timelines.at(i)); -} - -std::vector<ITimeline *>& SegmentTimeline::GetTimelines () const -{ - return (std::vector<ITimeline*> &) this->timelines; -} -void SegmentTimeline::AddTimeline (Timeline *timeline) -{ - this->timelines.push_back(timeline); -}
\ No newline at end of file diff --git a/src/libdash/source/mpd/SegmentTimeline.h b/src/libdash/source/mpd/SegmentTimeline.h deleted file mode 100644 index 2d0ff2f8..00000000 --- a/src/libdash/source/mpd/SegmentTimeline.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * SegmentTimeline.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef SEGMENTTIMELINE_H_ -#define SEGMENTTIMELINE_H_ - -#include "config.h" - -#include "ISegmentTimeline.h" -#include "AbstractMPDElement.h" -#include "Timeline.h" - -namespace dash -{ - namespace mpd - { - class SegmentTimeline : public ISegmentTimeline, public AbstractMPDElement - { - public: - SegmentTimeline (); - virtual ~SegmentTimeline (); - - std::vector<ITimeline *>& GetTimelines () const; - void AddTimeline (Timeline *timeline); - - private: - std::vector<ITimeline *> timelines; - }; - } -} - -#endif /* SEGMENTTIMELINE_H_ */ diff --git a/src/libdash/source/mpd/SegmentURL.cpp b/src/libdash/source/mpd/SegmentURL.cpp deleted file mode 100644 index 765cc969..00000000 --- a/src/libdash/source/mpd/SegmentURL.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/* - * SegmentURL.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "SegmentURL.h" - -using namespace dash::mpd; -using namespace dash::helpers; - -SegmentURL::SegmentURL () : - mediaURI(""), - mediaRange(""), - indexURI(""), - indexRange(""), - bitrate(0) -{ -} -SegmentURL::~SegmentURL () -{ -} - -const std::string& SegmentURL::GetMediaURI () const -{ - return this->mediaURI; -} -void SegmentURL::SetMediaURI (const std::string& mediaURI) -{ - this->mediaURI = mediaURI; -} -const std::string& SegmentURL::GetMediaRange () const -{ - return this->mediaRange; -} -void SegmentURL::SetMediaRange (const std::string& mediaRange) -{ - this->mediaRange = mediaRange; -} -const std::string& SegmentURL::GetIndexURI () const -{ - return this->indexURI; -} -uint64_t SegmentURL::GetActualRate () -{ - return this->bitrate; -} -void SegmentURL::SetIndexURI (const std::string& indexURI) -{ - this->indexURI = indexURI; -} -const std::string& SegmentURL::GetIndexRange () const -{ - return this->indexRange; -} -void SegmentURL::SetIndexRange (const std::string& indexRange) -{ - this->indexRange = indexRange; -} -void SegmentURL::SetBitrate (const std::string& bitrate) -{ - this->bitrate = atoi(bitrate.c_str()); -} -ISegment* SegmentURL::ToMediaSegment (const std::vector<IBaseUrl *>& baseurls) const -{ - Segment *seg = new Segment(); - - if(seg->Init(baseurls, this->mediaURI, this->mediaRange, dash::metrics::MediaSegment)) - return seg; - - delete(seg); - - return NULL; -} -ISegment* SegmentURL::ToIndexSegment (const std::vector<IBaseUrl *>& baseurls) const -{ - Segment *seg = new Segment(); - - if(seg->Init(baseurls, this->indexURI, this->indexRange, dash::metrics::IndexSegment)) - return seg; - - delete(seg); - - return NULL; -} diff --git a/src/libdash/source/mpd/SegmentURL.h b/src/libdash/source/mpd/SegmentURL.h deleted file mode 100644 index 7dfdb56b..00000000 --- a/src/libdash/source/mpd/SegmentURL.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * SegmentURL.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef SEGMENTURL_H_ -#define SEGMENTURL_H_ - -#include "config.h" - -#include "ISegmentURL.h" -#include "../helpers/Path.h" -#include "Segment.h" -#include "AbstractMPDElement.h" - -namespace dash -{ - namespace mpd - { - class SegmentURL : public ISegmentURL, public AbstractMPDElement - { - public: - SegmentURL (); - virtual ~SegmentURL(); - - const std::string& GetMediaURI () const; - const std::string& GetMediaRange () const; - const std::string& GetIndexURI () const; - const std::string& GetIndexRange () const; - uint64_t GetActualRate (); - - ISegment* ToMediaSegment (const std::vector<IBaseUrl *>& baseurls) const; - ISegment* ToIndexSegment (const std::vector<IBaseUrl *>& baseurls) const; - - void SetMediaURI (const std::string& mediaURI); - void SetMediaRange (const std::string& mediaRange); - void SetIndexURI (const std::string& indexURI); - void SetIndexRange (const std::string& indexRange); - void SetBitrate (const std::string& bitrate); - private: - std::string mediaURI; - std::string mediaRange; - std::string indexURI; - std::string indexRange; - int bitrate; - }; - } -} - -#endif /* SEGMENTURL_H_ */ diff --git a/src/libdash/source/mpd/SubRepresentation.cpp b/src/libdash/source/mpd/SubRepresentation.cpp deleted file mode 100644 index 34b11e57..00000000 --- a/src/libdash/source/mpd/SubRepresentation.cpp +++ /dev/null @@ -1,55 +0,0 @@ -/* - * SubRepresentation.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "SubRepresentation.h" - -using namespace dash::mpd; - -SubRepresentation::SubRepresentation () : - level(0), - bandWidth(0) -{ -} -SubRepresentation::~SubRepresentation () -{ -} -uint32_t SubRepresentation::GetLevel () const -{ - return this->level; -} -void SubRepresentation::SetLevel (uint32_t level) -{ - this->level = level; -} -const std::vector<uint32_t>& SubRepresentation::GetDependencyLevel () const -{ - return this->dependencyLevel; -} -void SubRepresentation::SetDependencyLevel (const std::string& dependencyLevel) -{ - dash::helpers::String::Split(dependencyLevel, ' ', this->dependencyLevel); -} -uint32_t SubRepresentation::GetBandWidth () const -{ - return this->bandWidth; -} -void SubRepresentation::SetBandWidth (uint32_t bandWidth) -{ - this->bandWidth = bandWidth; -} -const std::vector<std::string>& SubRepresentation::GetContentComponent () const -{ - return this->contentComponent; -} -void SubRepresentation::SetContentComponent (const std::string& contentComponent) -{ - dash::helpers::String::Split(contentComponent, ' ', this->contentComponent); -} diff --git a/src/libdash/source/mpd/SubRepresentation.h b/src/libdash/source/mpd/SubRepresentation.h deleted file mode 100644 index f14fbfae..00000000 --- a/src/libdash/source/mpd/SubRepresentation.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * SubRepresentation.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef SUBREPRESENTATION_H_ -#define SUBREPRESENTATION_H_ - -#include "config.h" - -#include "ISubRepresentation.h" -#include "Descriptor.h" -#include "RepresentationBase.h" -#include "../helpers/String.h" - -namespace dash -{ - namespace mpd - { - class SubRepresentation : public ISubRepresentation, public RepresentationBase - { - public: - SubRepresentation (); - virtual ~SubRepresentation (); - - uint32_t GetLevel () const; - const std::vector<uint32_t>& GetDependencyLevel () const; - uint32_t GetBandWidth () const; - const std::vector<std::string>& GetContentComponent () const; - - void SetLevel (uint32_t level); - void SetDependencyLevel (const std::string& dependencyLevel); - void SetBandWidth (uint32_t bandWidth); - void SetContentComponent (const std::string& contentComponent); - - protected: - uint32_t level; - std::vector<uint32_t> dependencyLevel; - uint32_t bandWidth; - std::vector<std::string> contentComponent; - }; - } -} -#endif /* SUBREPRESENTATION_H_ */ diff --git a/src/libdash/source/mpd/Subset.cpp b/src/libdash/source/mpd/Subset.cpp deleted file mode 100644 index 6b0d2df6..00000000 --- a/src/libdash/source/mpd/Subset.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Subset.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "Subset.h" - -using namespace dash::mpd; - -Subset::Subset () -{ -} -Subset::~Subset () -{ -} - -const std::vector<uint32_t>& Subset::Contains () const -{ - return this->subset; -} -void Subset::SetSubset (const std::string& subset) -{ - dash::helpers::String::Split(subset, ' ', this->subset); -} diff --git a/src/libdash/source/mpd/Subset.h b/src/libdash/source/mpd/Subset.h deleted file mode 100644 index c56eb6e2..00000000 --- a/src/libdash/source/mpd/Subset.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Subset.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef SUBSET_H_ -#define SUBSET_H_ - -#include "config.h" - -#include "ISubset.h" -#include "../helpers/String.h" -#include "AbstractMPDElement.h" - -namespace dash -{ - namespace mpd - { - class Subset : public ISubset, public AbstractMPDElement - { - public: - Subset (); - virtual ~Subset (); - - const std::vector<uint32_t>& Contains () const; - - void SetSubset (const std::string& subset); - - private: - std::vector<uint32_t> subset; - }; - } -} - -#endif /* SUBSET_H_ */ diff --git a/src/libdash/source/mpd/Timeline.cpp b/src/libdash/source/mpd/Timeline.cpp deleted file mode 100644 index 624c6585..00000000 --- a/src/libdash/source/mpd/Timeline.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Timeline.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "Timeline.h" - -using namespace dash::mpd; - -Timeline::Timeline () : - startTime(0), - duration(0), - repeatCount(0) -{ -} -Timeline::~Timeline () -{ -} - -uint32_t Timeline::GetStartTime () const -{ - return this->startTime; -} -void Timeline::SetStartTime (uint32_t startTime) -{ - this->startTime = startTime; -} -uint32_t Timeline::GetDuration () const -{ - return this->duration; -} -void Timeline::SetDuration (uint32_t duration) -{ - this->duration = duration; -} -uint32_t Timeline::GetRepeatCount () const -{ - return this->repeatCount; -} -void Timeline::SetRepeatCount (uint32_t repeatCount) -{ - this->repeatCount = repeatCount; -}
\ No newline at end of file diff --git a/src/libdash/source/mpd/Timeline.h b/src/libdash/source/mpd/Timeline.h deleted file mode 100644 index 3caa331f..00000000 --- a/src/libdash/source/mpd/Timeline.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Timeline.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef TIMELINE_H_ -#define TIMELINE_H_ - -#include "config.h" - -#include "ITimeline.h" -#include "AbstractMPDElement.h" - -namespace dash -{ - namespace mpd - { - class Timeline : public ITimeline, public AbstractMPDElement - { - public: - Timeline (); - virtual ~Timeline (); - - uint32_t GetStartTime () const; - uint32_t GetDuration () const; - uint32_t GetRepeatCount () const; - - void SetStartTime (uint32_t startTime); - void SetDuration (uint32_t duration); - void SetRepeatCount (uint32_t repeatCount); - - private: - uint32_t startTime; - uint32_t duration; - uint32_t repeatCount; - }; - } -} - -#endif /* TIMELINE_H_ */ diff --git a/src/libdash/source/mpd/URLType.cpp b/src/libdash/source/mpd/URLType.cpp deleted file mode 100644 index 699672e7..00000000 --- a/src/libdash/source/mpd/URLType.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * URLType.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "URLType.h" - -using namespace dash::mpd; -using namespace dash::helpers; -using namespace dash::metrics; - -URLType::URLType () : - sourceURL(""), - range("") -{ -} -URLType::~URLType () -{ -} - -const std::string& URLType::GetSourceURL () const -{ - return this->sourceURL; -} -void URLType::SetSourceURL (const std::string& sourceURL) -{ - this->sourceURL = sourceURL; -} -const std::string& URLType::GetRange () const -{ - return this->range; -} -void URLType::SetRange (const std::string& range) -{ - this->range = range; -} -void URLType::SetType (HTTPTransactionType type) -{ - this->type = type; -} -ISegment* URLType::ToSegment (const std::vector<IBaseUrl *>& baseurls) const -{ - Segment *seg = new Segment(); - - if(seg->Init(baseurls, this->sourceURL, this->range, this->type)) - return seg; - - delete(seg); - - return NULL; -} diff --git a/src/libdash/source/mpd/URLType.h b/src/libdash/source/mpd/URLType.h deleted file mode 100644 index 1fcd00c7..00000000 --- a/src/libdash/source/mpd/URLType.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * URLType.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef URLTYPE_H_ -#define URLTYPE_H_ - -#include "config.h" - -#include "IURLType.h" -#include "Segment.h" -#include "../helpers/Path.h" -#include "AbstractMPDElement.h" - -namespace dash -{ - namespace mpd - { - class URLType : public IURLType, public AbstractMPDElement - { - public: - URLType (); - virtual ~URLType (); - - const std::string& GetSourceURL () const; - const std::string& GetRange () const; - ISegment* ToSegment (const std::vector<IBaseUrl *>& baseurls) const; - - void SetSourceURL (const std::string& sourceURL); - void SetRange (const std::string& range); - void SetType (dash::metrics::HTTPTransactionType type); - - private: - std::string sourceURL; - std::string range; - dash::metrics::HTTPTransactionType type; - }; - } -} - -#endif /* URLTYPE_H_ */ diff --git a/src/libdash/source/network/AbstractChunk.cpp b/src/libdash/source/network/AbstractChunk.cpp deleted file mode 100644 index 35774efe..00000000 --- a/src/libdash/source/network/AbstractChunk.cpp +++ /dev/null @@ -1,271 +0,0 @@ -/* - * AbstractChunk.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "AbstractChunk.h" - -using namespace dash::network; -using namespace dash::helpers; -using namespace dash::metrics; - -uint32_t AbstractChunk::BLOCKSIZE = 32768; - -AbstractChunk::AbstractChunk () : - connection (NULL), - dlThread (NULL), - bytesDownloaded (0) -{ -} -AbstractChunk::~AbstractChunk () -{ - this->AbortDownload(); - this->blockStream.Clear(); - DestroyThreadPortable(this->dlThread); -} - -void AbstractChunk::AbortDownload () -{ - this->stateManager.CheckAndSet(IN_PROGRESS, REQUEST_ABORT); - this->stateManager.CheckAndWait(REQUEST_ABORT, ABORTED); -} -bool AbstractChunk::StartDownload () -{ - if(this->stateManager.State() != NOT_STARTED) - return false; - curl_global_init(CURL_GLOBAL_ALL); - this->curlm = curl_multi_init(); - - this->curl = curl_easy_init(); - curl_easy_setopt(this->curl, CURLOPT_URL, this->AbsoluteURI().c_str()); - curl_easy_setopt(this->curl, CURLOPT_WRITEFUNCTION, CurlResponseCallback); - curl_easy_setopt(this->curl, CURLOPT_WRITEDATA, (void *)this); - /* Debug Callback */ - curl_easy_setopt(this->curl, CURLOPT_VERBOSE, 1L); - curl_easy_setopt(this->curl, CURLOPT_DEBUGFUNCTION, CurlDebugCallback); - curl_easy_setopt(this->curl, CURLOPT_DEBUGDATA, (void *)this); - curl_easy_setopt(this->curl, CURLOPT_FAILONERROR, true); - - if(this->HasByteRange()) - curl_easy_setopt(this->curl, CURLOPT_RANGE, this->Range().c_str()); - - curl_multi_add_handle(this->curlm, this->curl); - this->dlThread = CreateThreadPortable (DownloadInternalConnection, this); - - if(this->dlThread == NULL) - return false; - - this->stateManager.State(IN_PROGRESS); - - return true; -} -bool AbstractChunk::StartDownload (IConnection *connection) -{ - if(this->stateManager.State() != NOT_STARTED) - return false; - - this->connection = connection; - this->dlThread = CreateThreadPortable (DownloadExternalConnection, this); - - if(this->dlThread == NULL) - return false; - - this->stateManager.State(IN_PROGRESS); - - - return true; -} -int AbstractChunk::Read (uint8_t *data, size_t len) -{ - return this->blockStream.GetBytes(data, len); -} -int AbstractChunk::Peek (uint8_t *data, size_t len) -{ - return this->blockStream.PeekBytes(data, len); -} -int AbstractChunk::Peek (uint8_t *data, size_t len, size_t offset) -{ - return this->blockStream.PeekBytes(data, len, offset); -} -void AbstractChunk::AttachDownloadObserver (IDownloadObserver *observer) -{ - this->observers.push_back(observer); - this->stateManager.Attach(observer); -} -void AbstractChunk::DetachDownloadObserver (IDownloadObserver *observer) -{ - uint32_t pos = -1; - - for(size_t i = 0; i < this->observers.size(); i++) - if(this->observers.at(i) == observer) - pos = i; - - if(pos != -1) - this->observers.erase(this->observers.begin() + pos); - - this->stateManager.Detach(observer); -} -void* AbstractChunk::DownloadExternalConnection (void *abstractchunk) -{ - AbstractChunk *chunk = (AbstractChunk *) abstractchunk; - block_t *block = AllocBlock(chunk->BLOCKSIZE); - int ret = 0; - - int count = 0; - do - { - ret = chunk->connection->Read(block->data, block->len, chunk); - if(ret > 0) - { - block_t *streamblock = AllocBlock(ret); - memcpy(streamblock->data, block->data, ret); - chunk->blockStream.PushBack(streamblock); - chunk->bytesDownloaded += ret; - - // chunk->NotifyDownloadRateChanged(); - } - if(chunk->stateManager.State() == REQUEST_ABORT) - ret = 0; - count += ret; - }while(ret); - - double speed = chunk->connection->GetAverageDownloadingSpeed(); - double time = chunk->connection->GetDownloadingTime(); - chunk->NotifyDownloadRateChanged(speed); - chunk->NotifyDownloadTimeChanged(time); - DeleteBlock(block); - - if(chunk->stateManager.State() == REQUEST_ABORT) - chunk->stateManager.State(ABORTED); - else - chunk->stateManager.State(COMPLETED); - - chunk->blockStream.SetEOS(true); - - return NULL; -} -void* AbstractChunk::DownloadInternalConnection (void *abstractchunk) -{ - AbstractChunk *chunk = (AbstractChunk *) abstractchunk; - - //chunk->response = curl_easy_perform(chunk->curl); - int u =1; - - while(chunk->stateManager.State() != REQUEST_ABORT && u) - { - curl_multi_perform(chunk->curlm, &u); - } - double speed; - double size; - double time; - curl_easy_getinfo(chunk->curl, CURLINFO_SPEED_DOWNLOAD,&speed); - curl_easy_getinfo(chunk->curl, CURLINFO_SIZE_DOWNLOAD, &size); - curl_easy_getinfo(chunk->curl, CURLINFO_TOTAL_TIME, &time); - - //Speed is in Bps ==> *8 for the bps - speed = 8*speed; - //size = 8*size; //Uncomment for the size in bits. - chunk->NotifyDownloadRateChanged(speed); - chunk->NotifyDownloadTimeChanged(time); - curl_easy_cleanup(chunk->curl); - //curl_global_cleanup(); - - curl_multi_cleanup(chunk->curlm); - if(chunk->stateManager.State() == REQUEST_ABORT) - { - chunk->stateManager.State(ABORTED); - } - else - { - chunk->stateManager.State(COMPLETED); - } - - chunk->blockStream.SetEOS(true); - - return NULL; -} -void AbstractChunk::NotifyDownloadRateChanged (double bitrate) -{ - for(size_t i = 0; i < this->observers.size(); i++) - this->observers.at(i)->OnDownloadRateChanged((uint64_t)bitrate); -} -void AbstractChunk::NotifyDownloadTimeChanged (double dnltime) -{ - for(size_t i = 0; i < this->observers.size(); i++) - this->observers.at(i)->OnDownloadTimeChanged(dnltime); -} -size_t AbstractChunk::CurlResponseCallback (void *contents, size_t size, size_t nmemb, void *userp) -{ - size_t realsize = size * nmemb; - AbstractChunk *chunk = (AbstractChunk *)userp; - - if(chunk->stateManager.State() == REQUEST_ABORT) - return 0; - - block_t *block = AllocBlock(realsize); - - memcpy(block->data, contents, realsize); - chunk->blockStream.PushBack(block); - - chunk->bytesDownloaded += realsize; -// chunk->NotifyDownloadRateChanged(); - - return realsize; -} -size_t AbstractChunk::CurlDebugCallback (CURL *url, curl_infotype infoType, char * data, size_t length, void *userdata) -{ - AbstractChunk *chunk = (AbstractChunk *)userdata; - - switch (infoType) { - case CURLINFO_TEXT: - break; - case CURLINFO_HEADER_OUT: - chunk->HandleHeaderOutCallback(); - break; - case CURLINFO_HEADER_IN: - chunk->HandleHeaderInCallback(std::string(data)); - break; - case CURLINFO_DATA_IN: - break; - default: - return 0; - } - return 0; -} -void AbstractChunk::HandleHeaderOutCallback () -{ - HTTPTransaction *httpTransaction = new HTTPTransaction(); - - httpTransaction->SetOriginalUrl(this->AbsoluteURI()); - httpTransaction->SetRange(this->Range()); - httpTransaction->SetType(this->GetType()); - httpTransaction->SetRequestSentTime(Time::GetCurrentUTCTimeStr()); - - this->httpTransactions.push_back(httpTransaction); -} -void AbstractChunk::HandleHeaderInCallback (std::string data) -{ - HTTPTransaction *httpTransaction = this->httpTransactions.at(this->httpTransactions.size()-1); - - if (data.substr(0,4) == "HTTP") - { - httpTransaction->SetResponseReceivedTime(Time::GetCurrentUTCTimeStr()); - httpTransaction->SetResponseCode(strtoul(data.substr(9,3).c_str(), NULL, 10)); - } - - httpTransaction->AddHTTPHeaderLine(data); -} -const std::vector<ITCPConnection *>& AbstractChunk::GetTCPConnectionList () const -{ - return (std::vector<ITCPConnection *> &) this->tcpConnections; -} -const std::vector<IHTTPTransaction *>& AbstractChunk::GetHTTPTransactionList () const -{ - return (std::vector<IHTTPTransaction *> &) this->httpTransactions; -} diff --git a/src/libdash/source/network/AbstractChunk.h b/src/libdash/source/network/AbstractChunk.h deleted file mode 100644 index 794469fd..00000000 --- a/src/libdash/source/network/AbstractChunk.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * AbstractChunk.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef ABSTRACTCHUNK_H_ -#define ABSTRACTCHUNK_H_ - -#include "config.h" - -#include "IDownloadableChunk.h" -#include "DownloadStateManager.h" -#include "../helpers/SyncedBlockStream.h" -#include "../portable/Networking.h" -#include <curl/curl.h> -#include "../metrics/HTTPTransaction.h" -#include "../metrics/TCPConnection.h" -#include "../metrics/ThroughputMeasurement.h" -#include "../helpers/Time.h" - -#include <chrono> - -namespace dash -{ - namespace network - { - class AbstractChunk : public virtual IDownloadableChunk - { - public: - AbstractChunk (); - virtual ~AbstractChunk (); - - /* - * Pure virtual IChunk Interface - */ - virtual std::string& AbsoluteURI () = 0; - virtual std::string& Host () = 0; - virtual size_t Port () = 0; - virtual std::string& Path () = 0; - virtual std::string& Range () = 0; - virtual size_t StartByte () = 0; - virtual size_t EndByte () = 0; - virtual bool HasByteRange () = 0; - virtual dash::metrics::HTTPTransactionType GetType() = 0; - /* - * IDownloadableChunk Interface - */ - virtual bool StartDownload (IConnection *connection); - virtual bool StartDownload (); - virtual void AbortDownload (); - virtual int Read (uint8_t *data, size_t len); - virtual int Peek (uint8_t *data, size_t len); - virtual int Peek (uint8_t *data, size_t len, size_t offset); - virtual void AttachDownloadObserver (IDownloadObserver *observer); - virtual void DetachDownloadObserver (IDownloadObserver *observer); - /* - * Observer Notification - */ - void NotifyDownloadRateChanged (double bitrate); - void NotifyDownloadTimeChanged (double dnltime); - /* - * IDASHMetrics - */ - const std::vector<dash::metrics::ITCPConnection *>& GetTCPConnectionList () const; - const std::vector<dash::metrics::IHTTPTransaction *>& GetHTTPTransactionList () const; - - private: - std::vector<IDownloadObserver *> observers; - THREAD_HANDLE dlThread; - IConnection *connection; - helpers::SyncedBlockStream blockStream; - CURL *curl; - CURLM *curlm; - CURLcode response; - uint64_t bytesDownloaded; - DownloadStateManager stateManager; - - std::vector<dash::metrics::TCPConnection *> tcpConnections; - std::vector<dash::metrics::HTTPTransaction *> httpTransactions; - - static uint32_t BLOCKSIZE; - - static void* DownloadExternalConnection (void *chunk); - static void* DownloadInternalConnection (void *chunk); - static size_t CurlResponseCallback (void *contents, size_t size, size_t nmemb, void *userp); - static size_t CurlHeaderCallback (void *headerData, size_t size, size_t nmemb, void *userdata); - static size_t CurlDebugCallback (CURL *url, curl_infotype infoType, char * data, size_t length, void *userdata); - void HandleHeaderOutCallback (); - void HandleHeaderInCallback (std::string data); - }; - } -} - -#endif /* ABSTRACTCHUNK_H_ */ diff --git a/src/libdash/source/network/DownloadStateManager.cpp b/src/libdash/source/network/DownloadStateManager.cpp deleted file mode 100644 index 5117c099..00000000 --- a/src/libdash/source/network/DownloadStateManager.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/* - * DownloadStateManager.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "DownloadStateManager.h" - -using namespace dash::network; - -DownloadStateManager::DownloadStateManager () : - state (NOT_STARTED) -{ - InitializeConditionVariable (&this->stateChanged); - InitializeCriticalSection (&this->stateLock); -} -DownloadStateManager::~DownloadStateManager () -{ - DeleteConditionVariable (&this->stateChanged); - DeleteCriticalSection (&this->stateLock); -} - -DownloadState DownloadStateManager::State () const -{ - EnterCriticalSection(&this->stateLock); - - DownloadState ret = this->state; - - LeaveCriticalSection(&this->stateLock); - - return ret; -} -void DownloadStateManager::State (DownloadState state) -{ - EnterCriticalSection(&this->stateLock); - - this->state = state; - - this->Notify(); - WakeAllConditionVariable(&this->stateChanged); - LeaveCriticalSection(&this->stateLock); -} -void DownloadStateManager::WaitState (DownloadState state) const -{ - EnterCriticalSection(&this->stateLock); - - while(this->state != state) - SleepConditionVariableCS(&this->stateChanged, &this->stateLock, INFINITE); - - LeaveCriticalSection(&this->stateLock); -} -void DownloadStateManager::CheckAndWait (DownloadState check, DownloadState wait) const -{ - EnterCriticalSection(&this->stateLock); - - if(this->state == check) - while(this->state != wait) - SleepConditionVariableCS(&this->stateChanged, &this->stateLock, INFINITE); - - LeaveCriticalSection(&this->stateLock); -} -void DownloadStateManager::Attach (IDownloadObserver *observer) -{ - EnterCriticalSection(&this->stateLock); - this->observers.push_back(observer); - LeaveCriticalSection(&this->stateLock); -} -void DownloadStateManager::Detach (IDownloadObserver *observer) -{ - EnterCriticalSection(&this->stateLock); - - uint32_t pos = -1; - - for(size_t i = 0; i < this->observers.size(); i++) - if(this->observers.at(i) == observer) - pos = i; - - if(pos != -1) - this->observers.erase(this->observers.begin() + pos); - - LeaveCriticalSection(&this->stateLock); -} -void DownloadStateManager::Notify () -{ - for(size_t i = 0; i < this->observers.size(); i++) - this->observers.at(i)->OnDownloadStateChanged(this->state); -} -void DownloadStateManager::CheckAndSet (DownloadState check, DownloadState set) -{ - EnterCriticalSection(&this->stateLock); - - if(this->state == check) - this->state = set; - LeaveCriticalSection(&this->stateLock); -} diff --git a/src/libdash/source/network/DownloadStateManager.h b/src/libdash/source/network/DownloadStateManager.h deleted file mode 100644 index 90dd770d..00000000 --- a/src/libdash/source/network/DownloadStateManager.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * DownloadStateManager.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef DOWNLOADSTATEMANAGER_H_ -#define DOWNLOADSTATEMANAGER_H_ - -#include "config.h" - -#include "IDownloadObserver.h" -#include "../portable/MultiThreading.h" - -namespace dash -{ - namespace network - { - class DownloadStateManager - { - public: - DownloadStateManager (); - virtual ~DownloadStateManager (); - - DownloadState State () const; - void WaitState (DownloadState state) const; - void CheckAndWait (DownloadState check, DownloadState wait) const; - void CheckAndSet (DownloadState check, DownloadState set); - void State (DownloadState state); - void Attach (IDownloadObserver *observer); - void Detach (IDownloadObserver *observer); - - private: - DownloadState state; - mutable CRITICAL_SECTION stateLock; - mutable CONDITION_VARIABLE stateChanged; - - std::vector<IDownloadObserver *> observers; - - void Notify (); - }; - } -} - -#endif /* DOWNLOADSTATEMANAGER_H_ */ diff --git a/src/libdash/source/portable/MultiThreading.cpp b/src/libdash/source/portable/MultiThreading.cpp deleted file mode 100644 index 5d1fe9c0..00000000 --- a/src/libdash/source/portable/MultiThreading.cpp +++ /dev/null @@ -1,112 +0,0 @@ -#include "MultiThreading.h" - -THREAD_HANDLE CreateThreadPortable (void *(*start_routine) (void *), void *arg) -{ - #if defined _WIN32 || defined _WIN64 - return CreateThread (0, 0, (LPTHREAD_START_ROUTINE)start_routine, (LPVOID)arg, 0, 0); - #else - THREAD_HANDLE th = (THREAD_HANDLE)malloc(sizeof(pthread_t)); - - if (!th) - { - std::cerr << "Error allocating thread." << std::endl; - return NULL; - } - - pthread_attr_t attr; - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - - if(int err = pthread_create(th, &attr, start_routine, arg)) - { - std::cerr << strerror(err) << std::endl; - return NULL; - } - return th; - #endif -} -void DestroyThreadPortable (THREAD_HANDLE th) -{ - #if !defined _WIN32 && !defined _WIN64 - if(th) - free(th); - #endif -} - -/**************************************************************************** -* Condition variables for Windows XP and older windows sytems -*****************************************************************************/ -#if defined WINXPOROLDER - void InitCondition (condition_variable_t *cv) - { - InitializeCriticalSection(&cv->waitersCountLock); - - cv->waitersCount = 0; - cv->waitGenerationCount = 0; - cv->releaseCount = 0; - - cv->waitingEvent = CreateEvent (NULL, // no security - TRUE, // manual-reset - FALSE, // non-signaled initially - NULL); // unnamed - } - void WaitCondition (condition_variable_t *cv, CRITICAL_SECTION *externalMutex) - { - EnterCriticalSection(&cv->waitersCountLock); - - cv->waitersCount++; - - int currentGenerationCount = cv->waitGenerationCount; - - LeaveCriticalSection(&cv->waitersCountLock); - LeaveCriticalSection(externalMutex); - - bool isWaitDone = false; - while(!isWaitDone) - { - WaitForSingleObject (cv->waitingEvent, INFINITE); - EnterCriticalSection (&cv->waitersCountLock); - - isWaitDone = (cv->releaseCount > 0 && cv->waitGenerationCount != currentGenerationCount); - LeaveCriticalSection (&cv->waitersCountLock); - } - - EnterCriticalSection(externalMutex); - EnterCriticalSection(&cv->waitersCountLock); - - cv->waitersCount--; - cv->releaseCount--; - bool isLastWaiter = (cv->releaseCount == 0); - - LeaveCriticalSection(&cv->waitersCountLock); - - if(isLastWaiter) - ResetEvent(cv->waitingEvent); - } - void SignalCondition (condition_variable_t *cv) - { - EnterCriticalSection(&cv->waitersCountLock); - - if(cv->waitersCount > cv->releaseCount) - { - SetEvent(cv->waitingEvent); - cv->releaseCount++; - cv->waitGenerationCount++; - } - - LeaveCriticalSection(&cv->waitersCountLock); - } - void BroadcastCondition (condition_variable_t *cv) - { - EnterCriticalSection(&cv->waitersCountLock); - - if(cv->waitersCount > 0) - { - SetEvent(cv->waitingEvent); - cv->releaseCount = cv->waitersCount; - cv->waitGenerationCount++; - } - - LeaveCriticalSection(&cv->waitersCountLock); -} -#endif diff --git a/src/libdash/source/portable/MultiThreading.h b/src/libdash/source/portable/MultiThreading.h deleted file mode 100644 index c1b45f5c..00000000 --- a/src/libdash/source/portable/MultiThreading.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef PORTABLE_MULTITHREADING_H_ -#define PORTABLE_MULTITHREADING_H_ - -#if defined _WIN32 || defined _WIN64 - - #define _WINSOCKAPI_ - #include <Windows.h> - #define DeleteConditionVariable(cond_p) {} - - typedef HANDLE THREAD_HANDLE; - - #if defined WINXPOROLDER - /**************************************************************************** - * Variables - *****************************************************************************/ - struct condition_variable_t - { - int waitersCount; // Count of the number of waiters. - CRITICAL_SECTION waitersCountLock; // Serialize access to <waitersCount>. - int releaseCount; // Number of threads to release via a <BroadcastCondition> or a <SignalCondition>. - int waitGenerationCount; // Keeps track of the current "generation" so that we don't allow one thread to steal all the "releases" from the broadcast. - HANDLE waitingEvent; // A manual-reset event that's used to block and release waiting threads. - }; - /**************************************************************************** - * Prototypes - *****************************************************************************/ - void InitCondition (condition_variable_t *cv); - void WaitCondition (condition_variable_t *cv, CRITICAL_SECTION *externalMutex); - void SignalCondition (condition_variable_t *cv); - void BroadcastCondition (condition_variable_t *cv); - /**************************************************************************** - * Defines - *****************************************************************************/ - #define CONDITION_VARIABLE condition_variable_t - - #define InitializeConditionVariable(cond_p) InitCondition(cond_p) - #define SleepConditionVariableCS(cond_p, mutex_p, infinite) WaitCondition(cond_p, mutex_p) // INFINITE should be handled mor properly - #define WakeConditionVariable(cond_p) SignalCondition(cond_p) - #define WakeAllConditionVariable(cond_p) BroadcastCondition(cond_p) - #endif - -#else - - #include <string.h> - #include <pthread.h> - #include <errno.h> - #include <stdlib.h> - #include <iostream> - - #define CRITICAL_SECTION pthread_mutex_t - #define CONDITION_VARIABLE pthread_cond_t - - #define InitializeCriticalSection(mutex_p) pthread_mutex_init(mutex_p, NULL) - #define DeleteCriticalSection(mutex_p) pthread_mutex_destroy(mutex_p) - #define EnterCriticalSection(mutex_p) pthread_mutex_lock(mutex_p) - #define LeaveCriticalSection(mutex_p) pthread_mutex_unlock(mutex_p) - #define InitializeConditionVariable(cond_p) pthread_cond_init(cond_p, NULL) - #define DeleteConditionVariable(cond_p) pthread_cond_destroy(cond_p) - #define SleepConditionVariableCS(cond_p, mutex_p, infinite) pthread_cond_wait(cond_p, mutex_p) // INFINITE should be handled mor properly - #define WakeConditionVariable(cond_p) pthread_cond_signal(cond_p) - #define WakeAllConditionVariable(cond_p) pthread_cond_broadcast(cond_p) - - typedef pthread_t* THREAD_HANDLE; - -#endif - -THREAD_HANDLE CreateThreadPortable (void *(*start_routine) (void *), void *arg); -void DestroyThreadPortable (THREAD_HANDLE th); - -#endif // PORTABLE_MULTITHREADING_H_
\ No newline at end of file diff --git a/src/libdash/source/portable/Networking.h b/src/libdash/source/portable/Networking.h deleted file mode 100644 index 6239c3a3..00000000 --- a/src/libdash/source/portable/Networking.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef PORTABLE_NETWORKING_H_ -#define PORTABLE_NETWORKING_H_ - -#if defined _WIN32 || defined _WIN64 - -#include <WinSock2.h> -#include <WS2tcpip.h> - -#else - -#include <sys/socket.h> -#include <netinet/in.h> -#include <netinet/ip.h> /* superset of previous */ -#include <netdb.h> -#include <string.h> -#include <stdlib.h> -#include <unistd.h> - -#define closesocket(socket) close(socket) -#define WSAStartup(wVersionRequested, lpWSAData) 0 -#define WSACleanup() {} - -typedef unsigned char WSADATA; - -#endif - -#endif // PORTABLE_NETWORKING_H_ diff --git a/src/libdash/source/sublibs.mk b/src/libdash/source/sublibs.mk deleted file mode 100644 index 69173c3b..00000000 --- a/src/libdash/source/sublibs.mk +++ /dev/null @@ -1,23 +0,0 @@ -LIBDIR=../libs -OBJECTS=$(SOURCES:.cpp=.o) -DIRNAME=$(shell basename $(shell pwd)) -LIBRARY=$(LIBDIR)/lib$(DIRNAME).a - -all: $(SOURCES) $(LIBRARY) - -$(LIBRARY): $(OBJECTS) - mkdir -p $(LIBDIR) - rm -f $@ - $(AR) $(ARFLAGS) $@ $(OBJECTS) - -.cpp.o: - $(CC) $(CFLAGS) $< -o $@ - -clean: - rm -f $(OBJECTS) - -distclean: clean - rm -f $(LIBRARY) - if test -d $(LIBDIR); then \ - rmdir --ignore-fail-on-non-empty $(LIBDIR) ; \ - fi diff --git a/src/libdash/source/targetver.h b/src/libdash/source/targetver.h deleted file mode 100644 index 2adeccf9..00000000 --- a/src/libdash/source/targetver.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * targetver.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#pragma once - -#if defined _WIN32 || defined _WIN64 - -#include <SDKDDKVer.h> - -#endif
\ No newline at end of file diff --git a/src/libdash/source/xml/DOMHelper.cpp b/src/libdash/source/xml/DOMHelper.cpp deleted file mode 100644 index 43adadc0..00000000 --- a/src/libdash/source/xml/DOMHelper.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - * DOMHelper.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "DOMHelper.h" - -using namespace dash::xml; - -std::vector<Node *> DOMHelper::GetElementByTagName (Node *root, const std::string &name, bool selfContain) -{ - std::vector<Node *> elements; - - for(unsigned int i = 0; i < root->GetSubNodes().size(); i++) - { - GetElementsByTagName(root->GetSubNodes().at(i), name, &elements, selfContain); - } - - return elements; -} -std::vector<Node *> DOMHelper::GetChildElementByTagName (Node *root, const std::string &name) -{ - std::vector<Node *> elements; - - for(unsigned int i = 0; i < root->GetSubNodes().size(); i++) - { - if(!root->GetSubNodes().at(i)->GetName().compare(name)) - elements.push_back(root->GetSubNodes().at(i)); - } - - return elements; -} -void DOMHelper::GetElementsByTagName (Node *root, const std::string &name, std::vector<Node*> *elements, bool selfContain) -{ - if(!selfContain && !root->GetName().compare(name)) - { - elements->push_back(root); - return; - } - - if(!root->GetName().compare(name)) - elements->push_back(root); - - for(unsigned int i = 0; i < root->GetSubNodes().size(); i++) - { - GetElementsByTagName(root->GetSubNodes().at(i), name, elements, selfContain); - } -} diff --git a/src/libdash/source/xml/DOMHelper.h b/src/libdash/source/xml/DOMHelper.h deleted file mode 100644 index d76d425b..00000000 --- a/src/libdash/source/xml/DOMHelper.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * DOMHelper.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef DOMHELPER_H_ -#define DOMHELPER_H_ - -#include "config.h" - -#include "Node.h" - -namespace dash -{ - namespace xml - { - class DOMHelper - { - public: - static std::vector<Node *> GetElementByTagName (Node *root, const std::string &name, bool selfContain); - static std::vector<Node *> GetChildElementByTagName (Node *root, const std::string &name); - - private: - static void GetElementsByTagName(Node *root, const std::string &name, std::vector<Node *> *elements, bool selfContain); - }; - } -} - -#endif /* DOMHELPER_H_ */ diff --git a/src/libdash/source/xml/DOMParser.cpp b/src/libdash/source/xml/DOMParser.cpp deleted file mode 100644 index 5feb3850..00000000 --- a/src/libdash/source/xml/DOMParser.cpp +++ /dev/null @@ -1,160 +0,0 @@ -/* - * DOMParser.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "DOMParser.h" - -using namespace dash::xml; -using namespace dash::helpers; - -DOMParser::DOMParser (std::string url) : - url (url), - reader (NULL), - root (NULL) -{ - this->Init(); -} -DOMParser::~DOMParser () -{ - xmlCleanupParser(); - delete(this->root); -} - -Node* DOMParser::GetRootNode () const -{ - return this->root; -} -bool DOMParser::Parse (std::string path) -{ - this->reader = xmlReaderForFile(this->url.c_str(), NULL, 0); - - if(this->reader == NULL) - return false; - - if(xmlTextReaderRead(this->reader)) - this->root = this->ProcessNode(path); - - if(this->root == NULL) - return false; - - xmlFreeTextReader(this->reader); - - return true; -} -Node* DOMParser::ProcessNode (std::string path) -{ - int type = xmlTextReaderNodeType(this->reader); - - if(type != WhiteSpace && type != Text) - { - while (type == Comment || type == WhiteSpace) - { - xmlTextReaderRead(this->reader); - type = xmlTextReaderNodeType(this->reader); - } - - Node *node = new Node(); - node->SetType(type); - if(!(strcmp("",path.c_str()))) - node->SetMPDPath(Path::GetDirectoryPath(url)); - else - node->SetMPDPath(Path::GetDirectoryPath(path)); - if(xmlTextReaderConstName(this->reader) == NULL) - { - delete node; - return NULL; - } - - std::string name = (const char *) xmlTextReaderConstName(this->reader); - int isEmpty = xmlTextReaderIsEmptyElement(this->reader); - - node->SetName(name); - - this->AddAttributesToNode(node); - - if(isEmpty) - return node; - - Node *subnode = NULL; - int ret = xmlTextReaderRead(this->reader); - - while(ret == 1) - { - if(!strcmp(name.c_str(), (const char *) xmlTextReaderConstName(this->reader))) - { - return node; - } - - subnode = this->ProcessNode(path); - - if(subnode != NULL) - node->AddSubNode(subnode); - - ret = xmlTextReaderRead(this->reader); - } - - return node; - } else if (type == Text) - { - const char* text = (const char *) xmlTextReaderReadString(this->reader); - - if(text != NULL) - { - Node *node = new Node(); - node->SetType(type); - node->SetText(text); - return node; - } - } - return NULL; -} -void DOMParser::AddAttributesToNode (Node *node) -{ - if(xmlTextReaderHasAttributes(this->reader)) - { - while(xmlTextReaderMoveToNextAttribute(this->reader)) - { - std::string key = (const char *) xmlTextReaderConstName(this->reader); - std::string value = (const char *) xmlTextReaderConstValue(this->reader); - node->AddAttribute(key, value); - } - } -} -void DOMParser::Print (Node *node, int offset) -{ - std::stringstream ss; - for(int i = 0; i < offset; i++) - ss << " "; - ss << node->GetName(); - - std::vector<std::string> keys = node->GetAttributeKeys(); - - ss.clear(); - for(unsigned int i = 0; i < keys.size(); i++) - { - ss << " " << keys.at(i) << "=" << node->GetAttributeValue(keys.at(i)); - } - - offset++; - - for(unsigned int i = 0; i < node->GetSubNodes().size(); i++) - { - this->Print(node->GetSubNodes().at(i), offset); - } -} -void DOMParser::Init () -{ - this->root = NULL; - this->reader = NULL; -} -void DOMParser::Print () -{ - this->Print(this->root, 0); -} diff --git a/src/libdash/source/xml/DOMParser.h b/src/libdash/source/xml/DOMParser.h deleted file mode 100644 index a8b3a9b7..00000000 --- a/src/libdash/source/xml/DOMParser.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * DOMParser.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef DOMPARSER_H_ -#define DOMPARSER_H_ - -#include "config.h" - -#include "Node.h" -#include <libxml/xmlreader.h> -#include "../helpers/Path.h" - -namespace dash -{ - namespace xml - { - enum NodeType - { - Start = 1, - End = 15, - Comment = 8, - WhiteSpace = 14, - Text = 3, - }; - - class DOMParser - { - public: - DOMParser (std::string url); - virtual ~DOMParser (); - - bool Parse (std::string path = ""); - Node* GetRootNode () const; - void Print (); - - private: - xmlTextReaderPtr reader; - Node *root; - std::string url; - - void Init (); - Node* ProcessNode (std::string); - void AddAttributesToNode (Node *node); - void Print (Node *node, int offset); - }; - } -} -#endif /* DOMPARSER_H_ */ diff --git a/src/libdash/source/xml/Node.cpp b/src/libdash/source/xml/Node.cpp deleted file mode 100644 index d04558b6..00000000 --- a/src/libdash/source/xml/Node.cpp +++ /dev/null @@ -1,1029 +0,0 @@ -/* - * Node.cpp - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#include "Node.h" -#include <cstdlib> - -using namespace dash::xml; -using namespace dash::metrics; - -Node::Node () -{ -} -Node::Node (const Node& other) : - name(other.name), - text(other.text), - type(other.type), - attributes(other.attributes) -{ - for (size_t i = 0; i < other.subNodes.size(); i++) - this->subNodes.push_back(new Node(*(other.subNodes.at(i)))); -} -Node::~Node () -{ - for(size_t i = 0; i < this->subNodes.size(); i++) - delete(this->subNodes.at(i)); -} - -dash::mpd::ProgramInformation* Node::ToProgramInformation () const -{ - dash::mpd::ProgramInformation *programInformation = new dash::mpd::ProgramInformation(); - - if (this->HasAttribute("lang")) - { - programInformation->SetLang(this->GetAttributeValue("lang")); - } - if (this->HasAttribute("moreInformationURL")) - { - programInformation->SetMoreInformationURL(this->GetAttributeValue("moreInformationURL")); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() == "Title") - { - programInformation->SetTitle(subNodes.at(i)->GetText()); - continue; - } - if (subNodes.at(i)->GetName() == "Source") - { - programInformation->SetSource(subNodes.at(i)->GetText()); - continue; - } - if (subNodes.at(i)->GetName() == "Copyright") - { - programInformation->SetCopyright(subNodes.at(i)->GetText()); - continue; - } - programInformation->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - programInformation->AddRawAttributes(this->attributes); - return programInformation; -} -dash::mpd::BaseUrl* Node::ToBaseUrl () const -{ - dash::mpd::BaseUrl *baseUrl = new dash::mpd::BaseUrl(); - - if(this->HasAttribute("serviceLocation")) - { - baseUrl->SetServiceLocation(this->GetAttributeValue("serviceLocation")); - } - if(this->HasAttribute("byteRange")) - { - baseUrl->SetByteRange(this->GetAttributeValue("byteRange")); - } - if (this->GetText() == "./") - { - baseUrl->SetUrl(this->mpdPath); - } - else - { - baseUrl->SetUrl(this->GetText()); - } - - baseUrl->AddRawAttributes(this->attributes); - return baseUrl; -} -dash::mpd::Descriptor* Node::ToDescriptor () const -{ - dash::mpd::Descriptor *descriptor = new dash::mpd::Descriptor(); - std::vector<Node *> subNodes = this->GetSubNodes(); - - if (this->HasAttribute("schemeIdUri")) - { - descriptor->SetSchemeIdUri(this->GetAttributeValue("schemeIdUri")); - } - if (this->HasAttribute("value")) - { - descriptor->SetValue(this->GetAttributeValue("value")); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - descriptor->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - descriptor->AddRawAttributes(this->attributes); - return descriptor; -} -dash::mpd::ContentComponent* Node::ToContentComponent () const -{ - dash::mpd::ContentComponent *contentComponent = new dash::mpd::ContentComponent(); - std::vector<Node *> subNodes = this->GetSubNodes(); - - if (this->HasAttribute("id")) - { - contentComponent->SetId(strtoul(this->GetAttributeValue("id").c_str(), NULL, 10)); - } - if (this->HasAttribute("lang")) - { - contentComponent->SetLang(this->GetAttributeValue("lang")); - } - if (this->HasAttribute("contentType")) - { - contentComponent->SetContentType(this->GetAttributeValue("contentType")); - } - if (this->HasAttribute("par")) - { - contentComponent->SetPar(this->GetAttributeValue("par")); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() == "Accessibility") - { - contentComponent->AddAccessibity(subNodes.at(i)->ToDescriptor()); - continue; - } - if (subNodes.at(i)->GetName() == "Role") - { - contentComponent->AddRole(subNodes.at(i)->ToDescriptor()); - continue; - } - if (subNodes.at(i)->GetName() == "Rating") - { - contentComponent->AddRating(subNodes.at(i)->ToDescriptor()); - continue; - } - if (subNodes.at(i)->GetName() == "Viewpoint") - { - contentComponent->AddViewpoint(subNodes.at(i)->ToDescriptor()); - continue; - } - contentComponent->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - contentComponent->AddRawAttributes(this->attributes); - return contentComponent; -} -dash::mpd::URLType* Node::ToURLType (HTTPTransactionType type) const -{ - dash::mpd::URLType* urlType = new dash::mpd::URLType(); - - if (this->HasAttribute("sourceURL")) - { - urlType->SetSourceURL(this->GetAttributeValue("sourceURL")); - } - if (this->HasAttribute("range")) - { - urlType->SetRange(this->GetAttributeValue("range")); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - urlType->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - urlType->SetType(type); - urlType->AddRawAttributes(this->attributes); - return urlType; -} -dash::mpd::SegmentBase* Node::ToSegmentBase () const -{ - dash::mpd::SegmentBase* segmentBase = new dash::mpd::SegmentBase(); - std::vector<Node *> subNodes = this->GetSubNodes(); - - SetCommonValuesForSeg(*segmentBase); - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() != "Initialization" && subNodes.at(i)->GetName() != "RepresentationIndex") - segmentBase->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - segmentBase->AddRawAttributes(this->attributes); - return segmentBase; -} -dash::mpd::Timeline* Node::ToTimeline () const -{ - dash::mpd::Timeline* timeline = new dash::mpd::Timeline(); - - if (this->HasAttribute("t")) - { - timeline->SetStartTime(strtoul(this->GetAttributeValue("t").c_str(), NULL, 10)); - } - if (this->HasAttribute("d")) - { - timeline->SetDuration(strtoul(this->GetAttributeValue("d").c_str(), NULL, 10)); - } - if (this->HasAttribute("r")) - { - timeline->SetRepeatCount(strtoul(this->GetAttributeValue("r").c_str(), NULL, 10)); - } - - timeline->AddRawAttributes(this->attributes); - return timeline; -} -dash::mpd::SegmentTimeline* Node::ToSegmentTimeline () const -{ - dash::mpd::SegmentTimeline* segmentTimeline = new dash::mpd::SegmentTimeline(); - - std::vector<Node *> subNodes = this->GetSubNodes(); - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() == "S") - { - segmentTimeline->AddTimeline(subNodes.at(i)->ToTimeline()); - continue; - } - segmentTimeline->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - segmentTimeline->AddRawAttributes(this->attributes); - return segmentTimeline; -} -dash::mpd::SegmentURL* Node::ToSegmentURL () const -{ - dash::mpd::SegmentURL *segmentUrl = new dash::mpd::SegmentURL(); - - if (this->HasAttribute("media")) - { - segmentUrl->SetMediaURI(this->GetAttributeValue("media")); - } - if (this->HasAttribute("mediaRange")) - { - segmentUrl->SetMediaRange(this->GetAttributeValue("mediaRange")); - } - if (this->HasAttribute("index")) - { - segmentUrl->SetIndexURI(this->GetAttributeValue("index")); - } - if (this->HasAttribute("indexRange")) - { - segmentUrl->SetIndexRange(this->GetAttributeValue("indexRange")); - } - if(this->HasAttribute("size")) - { - segmentUrl->SetBitrate(this->GetAttributeValue("size")); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - segmentUrl->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - segmentUrl->AddRawAttributes(this->attributes); - return segmentUrl; -} -dash::mpd::SegmentList* Node::ToSegmentList () const -{ - dash::mpd::SegmentList* segmentList = new dash::mpd::SegmentList(); - std::vector<Node *> subNodes = this->GetSubNodes(); - - SetCommonValuesForMSeg(*segmentList); - - if (this->HasAttribute("xlink:href")) - { - segmentList->SetXlinkHref(this->GetAttributeValue("xlink:href")); - } - if (this->HasAttribute("xlink:actuate")) - { - segmentList->SetXlinkActuate(this->GetAttributeValue("xlink:actuate")); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() == "SegmentURL") - { - segmentList->AddSegmentURL(subNodes.at(i)->ToSegmentURL()); - continue; - } - if (subNodes.at(i)->GetName() != "SegmentTimeline" && subNodes.at(i)->GetName() != "BitstreamSwitching" && - subNodes.at(i)->GetName() != "Initialization" && subNodes.at(i)->GetName() != "RepresentationIndex") - segmentList->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - segmentList->AddRawAttributes(this->attributes); - return segmentList; -} -dash::mpd::SegmentTemplate* Node::ToSegmentTemplate () const -{ - dash::mpd::SegmentTemplate *segmentTemplate = new dash::mpd::SegmentTemplate(); - std::vector<Node *> subNodes = this->GetSubNodes(); - - SetCommonValuesForMSeg(*segmentTemplate); - - if (this->HasAttribute("media")) - { - segmentTemplate->SetMedia(this->GetAttributeValue("media")); - } - if (this->HasAttribute("index")) - { - segmentTemplate->SetIndex(this->GetAttributeValue("index")); - } - if (this->HasAttribute("initialization")) - { - segmentTemplate->SetInitialization(this->GetAttributeValue("initialization")); - } - if (this->HasAttribute("bitstreamSwitching")) - { - segmentTemplate->SetBitstreamSwitching(this->GetAttributeValue("bitstreamSwitching")); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() != "SegmentTimeline" && subNodes.at(i)->GetName() != "BitstreamSwitching" && - subNodes.at(i)->GetName() != "Initialization" && subNodes.at(i)->GetName() != "RepresentationIndex") - segmentTemplate->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - segmentTemplate->AddRawAttributes(this->attributes); - return segmentTemplate; -} -dash::mpd::SubRepresentation* Node::ToSubRepresentation () const -{ - dash::mpd::SubRepresentation* subRepresentation = new dash::mpd::SubRepresentation(); - std::vector<Node *> subNodes = this->GetSubNodes(); - - SetCommonValuesForRep(*subRepresentation); - - if (this->HasAttribute("level")) - { - subRepresentation->SetLevel(strtoul(this->GetAttributeValue("level").c_str(), NULL, 10)); - } - if (this->HasAttribute("dependencyLevel")) - { - subRepresentation->SetDependencyLevel(this->GetAttributeValue("dependencyLevel")); - } - if (this->HasAttribute("bandwidth")) - { - subRepresentation->SetBandWidth(strtoul(this->GetAttributeValue("bandwidth").c_str(), NULL, 10)); - } - if (this->HasAttribute("contentComponent")) - { - subRepresentation->SetContentComponent(this->GetAttributeValue("contentComponent")); - } - for (size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() != "FramePacking" && subNodes.at(i)->GetName() != "AudioChannelConfiguration" && subNodes.at(i)->GetName() != "ContentProtection") - subRepresentation->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - subRepresentation->AddRawAttributes(this->attributes); - return subRepresentation; -} -dash::mpd::Representation* Node::ToRepresentation () const -{ - dash::mpd::Representation* representation = new dash::mpd::Representation(); - std::vector<Node *> subNodes = this->GetSubNodes(); - - SetCommonValuesForRep(*representation); - - if (this->HasAttribute("id")) - { - representation->SetId(this->GetAttributeValue("id")); - } - if (this->HasAttribute("bandwidth")) - { - representation->SetBandwidth(strtoul(this->GetAttributeValue("bandwidth").c_str(), NULL, 10)); - } - if (this->HasAttribute("qualityRanking")) - { - representation->SetQualityRanking(strtoul(this->GetAttributeValue("qualityRanking").c_str(), NULL, 10)); - } - if (this->HasAttribute("dependencyId")) - { - representation->SetDependencyId(this->GetAttributeValue("dependencyId")); - } - if (this->HasAttribute("mediaStreamStructureId")) - { - representation->SetMediaStreamStructureId(this->GetAttributeValue("mediaStreamStructureId")); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() == "BaseURL") - { - representation->AddBaseURL(subNodes.at(i)->ToBaseUrl()); - continue; - } - if (subNodes.at(i)->GetName() == "SubRepresentation") - { - representation->AddSubRepresentation(subNodes.at(i)->ToSubRepresentation()); - continue; - } - if (subNodes.at(i)->GetName() == "SegmentBase") - { - representation->SetSegmentBase(subNodes.at(i)->ToSegmentBase()); - continue; - } - if (subNodes.at(i)->GetName() == "SegmentList") - { - representation->SetSegmentList(subNodes.at(i)->ToSegmentList()); - continue; - } - if (subNodes.at(i)->GetName() == "SegmentTemplate") - { - representation->SetSegmentTemplate(subNodes.at(i)->ToSegmentTemplate()); - continue; - } - if (subNodes.at(i)->GetName() != "FramePacking" && subNodes.at(i)->GetName() != "AudioChannelConfiguration" && subNodes.at(i)->GetName() != "ContentProtection") - representation->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - representation->AddRawAttributes(this->attributes); - return representation; -} -dash::mpd::AdaptationSet* Node::ToAdaptationSet () const -{ - dash::mpd::AdaptationSet *adaptationSet = new dash::mpd::AdaptationSet(); - std::vector<Node *> subNodes = this->GetSubNodes(); - - SetCommonValuesForRep(*adaptationSet); - - if (this->HasAttribute("xlink:href")) - { - adaptationSet->SetXlinkHref(this->GetAttributeValue("xlink:href")); - } - if (this->HasAttribute("xlink:actuate")) - { - adaptationSet->SetXlinkActuate(this->GetAttributeValue("xlink:actuate")); - } - if (this->HasAttribute("id")) - { - adaptationSet->SetId(strtoul(this->GetAttributeValue("id").c_str(), NULL, 10)); - } - if (this->HasAttribute("group")) - { - adaptationSet->SetGroup(strtoul(this->GetAttributeValue("group").c_str(), NULL, 10)); - } - if (this->HasAttribute("lang")) - { - adaptationSet->SetLang(this->GetAttributeValue("lang")); - } - if (this->HasAttribute("contentType")) - { - adaptationSet->SetContentType(this->GetAttributeValue("contentType")); - } - if (this->HasAttribute("par")) - { - adaptationSet->SetPar(this->GetAttributeValue("par")); - } - if (this->HasAttribute("minBandwidth")) - { - adaptationSet->SetMinBandwidth(strtoul(this->GetAttributeValue("minBandwidth").c_str(), NULL, 10)); - } - if (this->HasAttribute("maxBandwidth")) - { - adaptationSet->SetMaxBandwidth(strtoul(this->GetAttributeValue("maxBandwidth").c_str(), NULL, 10)); - } - if (this->HasAttribute("minWidth")) - { - adaptationSet->SetMinWidth(strtoul(this->GetAttributeValue("minWidth").c_str(), NULL, 10)); - } - if (this->HasAttribute("maxWidth")) - { - adaptationSet->SetMaxWidth(strtoul(this->GetAttributeValue("maxWidth").c_str(), NULL, 10)); - } - if (this->HasAttribute("minHeight")) - { - adaptationSet->SetMinHeight(strtoul(this->GetAttributeValue("minHeight").c_str(), NULL, 10)); - } - if (this->HasAttribute("maxHeight")) - { - adaptationSet->SetMaxHeight(strtoul(this->GetAttributeValue("maxHeight").c_str(), NULL, 10)); - } - if (this->HasAttribute("minFrameRate")) - { - adaptationSet->SetMinFramerate(this->GetAttributeValue("minFrameRate")); - } - if (this->HasAttribute("maxFrameRate")) - { - adaptationSet->SetMaxFramerate(this->GetAttributeValue("maxFrameRate")); - } - if (this->HasAttribute("segmentAlignment")) - { - adaptationSet->SetSegmentAlignment(this->GetAttributeValue("segmentAlignment")); - } - if (this->HasAttribute("subsegmentAlignment")) - { - adaptationSet->SetSubsegmentAlignment(this->GetAttributeValue("subsegmentAlignment")); - } - if (this->HasAttribute("subsegmentStartsWithSAP")) - { - adaptationSet->SetMaxHeight((uint8_t) strtoul(this->GetAttributeValue("subsegmentStartsWithSAP").c_str(), NULL, 10)); - } - if (this->HasAttribute("bitstreamSwitching")) - { - adaptationSet->SetBitstreamSwitching(dash::helpers::String::ToBool(this->GetAttributeValue("bitstreamSwitching"))); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() == "Accessibility") - { - adaptationSet->AddAccessibity(subNodes.at(i)->ToDescriptor()); - continue; - } - if (subNodes.at(i)->GetName() == "Role") - { - adaptationSet->AddRole(subNodes.at(i)->ToDescriptor()); - continue; - } - if (subNodes.at(i)->GetName() == "Rating") - { - adaptationSet->AddRating(subNodes.at(i)->ToDescriptor()); - continue; - } - if (subNodes.at(i)->GetName() == "Viewpoint") - { - adaptationSet->AddViewpoint(subNodes.at(i)->ToDescriptor()); - continue; - } - if (subNodes.at(i)->GetName() == "ContentComponent") - { - adaptationSet->AddContentComponent(subNodes.at(i)->ToContentComponent()); - continue; - } - if (subNodes.at(i)->GetName() == "BaseURL") - { - adaptationSet->AddBaseURL(subNodes.at(i)->ToBaseUrl()); - continue; - } - if (subNodes.at(i)->GetName() == "SegmentBase") - { - adaptationSet->SetSegmentBase(subNodes.at(i)->ToSegmentBase()); - continue; - } - if (subNodes.at(i)->GetName() == "SegmentList") - { - adaptationSet->SetSegmentList(subNodes.at(i)->ToSegmentList()); - continue; - } - if (subNodes.at(i)->GetName() == "SegmentTemplate") - { - adaptationSet->SetSegmentTemplate(subNodes.at(i)->ToSegmentTemplate()); - continue; - } - if (subNodes.at(i)->GetName() == "Representation") - { - adaptationSet->AddRepresentation(subNodes.at(i)->ToRepresentation()); - continue; - } - if (subNodes.at(i)->GetName() != "FramePacking" && subNodes.at(i)->GetName() != "AudioChannelConfiguration" && subNodes.at(i)->GetName() != "ContentProtection") - adaptationSet->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - adaptationSet->AddRawAttributes(this->attributes); - return adaptationSet; -} -dash::mpd::Subset* Node::ToSubset () const -{ - dash::mpd::Subset *subset = new dash::mpd::Subset(); - - if (this->HasAttribute("contains")) - { - subset->SetSubset(this->GetAttributeValue("contains")); - } - - subset->AddRawAttributes(this->attributes); - return subset; -} -dash::mpd::Period* Node::ToPeriod () const -{ - dash::mpd::Period *period = new dash::mpd::Period(); - std::vector<Node *> subNodes = this->GetSubNodes(); - - if (this->HasAttribute("xlink:href")) - { - period->SetXlinkHref(this->GetAttributeValue("xlink:href")); - } - if (this->HasAttribute("xlink:actuate")) - { - period->SetXlinkActuate(this->GetAttributeValue("xlink:actuate")); - } - if (this->HasAttribute("id")) - { - period->SetId(this->GetAttributeValue("id")); - } - if (this->HasAttribute("start")) - { - period->SetStart(this->GetAttributeValue("start")); - } - if (this->HasAttribute("duration")) - { - period->SetDuration(this->GetAttributeValue("duration")); - } - if (this->HasAttribute("bitstreamSwitching")) - { - period->SetBitstreamSwitching(dash::helpers::String::ToBool(this->GetAttributeValue("bitstreamSwitching"))); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() == "BaseURL") - { - period->AddBaseURL(subNodes.at(i)->ToBaseUrl()); - continue; - } - if (subNodes.at(i)->GetName() == "AdaptationSet") - { - period->AddAdaptationSet(subNodes.at(i)->ToAdaptationSet()); - continue; - } - if (subNodes.at(i)->GetName() == "Subset") - { - period->AddSubset(subNodes.at(i)->ToSubset()); - continue; - } - if (subNodes.at(i)->GetName() == "SegmentBase") - { - period->SetSegmentBase(subNodes.at(i)->ToSegmentBase()); - continue; - } - if (subNodes.at(i)->GetName() == "SegmentList") - { - period->SetSegmentList(subNodes.at(i)->ToSegmentList()); - continue; - } - if (subNodes.at(i)->GetName() == "SegmentTemplate") - { - period->SetSegmentTemplate(subNodes.at(i)->ToSegmentTemplate()); - continue; - } - period->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - period->AddRawAttributes(this->attributes); - return period; -} -dash::mpd::Range* Node::ToRange () const -{ - dash::mpd::Range* range = new dash::mpd::Range(); - - if (this->HasAttribute("starttime")) - { - range->SetStarttime(this->GetAttributeValue("starttime")); - } - if (this->HasAttribute("duration")) - { - range->SetDuration(this->GetAttributeValue("duration")); - } - - return range; -} -dash::mpd::Metrics* Node::ToMetrics () const -{ - dash::mpd::Metrics* metrics = new dash::mpd::Metrics(); - - if (this->HasAttribute("metrics")) - { - metrics->SetMetrics(this->GetAttributeValue("metrics")); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() == "Reporting") - { - metrics->AddReporting(subNodes.at(i)->ToDescriptor()); - continue; - } - if (subNodes.at(i)->GetName() == "Range") - { - metrics->AddRange(subNodes.at(i)->ToRange()); - continue; - } - metrics->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - metrics->AddRawAttributes(this->attributes); - return metrics; -} -dash::mpd::MPD* Node::ToMPD () const -{ - dash::mpd::MPD *mpd = new dash::mpd::MPD(); - std::vector<Node *> subNodes = this->GetSubNodes(); - - if (this->HasAttribute("id")) - { - mpd->SetId(this->GetAttributeValue("id")); - } - if (this->HasAttribute("profiles")) - { - mpd->SetProfiles(this->GetAttributeValue("profiles")); - } - if (this->HasAttribute("type")) - { - mpd->SetType(this->GetAttributeValue("type")); - } - if (this->HasAttribute("availabilityStartTime")) - { - mpd->SetAvailabilityStarttime(this->GetAttributeValue("availabilityStartTime")); - } - if (this->HasAttribute("availabilityEndTime")) - { - mpd->SetAvailabilityEndtime(this->GetAttributeValue("availabilityEndTime")); - } - if (this->HasAttribute("mediaPresentationDuration")) - { - mpd->SetMediaPresentationDuration(this->GetAttributeValue("mediaPresentationDuration")); - } - if (this->HasAttribute("minimumUpdatePeriod")) - { - mpd->SetMinimumUpdatePeriod(this->GetAttributeValue("minimumUpdatePeriod")); - } - if (this->HasAttribute("minBufferTime")) - { - mpd->SetMinBufferTime(this->GetAttributeValue("minBufferTime")); - } - if (this->HasAttribute("timeShiftBufferDepth")) - { - mpd->SetTimeShiftBufferDepth(this->GetAttributeValue("timeShiftBufferDepth")); - } - if (this->HasAttribute("suggestedPresentationDelay")) - { - mpd->SetSuggestedPresentationDelay(this->GetAttributeValue("suggestedPresentationDelay")); - } - if (this->HasAttribute("maxSegmentDuration")) - { - mpd->SetMaxSegmentDuration(this->GetAttributeValue("maxSegmentDuration")); - } - if (this->HasAttribute("maxSubsegmentDuration")) - { - mpd->SetMaxSubsegmentDuration(this->GetAttributeValue("maxSubsegmentDuration")); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() == "ProgramInformation") - { - mpd->AddProgramInformation(subNodes.at(i)->ToProgramInformation()); - continue; - } - if (subNodes.at(i)->GetName() == "BaseURL") - { - mpd->AddBaseUrl(subNodes.at(i)->ToBaseUrl()); - continue; - } - if (subNodes.at(i)->GetName() == "Location") - { - mpd->AddLocation(subNodes.at(i)->GetText()); - continue; - } - if (subNodes.at(i)->GetName() == "Period") - { - mpd->AddPeriod(subNodes.at(i)->ToPeriod()); - continue; - } - if (subNodes.at(i)->GetName() == "Metrics") - { - mpd->AddMetrics(subNodes.at(i)->ToMetrics()); - continue; - } - mpd->AddAdditionalSubNode((xml::INode *) new Node(*(subNodes.at(i)))); - } - - dash::mpd::BaseUrl *mpdPathBaseUrl = new dash::mpd::BaseUrl(); - mpdPathBaseUrl->SetUrl(mpdPath); - mpd->SetMPDPathBaseUrl(mpdPathBaseUrl); - - mpd->AddRawAttributes(this->attributes); - return mpd; -} -void Node::SetMPDPath (std::string path) -{ - this->mpdPath = path; -} - -const std::vector<INode*>& Node::GetNodes () const -{ - return (std::vector<INode*> &) this->subNodes; -} -const std::vector<Node*>& Node::GetSubNodes () const -{ - return this->subNodes; -} -void Node::AddSubNode (Node *node) -{ - this->subNodes.push_back(node); -} -const std::string& Node::GetName () const -{ - return this->name; -} -void Node::SetName (const std::string &name) -{ - this->name = name; -} -const std::string& Node::GetAttributeValue (std::string key) const -{ - //return this->attributes[key]; - return this->attributes.find(key)->second; -} -bool Node::HasAttribute (const std::string& name) const -{ - if(this->attributes.find(name) != this->attributes.end()) - return true; - - return false; -} -void Node::AddAttribute (const std::string &key, const std::string &value) -{ - this->attributes[key] = value; -} -std::vector<std::string> Node::GetAttributeKeys () const -{ - std::vector<std::string> keys; - std::map<std::string, std::string>::const_iterator it; - - for(it = this->attributes.begin(); it != this->attributes.end(); ++it) - { - keys.push_back(it->first); - } - return keys; -} -bool Node::HasText () const -{ - return false; -} -std::string Node::GetText () const -{ - if(this->type == 3) - return this->text; - else - { - if(this->subNodes.size()) - return this->subNodes[0]->GetText(); - else - return ""; - } -} -void Node::SetText (const std::string &text) -{ - this->text = text; -} -void Node::Print (std::ostream &stream) const -{ - stream << this->name; - std::vector<std::string> keys = this->GetAttributeKeys(); - for(size_t i = 0; i < keys.size(); i++) - stream << " " << keys.at(i) << "=" << this->GetAttributeValue(keys.at(i)); - - stream << std::endl; -} -const std::map<std::string,std::string>& Node::GetAttributes () const -{ - return this->attributes; -} -int Node::GetType () const -{ - return this->type; -} -void Node::SetType (int type) -{ - this->type = type; -} -void Node::SetCommonValuesForRep (dash::mpd::RepresentationBase& object) const -{ - std::vector<Node *> subNodes = this->GetSubNodes(); - - if (this->HasAttribute("profiles")) - { - object.SetProfiles(this->GetAttributeValue("profiles")); - } - if (this->HasAttribute("width")) - { - object.SetWidth(strtoul(this->GetAttributeValue("width").c_str(), NULL, 10)); - } - if (this->HasAttribute("height")) - { - object.SetHeight(strtoul(this->GetAttributeValue("height").c_str(), NULL, 10)); - } - if (this->HasAttribute("sar")) - { - object.SetSar(this->GetAttributeValue("sar")); - } - if (this->HasAttribute("frameRate")) - { - object.SetFrameRate(this->GetAttributeValue("frameRate")); - } - if (this->HasAttribute("audioSamplingRate")) - { - object.SetAudioSamplingRate(this->GetAttributeValue("audioSamplingRate")); - } - if (this->HasAttribute("mimeType")) - { - object.SetMimeType(this->GetAttributeValue("mimeType")); - } - if (this->HasAttribute("segmentProfiles")) - { - object.SetSegmentProfiles(this->GetAttributeValue("segmentProfiles")); - } - if (this->HasAttribute("codecs")) - { - object.SetCodecs(this->GetAttributeValue("codecs")); - } - if (this->HasAttribute("maximumSAPPeriod")) - { - object.SetMaximumSAPPeriod(strtod(this->GetAttributeValue("maximumSAPPeriod").c_str(), NULL)); - } - if (this->HasAttribute("startWithSAP")) - { - object.SetStartWithSAP((uint8_t) strtoul(this->GetAttributeValue("startWithSAP").c_str(), NULL, 10)); - } - if (this->HasAttribute("maxPlayoutRate")) - { - object.SetMaxPlayoutRate(strtod(this->GetAttributeValue("maxPlayoutRate").c_str(), NULL)); - } - if (this->HasAttribute("codingDependency")) - { - object.SetCodingDependency(dash::helpers::String::ToBool(this->GetAttributeValue("codingDependency"))); - } - if (this->HasAttribute("scanType")) - { - object.SetScanType(this->GetAttributeValue("scanType")); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() == "FramePacking") - { - object.AddFramePacking(subNodes.at(i)->ToDescriptor()); - continue; - } - if (subNodes.at(i)->GetName() == "AudioChannelConfiguration") - { - object.AddAudioChannelConfiguration(subNodes.at(i)->ToDescriptor()); - continue; - } - if (subNodes.at(i)->GetName() == "ContentProtection") - { - object.AddContentProtection(subNodes.at(i)->ToDescriptor()); - continue; - } - } -} -void Node::SetCommonValuesForSeg (dash::mpd::SegmentBase& object) const -{ - std::vector<Node *> subNodes = this->GetSubNodes(); - - if (this->HasAttribute("timescale")) - { - object.SetTimescale(strtoul(this->GetAttributeValue("timescale").c_str(), NULL, 10)); - } - if (this->HasAttribute("presentationTimeOffset")) - { - object.SetPresentationTimeOffset(strtoul(this->GetAttributeValue("presentationTimeOffset").c_str(), NULL, 10)); - } - if (this->HasAttribute("indexRange")) - { - object.SetIndexRange(this->GetAttributeValue("indexRange")); - } - if (this->HasAttribute("indexRangeExact")) - { - object.SetIndexRangeExact(dash::helpers::String::ToBool(this->GetAttributeValue("indexRangeExact"))); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() == "Initialization") - { - object.SetInitialization(subNodes.at(i)->ToURLType(dash::metrics::InitializationSegment)); - continue; - } - if (subNodes.at(i)->GetName() == "RepresentationIndex") - { - object.SetRepresentationIndex(subNodes.at(i)->ToURLType(dash::metrics::IndexSegment)); - continue; - } - } -} -void Node::SetCommonValuesForMSeg(dash::mpd::MultipleSegmentBase& object) const -{ - std::vector<Node *> subNodes = this->GetSubNodes(); - - SetCommonValuesForSeg(object); - - if (this->HasAttribute("duration")) - { - object.SetDuration(strtoul(this->GetAttributeValue("duration").c_str(), NULL, 10)); - } - if (this->HasAttribute("startNumber")) - { - object.SetStartNumber(strtoul(this->GetAttributeValue("startNumber").c_str(), NULL, 10)); - } - - for(size_t i = 0; i < subNodes.size(); i++) - { - if (subNodes.at(i)->GetName() == "SegmentTimeline") - { - object.SetSegmentTimeline(subNodes.at(i)->ToSegmentTimeline()); - continue; - } - if (subNodes.at(i)->GetName() == "BitstreamSwitching") - { - object.SetBitstreamSwitching(subNodes.at(i)->ToURLType(dash::metrics::BitstreamSwitchingSegment)); - continue; - } - } - -} diff --git a/src/libdash/source/xml/Node.h b/src/libdash/source/xml/Node.h deleted file mode 100644 index 552d83e5..00000000 --- a/src/libdash/source/xml/Node.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Node.h - ***************************************************************************** - * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved - * - * Email: libdash-dev@vicky.bitmovin.net - * - * This source code and its use and distribution, is subject to the terms - * and conditions of the applicable license agreement. - *****************************************************************************/ - -#ifndef NODE_H_ -#define NODE_H_ - -#include "config.h" - -#include "INode.h" -#include "../helpers/String.h" -#include "../mpd/AdaptationSet.h" -#include "../mpd/BaseUrl.h" -#include "../mpd/ContentComponent.h" -#include "../mpd/Descriptor.h" -#include "../mpd/Metrics.h" -#include "../mpd/MPD.h" -#include "../mpd/MultipleSegmentBase.h" -#include "../mpd/Period.h" -#include "../mpd/ProgramInformation.h" -#include "../mpd/Range.h" -#include "../mpd/Representation.h" -#include "../mpd/RepresentationBase.h" -#include "../mpd/SegmentBase.h" -#include "../mpd/SegmentList.h" -#include "../mpd/SegmentTemplate.h" -#include "../mpd/SegmentTimeline.h" -#include "../mpd/SegmentURL.h" -#include "../mpd/SubRepresentation.h" -#include "../mpd/Subset.h" -#include "../mpd/URLType.h" -#include "IHTTPTransaction.h" - -namespace dash -{ - namespace xml - { - class Node : public INode - { - public: - Node (); - Node (const Node& other); - virtual ~Node (); - - const std::vector<INode *>& GetNodes () const; - const std::vector<Node *>& GetSubNodes () const; - std::vector<std::string> GetAttributeKeys () const; - const std::string& GetName () const; - std::string GetText () const; - const std::map<std::string, std::string>& GetAttributes () const; - int GetType () const; - void SetType (int type); - const std::string& GetAttributeValue (std::string key) const; - void AddSubNode (Node *node); - void SetName (const std::string &name); - bool HasAttribute (const std::string& name) const; - void AddAttribute (const std::string &key, const std::string &value); - bool HasText () const; - void SetText (const std::string &text); - void Print (std::ostream &stream) const; - dash::mpd::MPD* ToMPD () const; - void SetMPDPath (std::string path); - - private: - void SetCommonValuesForRep (dash::mpd::RepresentationBase& object) const; - void SetCommonValuesForSeg (dash::mpd::SegmentBase& object) const; - void SetCommonValuesForMSeg (dash::mpd::MultipleSegmentBase& object) const; - dash::mpd::AdaptationSet* ToAdaptationSet () const; - dash::mpd::BaseUrl* ToBaseUrl () const; - dash::mpd::ContentComponent* ToContentComponent () const; - dash::mpd::Descriptor* ToDescriptor () const; - dash::mpd::Metrics* ToMetrics () const; - dash::mpd::Period* ToPeriod () const; - dash::mpd::ProgramInformation* ToProgramInformation () const; - dash::mpd::Range* ToRange () const; - dash::mpd::Representation* ToRepresentation () const; - dash::mpd::SegmentBase* ToSegmentBase () const; - dash::mpd::SegmentList* ToSegmentList () const; - dash::mpd::SegmentTemplate* ToSegmentTemplate () const; - dash::mpd::Timeline* ToTimeline () const; - dash::mpd::SegmentTimeline* ToSegmentTimeline () const; - dash::mpd::SegmentURL* ToSegmentURL () const; - dash::mpd::SubRepresentation* ToSubRepresentation () const; - dash::mpd::Subset* ToSubset () const; - dash::mpd::URLType* ToURLType (dash::metrics::HTTPTransactionType transActType) const; - - std::vector<Node *> subNodes; - std::map<std::string, std::string> attributes; - std::string name; - std::string text; - int type; - std::string mpdPath; - - }; - } -} - -#endif /* NODE_H_ */ |