/* * Copyright (c) 2011 Yoann Blein * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #include #include #include #include #include namespace Swift { RTPPayloadTypeSerializer::RTPPayloadTypeSerializer() { } std::string RTPPayloadTypeSerializer::serializePayload(boost::shared_ptr payloadType) const { XMLElement payloadTypeElement("payload-type"); if (payloadType->getChannels() != 1) { payloadTypeElement.setAttribute("channels", boost::lexical_cast(payloadType->getChannels())); } if (payloadType->getClockrate() != 0) { payloadTypeElement.setAttribute("clockrate", boost::lexical_cast(payloadType->getClockrate())); } payloadTypeElement.setAttribute("id", boost::lexical_cast(static_cast(payloadType->getID()))); if (payloadType->getMaxptime() != 0) { payloadTypeElement.setAttribute("maxptime", boost::lexical_cast(payloadType->getMaxptime())); } if (!payloadType->getName().empty()) { payloadTypeElement.setAttribute("name", payloadType->getName()); } if (payloadType->getPTime() != 0) { payloadTypeElement.setAttribute("ptime", boost::lexical_cast( payloadType->getPTime())); } const RTPPayloadType::ParameterMap ¶meters = payloadType->getParameters(); RTPPayloadType::ParameterMap::const_iterator it; for (it = parameters.begin(); it != parameters.end(); ++it) { boost::shared_ptr parameterElement = boost::make_shared("parameter"); parameterElement->setAttribute("name", it->first); parameterElement->setAttribute("value", it->second); payloadTypeElement.addNode(parameterElement); } return payloadTypeElement.serialize(); } }