@@ -885,7 +885,9 @@ void Description::Application::parseSdpLine(string_view line) {
885
885
Description::Media::Media (const string &sdp) : Entry(get_first_line(sdp), " " , Direction::Unknown) {
886
886
string line;
887
887
std::istringstream ss (sdp);
888
- std::getline (ss, line); // discard first line
888
+ std::getline (ss, line);
889
+ parseFirstLine (line); // save codecs order
890
+
889
891
while (ss) {
890
892
std::getline (ss, line);
891
893
trim_end (line);
@@ -905,8 +907,9 @@ Description::Media::Media(const string &mline, string mid, Direction dir)
905
907
string Description::Media::description () const {
906
908
std::ostringstream desc;
907
909
desc << Entry::description ();
908
- for (auto it = mRtpMaps .begin (); it != mRtpMaps .end (); ++it)
909
- desc << ' ' << it->first ;
910
+ for (const string&codec : mCodecsOrder ) {
911
+ desc << ' ' << codec;
912
+ }
910
913
911
914
return desc.str ();
912
915
}
@@ -1051,6 +1054,17 @@ string Description::Media::generateSdpLines(string_view eol) const {
1051
1054
return sdp.str ();
1052
1055
}
1053
1056
1057
+ void Description::Media::parseFirstLine (string line) {
1058
+ std::istringstream ss (line);
1059
+ string word;
1060
+ std::getline (ss, word, ' ' ); // audio
1061
+ std::getline (ss, word, ' ' ); // 9
1062
+ std::getline (ss, word, ' ' ); // UDP/TLS/RTP/SAVPF
1063
+ while (std::getline (ss, word, ' ' )) {
1064
+ mCodecsOrder .push_back (word);
1065
+ }
1066
+ }
1067
+
1054
1068
void Description::Media::parseSdpLine (string_view line) {
1055
1069
if (match_prefix (line, " a=" )) {
1056
1070
string_view attr = line.substr (2 );
0 commit comments