summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Serializer/PayloadSerializers/RTPPayloadTypeSerializer.cpp')
-rw-r--r--Swiften/Serializer/PayloadSerializers/RTPPayloadTypeSerializer.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/Swiften/Serializer/PayloadSerializers/RTPPayloadTypeSerializer.cpp b/Swiften/Serializer/PayloadSerializers/RTPPayloadTypeSerializer.cpp
new file mode 100644
index 0000000..db21146
--- /dev/null
+++ b/Swiften/Serializer/PayloadSerializers/RTPPayloadTypeSerializer.cpp
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2011 Yoann Blein
+ * Licensed under the simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt for more information.
+ */
+
+#include <Swiften/Serializer/PayloadSerializers/RTPPayloadTypeSerializer.h>
+
+#include <boost/shared_ptr.hpp>
+#include <boost/smart_ptr/make_shared.hpp>
+#include <boost/lexical_cast.hpp>
+
+#include <Swiften/Serializer/XML/XMLElement.h>
+
+
+
+namespace Swift {
+
+RTPPayloadTypeSerializer::RTPPayloadTypeSerializer() {
+}
+
+std::string RTPPayloadTypeSerializer::serializePayload(boost::shared_ptr<RTPPayloadType> payloadType) const {
+ XMLElement payloadTypeElement("payload-type");
+
+ if (payloadType->getChannels() != 1) {
+ payloadTypeElement.setAttribute("channels", boost::lexical_cast<std::string>(payloadType->getChannels()));
+ }
+ if (payloadType->getClockrate() != 0) {
+ payloadTypeElement.setAttribute("clockrate", boost::lexical_cast<std::string>(payloadType->getClockrate()));
+ }
+ payloadTypeElement.setAttribute("id", boost::lexical_cast<std::string>(static_cast<int>(payloadType->getID())));
+ if (payloadType->getMaxptime() != 0) {
+ payloadTypeElement.setAttribute("maxptime", boost::lexical_cast<std::string>(payloadType->getMaxptime()));
+ }
+ if (!payloadType->getName().empty()) {
+ payloadTypeElement.setAttribute("name", payloadType->getName());
+ }
+ if (payloadType->getPTime() != 0) {
+ payloadTypeElement.setAttribute("ptime", boost::lexical_cast<std::string>( payloadType->getPTime()));
+ }
+
+ const RTPPayloadType::ParameterMap &parameters = payloadType->getParameters();
+ RTPPayloadType::ParameterMap::const_iterator it;
+ for (it = parameters.begin(); it != parameters.end(); ++it) {
+ boost::shared_ptr<XMLElement> parameterElement = boost::make_shared<XMLElement>("parameter");
+ parameterElement->setAttribute("name", it->first);
+ parameterElement->setAttribute("value", it->second);
+ payloadTypeElement.addNode(parameterElement);
+ }
+
+ return payloadTypeElement.serialize();
+}
+
+}