diff options
Diffstat (limited to 'Swiften/Serializer/PayloadSerializers/RTPPayloadTypeSerializer.cpp')
-rw-r--r-- | Swiften/Serializer/PayloadSerializers/RTPPayloadTypeSerializer.cpp | 54 |
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 ¶meters = 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(); +} + +} |