@@ -54,8 +54,27 @@ function stripPayload(sdp, payload) {
5454
5555function stripMediaDescription ( sdp , description ) {
5656 const descriptionRegExp = new RegExp ( "m=" + description + ".*$" , "gm" ) ;
57+ const groupRegExp = new RegExp ( "^a=group:.*$" , "gm" ) ;
58+
5759 if ( descriptionRegExp . test ( sdp ) ) {
58- sdp = sdp . split ( / ^ m = / gm) . filter ( ( section ) => ( section . substr ( 0 , description . length ) !== description ) ) . join ( 'm=' ) ;
60+ let midLineToRemove ;
61+ sdp = sdp . split ( / ^ m = / gm) . filter ( ( section ) => {
62+ if ( section . substr ( 0 , description . length ) === description ) {
63+ midLineToRemove = section . match ( / ^ a = m i d : .* $ / gm) ;
64+ if ( midLineToRemove ) {
65+ midLineToRemove = midLineToRemove [ 0 ] . match ( / : .+ $ / g) [ 0 ] . substr ( 1 ) ;
66+ }
67+ return false ;
68+ }
69+ return true ;
70+ } ) . join ( 'm=' ) ;
71+ let groupLine = sdp . match ( groupRegExp ) ;
72+ if ( groupLine && groupLine . length === 1 ) {
73+ groupLine = groupLine [ 0 ] ;
74+ const groupRegExpReplace = new RegExp ( "\ *" + midLineToRemove + "[^\ ]*" , "g" ) ;
75+ groupLine = groupLine . replace ( groupRegExpReplace , "" ) ;
76+ sdp = sdp . split ( groupRegExp ) . join ( groupLine ) ;
77+ }
5978 }
6079 return sdp ;
6180}
@@ -89,7 +108,24 @@ Modifiers = {
89108 } ,
90109
91110 stripVideo : function ( description ) {
92- description . sdp = stripMediaDescription ( description , "video" ) ;
111+ description . sdp = stripMediaDescription ( description . sdp , "video" ) ;
112+ return SIP . Utils . Promise . resolve ( description ) ;
113+ } ,
114+
115+ addMidLines : function ( description ) {
116+ let sdp = description . sdp ;
117+ if ( sdp . search ( / ^ a = m i d .* $ / gm) === - 1 ) {
118+ const mlines = sdp . match ( / ^ m = .* $ / gm) ;
119+ sdp = sdp . split ( / ^ m = .* $ / gm) ;
120+ mlines . forEach ( ( elem , idx ) => {
121+ mlines [ idx ] = elem + '\na=mid:' + idx ;
122+ } ) ;
123+ sdp . forEach ( ( elem , idx ) => {
124+ sdp [ idx ] = elem + mlines [ idx ] ;
125+ } ) ;
126+ sdp = sdp . join ( '' ) ;
127+ description . sdp = sdp ;
128+ }
93129 return SIP . Utils . Promise . resolve ( description ) ;
94130 }
95131} ;
0 commit comments