Browse Source

Fixed generated SDP description order

Paul-Louis Ageneau 4 years ago
parent
commit
d60ec4bf59
2 changed files with 18 additions and 8 deletions
  1. 6 3
      include/rtc/description.hpp
  2. 12 5
      src/description.cpp

+ 6 - 3
include/rtc/description.hpp

@@ -72,10 +72,11 @@ public:
 		void setDirection(Direction dir);
 		void setDirection(Direction dir);
 
 
 		virtual void parseSdpLine(string_view line);
 		virtual void parseSdpLine(string_view line);
-		virtual string generateSdp(string_view eol) const;
+		string generateSdp(string_view eol) const;
 
 
 	protected:
 	protected:
 		Entry(const string &mline, string mid, Direction dir = Direction::Unknown);
 		Entry(const string &mline, string mid, Direction dir = Direction::Unknown);
+		virtual string generateSdpLines(string_view eol) const;
 
 
 		std::vector<string> mAttributes;
 		std::vector<string> mAttributes;
 
 
@@ -103,9 +104,10 @@ public:
 		std::optional<size_t> maxMessageSize() const { return mMaxMessageSize; }
 		std::optional<size_t> maxMessageSize() const { return mMaxMessageSize; }
 
 
 		virtual void parseSdpLine(string_view line) override;
 		virtual void parseSdpLine(string_view line) override;
-		virtual string generateSdp(string_view eol) const override;
 
 
 	private:
 	private:
+		virtual string generateSdpLines(string_view eol) const override;
+
 		std::optional<uint16_t> mSctpPort;
 		std::optional<uint16_t> mSctpPort;
 		std::optional<size_t> mMaxMessageSize;
 		std::optional<size_t> mMaxMessageSize;
 	};
 	};
@@ -135,9 +137,10 @@ public:
 		bool hasPayloadType(int payloadType) const;
 		bool hasPayloadType(int payloadType) const;
 
 
 		virtual void parseSdpLine(string_view line) override;
 		virtual void parseSdpLine(string_view line) override;
-		virtual string generateSdp(string_view eol) const override;
 
 
 	private:
 	private:
+		virtual string generateSdpLines(string_view eol) const override;
+
 		int mBas = -1;
 		int mBas = -1;
 
 
 		struct RTPMap {
 		struct RTPMap {

+ 12 - 5
src/description.cpp

@@ -383,6 +383,13 @@ string Description::Entry::generateSdp(string_view eol) const {
 	// Port 9 is the discard protocol
 	// Port 9 is the discard protocol
 	sdp << "m=" << type() << ' ' << 9 << ' ' << description() << eol;
 	sdp << "m=" << type() << ' ' << 9 << ' ' << description() << eol;
 	sdp << "c=IN IP4 0.0.0.0" << eol;
 	sdp << "c=IN IP4 0.0.0.0" << eol;
+	sdp << generateSdpLines(eol);
+
+	return sdp.str();
+}
+
+string Description::Entry::generateSdpLines(string_view eol) const {
+	std::ostringstream sdp;
 	sdp << "a=bundle-only" << eol;
 	sdp << "a=bundle-only" << eol;
 	sdp << "a=mid:" << mMid << eol;
 	sdp << "a=mid:" << mMid << eol;
 
 
@@ -445,9 +452,9 @@ Description::Application Description::Application::reciprocate() const {
 	return reciprocated;
 	return reciprocated;
 }
 }
 
 
-string Description::Application::generateSdp(string_view eol) const {
+string Description::Application::generateSdpLines(string_view eol) const {
 	std::ostringstream sdp;
 	std::ostringstream sdp;
-	sdp << Entry::generateSdp(eol);
+	sdp << Entry::generateSdpLines(eol);
 
 
 	if (mSctpPort)
 	if (mSctpPort)
 		sdp << "a=sctp-port:" << *mSctpPort << eol;
 		sdp << "a=sctp-port:" << *mSctpPort << eol;
@@ -599,13 +606,13 @@ bool Description::Media::hasPayloadType(int payloadType) const {
 	return mRtpMap.find(payloadType) != mRtpMap.end();
 	return mRtpMap.find(payloadType) != mRtpMap.end();
 }
 }
 
 
-string Description::Media::generateSdp(string_view eol) const {
+string Description::Media::generateSdpLines(string_view eol) const {
 	std::ostringstream sdp;
 	std::ostringstream sdp;
-	sdp << Entry::generateSdp(eol);
-
 	if (mBas >= 0)
 	if (mBas >= 0)
 		sdp << "b=AS:" << mBas << eol;
 		sdp << "b=AS:" << mBas << eol;
 
 
+	sdp << Entry::generateSdpLines(eol);
+
 	for (auto it = mRtpMap.begin(); it != mRtpMap.end(); ++it) {
 	for (auto it = mRtpMap.begin(); it != mRtpMap.end(); ++it) {
 		auto &map = it->second;
 		auto &map = it->second;