Fixed generated SDP description order

This commit is contained in:
Paul-Louis Ageneau
2020-09-11 19:02:33 +02:00
parent e8a4c859e6
commit d60ec4bf59
2 changed files with 18 additions and 8 deletions

View File

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

View File

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