/* * Copyright (c) 2012 Yoann Blein * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #include #include #include #include #include #include #include #include #include namespace Swift { JingleRTPDescriptionSerializer::JingleRTPDescriptionSerializer() { } std::string JingleRTPDescriptionSerializer::serializePayload(boost::shared_ptr payload) const { XMLElement description("description", "urn:xmpp:jingle:apps:rtp:1"); description.setAttribute("media", mediaTypeToString(payload->getMedia())); if (payload->getSSRC()) { description.setAttribute("ssrc", boost::lexical_cast(payload->getSSRC())); } if (!payload->getPayloadTypes().empty()) { RTPPayloadTypeSerializer payloadTypeSerializer; foreach(RTPPayloadType payloadType, payload->getPayloadTypes()) { description.addNode(boost::make_shared(payloadTypeSerializer.serialize(boost::make_shared(payloadType)))); } } std::string type, value; payload->getBandwidth(type, value); if (!type.empty()) { XMLElement::ref bandwidth = boost::make_shared("bandwidth"); bandwidth->setAttribute("type", type); bandwidth->addNode(XMLTextNode::create(value)); description.addNode(bandwidth); } return description.serialize(); } std::string JingleRTPDescriptionSerializer::mediaTypeToString(JingleRTPDescription::MediaType mediaType) const { switch (mediaType) { case JingleRTPDescription::Audio: return "audio"; case JingleRTPDescription::Video: return "video"; case JingleRTPDescription::Unknown: default: std::cerr << "Serializing unknown media type." << std::endl; return ""; } assert(false); return ""; } }