blob: 2d842a1d5d4b8091bb74a94f96efab609d077d29 [file] [log] [blame]
henrike@webrtc.org28e20752013-07-10 00:45:36 +00001/*
kjellanderb24317b2016-02-10 07:54:43 -08002 * Copyright 2011 The WebRTC project authors. All Rights Reserved.
henrike@webrtc.org28e20752013-07-10 00:45:36 +00003 *
kjellanderb24317b2016-02-10 07:54:43 -08004 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
henrike@webrtc.org28e20752013-07-10 00:45:36 +00009 */
10
11// This file contain functions for parsing and serializing SDP messages.
12// Related RFC/draft including:
13// * RFC 4566 - SDP
14// * RFC 5245 - ICE
15// * RFC 3388 - Grouping of Media Lines in SDP
16// * RFC 4568 - SDP Security Descriptions for Media Streams
17// * draft-lennox-mmusic-sdp-source-selection-02 -
18// Mechanisms for Media Source Selection in SDP
19
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020020#ifndef PC_WEBRTCSDP_H_
21#define PC_WEBRTCSDP_H_
henrike@webrtc.org28e20752013-07-10 00:45:36 +000022
23#include <string>
24
Honghai Zhang7fb69db2016-03-14 11:59:18 -070025namespace cricket {
26class Candidate;
27} // namespace cricket
tommi6f59a4f2016-03-11 14:05:09 -080028
Honghai Zhang7fb69db2016-03-14 11:59:18 -070029namespace webrtc {
henrike@webrtc.org28e20752013-07-10 00:45:36 +000030class IceCandidateInterface;
31class JsepIceCandidate;
32class JsepSessionDescription;
33struct SdpParseError;
34
35// Serializes the passed in JsepSessionDescription.
36// Serialize SessionDescription including candidates if
37// JsepSessionDescription has candidates.
38// jdesc - The JsepSessionDescription object to be serialized.
deadbeef9d3584c2016-02-16 17:54:10 -080039// unified_plan_sdp - If set to true, include "a=msid" lines where appropriate.
henrike@webrtc.org28e20752013-07-10 00:45:36 +000040// return - SDP string serialized from the arguments.
Steve Antone831b8c2018-02-01 12:22:16 -080041std::string SdpSerialize(const JsepSessionDescription& jdesc);
henrike@webrtc.org28e20752013-07-10 00:45:36 +000042
43// Serializes the passed in IceCandidateInterface to a SDP string.
44// candidate - The candidate to be serialized.
45std::string SdpSerializeCandidate(const IceCandidateInterface& candidate);
46
Honghai Zhang7fb69db2016-03-14 11:59:18 -070047// Serializes a cricket Candidate.
48// candidate - The candidate to be serialized.
49std::string SdpSerializeCandidate(const cricket::Candidate& candidate);
50
henrike@webrtc.org28e20752013-07-10 00:45:36 +000051// Deserializes the passed in SDP string to a JsepSessionDescription.
52// message - SDP string to be Deserialized.
53// jdesc - The JsepSessionDescription deserialized from the SDP string.
54// error - The detail error information when parsing fails.
55// return - true on success, false on failure.
56bool SdpDeserialize(const std::string& message,
57 JsepSessionDescription* jdesc,
58 SdpParseError* error);
59
60// Deserializes the passed in SDP string to one JsepIceCandidate.
61// The first line must be a=candidate line and only the first line will be
62// parsed.
63// message - The SDP string to be Deserialized.
64// candidates - The JsepIceCandidate from the SDP string.
65// error - The detail error information when parsing fails.
66// return - true on success, false on failure.
67bool SdpDeserializeCandidate(const std::string& message,
68 JsepIceCandidate* candidate,
69 SdpParseError* error);
Honghai Zhang7fb69db2016-03-14 11:59:18 -070070
71// Deserializes the passed in SDP string to a cricket Candidate.
72// The first line must be a=candidate line and only the first line will be
73// parsed.
74// transport_name - The transport name (MID) of the candidate.
75// message - The SDP string to be deserialized.
76// candidate - The cricket Candidate from the SDP string.
77// error - The detail error information when parsing fails.
78// return - true on success, false on failure.
79bool SdpDeserializeCandidate(const std::string& transport_name,
80 const std::string& message,
81 cricket::Candidate* candidate,
82 SdpParseError* error);
83
henrike@webrtc.org28e20752013-07-10 00:45:36 +000084} // namespace webrtc
85
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020086#endif // PC_WEBRTCSDP_H_