[vlc-devel] [PATCH 11/17] dash: added IS namespace and getprofile to domparser
Christopher at mailsrv.uni-klu.ac.at
Christopher at mailsrv.uni-klu.ac.at
Mon Jan 30 14:48:29 CET 2012
From: Christopher Mueller <christopher.mueller at itec.aau.at>
---
modules/stream_filter/dash/xml/DOMParser.cpp | 25 ++++++++++++++++++++-----
modules/stream_filter/dash/xml/DOMParser.h | 1 +
2 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/modules/stream_filter/dash/xml/DOMParser.cpp b/modules/stream_filter/dash/xml/DOMParser.cpp
index 4a63d70..a2f54d2 100644
--- a/modules/stream_filter/dash/xml/DOMParser.cpp
+++ b/modules/stream_filter/dash/xml/DOMParser.cpp
@@ -28,6 +28,7 @@
#include "DOMParser.h"
using namespace dash::xml;
+using namespace dash::mpd;
DOMParser::DOMParser (stream_t *stream) :
root( NULL ),
@@ -132,21 +133,35 @@ void DOMParser::print (Node *node, int offset)
this->print(node->getSubNodes().at(i), offset);
}
}
-
void DOMParser::print ()
{
this->print(this->root, 0);
}
-
bool DOMParser::isDash (stream_t *stream)
{
- const char* psz_namespace = "urn:mpeg:mpegB:schema:DASH:MPD:DIS2011";
+ const char* psz_namespaceDIS = "urn:mpeg:mpegB:schema:DASH:MPD:DIS2011";
+ const char* psz_namespaceIS = "urn:mpeg:DASH:schema:MPD:2011";
const uint8_t *peek;
int peek_size = stream_Peek(stream, &peek, 1024);
- if (peek_size < (int)strlen(psz_namespace))
+ if (peek_size < (int)strlen(psz_namespaceDIS))
return false;
std::string header((const char*)peek, peek_size);
- return header.find(psz_namespace) != std::string::npos;
+ return (header.find(psz_namespaceDIS) != std::string::npos) || (header.find(psz_namespaceIS) != std::string::npos);
+}
+Profile DOMParser::getProfile ()
+{
+ if(this->root == NULL)
+ return dash::mpd::UnknownProfile;
+
+ const std::string profile = this->root->getAttributeValue("profiles");
+
+ if(!profile.compare("urn:mpeg:mpegB:profile:dash:isoff-basic-on-demand:cm"))
+ return dash::mpd::BasicCM;
+
+ if(!profile.compare("urn:mpeg:dash:profile:isoff-main:2011"))
+ return dash::mpd::IsoffMain;
+
+ return dash::mpd::UnknownProfile;
}
diff --git a/modules/stream_filter/dash/xml/DOMParser.h b/modules/stream_filter/dash/xml/DOMParser.h
index e138efc..7b5891b 100644
--- a/modules/stream_filter/dash/xml/DOMParser.h
+++ b/modules/stream_filter/dash/xml/DOMParser.h
@@ -55,6 +55,7 @@ namespace dash
Node* getRootNode ();
void print ();
static bool isDash (stream_t *stream);
+ mpd::Profile getProfile ();
private:
Node *root;
--
1.7.0.4
More information about the vlc-devel
mailing list