@@ -967,3 +967,64 @@ SCENARIO("multicastttlSdp", "[parse]")
967967
968968 REQUIRE (newSdp == sdp);
969969}
970+
971+ SCENARIO (" extmapEncryptSdp" , " [parse]" )
972+ {
973+ auto sdp = helpers::readFile (" test/data/extmap-encrypt.sdp" );
974+ auto session = sdptransform::parse (sdp);
975+
976+ REQUIRE (session.size () > 0 );
977+ REQUIRE (session.find (" media" ) != session.end ());
978+
979+ auto & media = session.at (" media" );
980+ auto & audio = media[0 ];
981+ auto audioPayloads = sdptransform::parsePayloads (audio.at (" payloads" ));
982+
983+ REQUIRE (audioPayloads == R"( [ 96 ])" _json);
984+
985+ REQUIRE (audio.at (" type" ) == " audio" );
986+ REQUIRE (audio.at (" port" ) == 54400 );
987+ REQUIRE (audio.at (" protocol" ) == " RTP/SAVPF" );
988+ REQUIRE (audio.at (" rtp" )[0 ].at (" payload" ) == 96 );
989+ REQUIRE (audio.at (" rtp" )[0 ].at (" codec" ) == " opus" );
990+ REQUIRE (audio.at (" rtp" )[0 ].at (" rate" ) == 48000 );
991+ REQUIRE (
992+ audio.at (" ext" )[0 ] ==
993+ R"( {
994+ "value" : 1,
995+ "direction" : "sendonly",
996+ "uri" : "URI-toffset"
997+ })" _json
998+ );
999+ REQUIRE (
1000+ audio.at (" ext" )[1 ] ==
1001+ R"( {
1002+ "value" : 2,
1003+ "uri" : "urn:ietf:params:rtp-hdrext:toffset"
1004+ })" _json
1005+ );
1006+ REQUIRE (
1007+ audio.at (" ext" )[2 ] ==
1008+ R"( {
1009+ "value" : 3,
1010+ "encrypt-uri" : "urn:ietf:params:rtp-hdrext:encrypt",
1011+ "uri" : "urn:ietf:params:rtp-hdrext:smpte-tc",
1012+ "config" : "25@600/24"
1013+ })" _json
1014+ );
1015+ REQUIRE (
1016+ audio.at (" ext" )[3 ] ==
1017+ R"( {
1018+ "value" : 4,
1019+ "direction" : "recvonly",
1020+ "encrypt-uri" : "urn:ietf:params:rtp-hdrext:encrypt",
1021+ "uri" : "URI-gps-string"
1022+ })" _json
1023+ );
1024+
1025+ REQUIRE (media.size () == 1 );
1026+
1027+ auto newSdp = sdptransform::write (session);
1028+
1029+ REQUIRE (newSdp == sdp);
1030+ }
0 commit comments