]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7664 #resolve
authorAnthony Minessale <anthm@freeswitch.org>
Wed, 17 Jun 2015 16:58:25 +0000 (11:58 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Wed, 17 Jun 2015 16:58:25 +0000 (11:58 -0500)
html5/verto/demo/js/verto-min.js
html5/verto/js/src/jquery.FSRTC.js
html5/verto/video_demo/js/verto-min.js

index 8fc2dedfe4c08e7440a784b2d2ae10db2719ac4e..451186f9b63fb78dd0e0712389a0aeb08c34c92c 100644 (file)
@@ -1,5 +1,5 @@
 
-(function($){function findLine(sdpLines,prefix,substr){return findLineInRange(sdpLines,0,-1,prefix,substr);}
+var iceTimerSent=0;var iceTimerCompleted=0;var iceTimer;(function($){function findLine(sdpLines,prefix,substr){return findLineInRange(sdpLines,0,-1,prefix,substr);}
 function findLineInRange(sdpLines,startLine,endLine,prefix,substr){var realEndLine=(endLine!=-1)?endLine:sdpLines.length;for(var i=startLine;i<realEndLine;++i){if(sdpLines[i].indexOf(prefix)===0){if(!substr||sdpLines[i].toLowerCase().indexOf(substr.toLowerCase())!==-1){return i;}}}
 return null;}
 function getCodecPayloadType(sdpLine){var pattern=new RegExp('a=rtpmap:(\\d+) \\w+\\/\\d+');var result=sdpLine.match(pattern);return(result&&result.length==2)?result[1]:null;}
@@ -50,8 +50,9 @@ var mediaParams=getMediaParams(self);console.log("Audio constraints",mediaParams
 if(tmp&&!(typeof(tmp)=="object"&&tmp.constructor===Array)){console.warn("iceServers must be an array, reverting to default ice servers");tmp=null;}
 iceServers={iceServers:tmp||[STUN]};if(!moz&&!tmp){iceServers.iceServers=[STUN];}}
 var optional={optional:[]};if(!moz){optional.optional=[{DtlsSrtpKeyAgreement:true},{RtpDataChannels:options.onChannelMessage?true:false}];}
-var peer=new PeerConnection(iceServers,optional);openOffererChannel();var x=0;peer.onicecandidate=function(event){if(event.candidate){options.onICE(event.candidate);}else{if(options.onICEComplete){options.onICEComplete();}
-if(options.type=="offer"){if((!moz||(!options.sentICESDP&&peer.localDescription.sdp.match(/a=candidate/))&&!x&&options.onICESDP)){options.onICESDP(peer.localDescription);}}else{if(!x&&options.onICESDP){options.onICESDP(peer.localDescription);}}}};if(options.attachStream)peer.addStream(options.attachStream);if(options.attachStreams&&options.attachStream.length){var streams=options.attachStreams;for(var i=0;i<streams.length;i++){peer.addStream(streams[i]);}}
+var peer=new PeerConnection(iceServers,optional);openOffererChannel();var x=0;peer.onicecandidate=function(event){if(event.candidate){options.onICE(event.candidate);clearTimeout(iceTimer);iceTimer=setTimeout(function(){iceTimerSent=1;if(iceTimerCompleted==0){if(options.onICEComplete){options.onICEComplete();}
+if(options.type=="offer"){if((!moz||(!options.sentICESDP&&peer.localDescription.sdp.match(/a=candidate/))&&!x&&options.onICESDP)){options.onICESDP(peer.localDescription);}}else{if(!x&&options.onICESDP){options.onICESDP(peer.localDescription);}}}},1000);}else{if(iceTimerSent==0){clearTimeout(iceTimer);iceTimerCompleted=1;if(options.onICEComplete){options.onICEComplete();}
+if(options.type=="offer"){if((!moz||(!options.sentICESDP&&peer.localDescription.sdp.match(/a=candidate/))&&!x&&options.onICESDP)){options.onICESDP(peer.localDescription);}}else{if(!x&&options.onICESDP){options.onICESDP(peer.localDescription);}}}}};if(options.attachStream)peer.addStream(options.attachStream);if(options.attachStreams&&options.attachStream.length){var streams=options.attachStreams;for(var i=0;i<streams.length;i++){peer.addStream(streams[i]);}}
 peer.onaddstream=function(event){var remoteMediaStream=event.stream;remoteMediaStream.onended=function(){if(options.onRemoteStreamEnded)options.onRemoteStreamEnded(remoteMediaStream);};if(options.onRemoteStream)options.onRemoteStream(remoteMediaStream);};var constraints=options.constraints||{offerToReceiveAudio:true,offerToReceiveVideo:true};function createOffer(){if(!options.onOfferSDP)return;peer.createOffer(function(sessionDescription){sessionDescription.sdp=serializeSdp(sessionDescription.sdp);peer.setLocalDescription(sessionDescription);options.onOfferSDP(sessionDescription);if(moz&&options.onICESDP&&sessionDescription.sdp.match(/a=candidate/)){options.onICESDP(sessionDescription);options.sentICESDP=1;}},onSdpError,constraints);}
 function createAnswer(){if(options.type!="answer")return;peer.setRemoteDescription(new SessionDescription(options.offerSDP),onSdpSuccess,onSdpError);peer.createAnswer(function(sessionDescription){sessionDescription.sdp=serializeSdp(sessionDescription.sdp);peer.setLocalDescription(sessionDescription);if(options.onAnswerSDP){options.onAnswerSDP(sessionDescription);}},onSdpError,constraints);}
 if((options.onChannelMessage&&!moz)||!options.onChannelMessage){createOffer();createAnswer();}
index c111cb74638938f04d896776aa2980a4156dbec9..05debc676b96262a98d005fe7d079d66a338f0be 100644 (file)
  *
  */
 
+
+var iceTimerSent = 0;
+var iceTimerCompleted = 0;
+var iceTimer;
+
 (function($) {
 
     // Find the line in sdpLines that starts with |prefix|, and, if specified,
         peer.onicecandidate = function(event) {
             if (event.candidate) {
                 options.onICE(event.candidate);
+               clearTimeout(iceTimer);
+               iceTimer = setTimeout(function() {
+                   iceTimerSent = 1;
+
+                   if (iceTimerCompleted == 0) {
+
+                       if (options.onICEComplete) {
+                           options.onICEComplete();
+                       }
+
+                       if (options.type == "offer") {
+                           /* new mozilla now tries to be like chrome but it takes them 10 seconds to complete the ICE 
+                              Booooooooo! This trickle thing is a waste of time...... We'll all have to re-code our engines 
+                              to handle partial setups to maybe save 100m
+                           */
+                           if ((!moz || (!options.sentICESDP && peer.localDescription.sdp.match(/a=candidate/)) && !x && options.onICESDP)) {
+                               options.onICESDP(peer.localDescription);
+                               //x = 1;
+                               /*
+                                 x = 1;
+                                 peer.createOffer(function(sessionDescription) {
+                                 sessionDescription.sdp = serializeSdp(sessionDescription.sdp);
+                                 peer.setLocalDescription(sessionDescription);
+                                 if (options.onICESDP) {
+                                  options.onICESDP(sessionDescription);
+                                 }
+                                 }, onSdpError, constraints);
+                               */
+                           }
+                       } else {
+                           if (!x && options.onICESDP) {
+                               options.onICESDP(peer.localDescription);
+                               //x = 1;
+                               /*
+                                 x = 1;
+                                 peer.createAnswer(function(sessionDescription) {
+                                 sessionDescription.sdp = serializeSdp(sessionDescription.sdp);
+                                 peer.setLocalDescription(sessionDescription);
+                                 if (options.onICESDP) {
+                                  options.onICESDP(sessionDescription);
+                                 }
+                                 }, onSdpError, constraints);
+                               */
+                           }
+                       }
+                   }
+               }, 1000);
             } else {
-                if (options.onICEComplete) {
-                    options.onICEComplete();
-                }
+               if (iceTimerSent == 0) {
+                   clearTimeout(iceTimer);
+                   iceTimerCompleted = 1;
 
-                if (options.type == "offer") {
-                   /* new mozilla now tries to be like chrome but it takes them 10 seconds to complete the ICE 
-                      Booooooooo! This trickle thing is a waste of time...... We'll all have to re-code our engines 
-                      to handle partial setups to maybe save 100m
-                    */
-                    if ((!moz || (!options.sentICESDP && peer.localDescription.sdp.match(/a=candidate/)) && !x && options.onICESDP)) {
-                        options.onICESDP(peer.localDescription);
-                        //x = 1;
-                        /*
-                        x = 1;
-                        peer.createOffer(function(sessionDescription) {
-                            sessionDescription.sdp = serializeSdp(sessionDescription.sdp);
-                            peer.setLocalDescription(sessionDescription);
-                            if (options.onICESDP) {
-                                options.onICESDP(sessionDescription);
-                            }
-                        }, onSdpError, constraints);
-                        */
+                    if (options.onICEComplete) {
+                       options.onICEComplete();
                     }
-                } else {
-                    if (!x && options.onICESDP) {
-                        options.onICESDP(peer.localDescription);
-                        //x = 1;
-                        /*
-                        x = 1;
-                        peer.createAnswer(function(sessionDescription) {
-                            sessionDescription.sdp = serializeSdp(sessionDescription.sdp);
-                            peer.setLocalDescription(sessionDescription);
-                            if (options.onICESDP) {
-                                options.onICESDP(sessionDescription);
-                            }
-                        }, onSdpError, constraints);
-                        */
+
+                    if (options.type == "offer") {
+                       /* new mozilla now tries to be like chrome but it takes them 10 seconds to complete the ICE 
+                          Booooooooo! This trickle thing is a waste of time...... We'll all have to re-code our engines 
+                          to handle partial setups to maybe save 100m
+                       */
+                       if ((!moz || (!options.sentICESDP && peer.localDescription.sdp.match(/a=candidate/)) && !x && options.onICESDP)) {
+                            options.onICESDP(peer.localDescription);
+                            //x = 1;
+                            /*
+                              x = 1;
+                              peer.createOffer(function(sessionDescription) {
+                              sessionDescription.sdp = serializeSdp(sessionDescription.sdp);
+                              peer.setLocalDescription(sessionDescription);
+                              if (options.onICESDP) {
+                              options.onICESDP(sessionDescription);
+                              }
+                              }, onSdpError, constraints);
+                            */
+                       }
+                    } else {
+                       if (!x && options.onICESDP) {
+                            options.onICESDP(peer.localDescription);
+                            //x = 1;
+                            /*
+                              x = 1;
+                              peer.createAnswer(function(sessionDescription) {
+                              sessionDescription.sdp = serializeSdp(sessionDescription.sdp);
+                              peer.setLocalDescription(sessionDescription);
+                              if (options.onICESDP) {
+                              options.onICESDP(sessionDescription);
+                              }
+                              }, onSdpError, constraints);
+                            */
+                       }
                     }
-                }
+               }
             }
         };
-
+       
         // attachStream = MediaStream;
         if (options.attachStream) peer.addStream(options.attachStream);
 
index 8fc2dedfe4c08e7440a784b2d2ae10db2719ac4e..451186f9b63fb78dd0e0712389a0aeb08c34c92c 100644 (file)
@@ -1,5 +1,5 @@
 
-(function($){function findLine(sdpLines,prefix,substr){return findLineInRange(sdpLines,0,-1,prefix,substr);}
+var iceTimerSent=0;var iceTimerCompleted=0;var iceTimer;(function($){function findLine(sdpLines,prefix,substr){return findLineInRange(sdpLines,0,-1,prefix,substr);}
 function findLineInRange(sdpLines,startLine,endLine,prefix,substr){var realEndLine=(endLine!=-1)?endLine:sdpLines.length;for(var i=startLine;i<realEndLine;++i){if(sdpLines[i].indexOf(prefix)===0){if(!substr||sdpLines[i].toLowerCase().indexOf(substr.toLowerCase())!==-1){return i;}}}
 return null;}
 function getCodecPayloadType(sdpLine){var pattern=new RegExp('a=rtpmap:(\\d+) \\w+\\/\\d+');var result=sdpLine.match(pattern);return(result&&result.length==2)?result[1]:null;}
@@ -50,8 +50,9 @@ var mediaParams=getMediaParams(self);console.log("Audio constraints",mediaParams
 if(tmp&&!(typeof(tmp)=="object"&&tmp.constructor===Array)){console.warn("iceServers must be an array, reverting to default ice servers");tmp=null;}
 iceServers={iceServers:tmp||[STUN]};if(!moz&&!tmp){iceServers.iceServers=[STUN];}}
 var optional={optional:[]};if(!moz){optional.optional=[{DtlsSrtpKeyAgreement:true},{RtpDataChannels:options.onChannelMessage?true:false}];}
-var peer=new PeerConnection(iceServers,optional);openOffererChannel();var x=0;peer.onicecandidate=function(event){if(event.candidate){options.onICE(event.candidate);}else{if(options.onICEComplete){options.onICEComplete();}
-if(options.type=="offer"){if((!moz||(!options.sentICESDP&&peer.localDescription.sdp.match(/a=candidate/))&&!x&&options.onICESDP)){options.onICESDP(peer.localDescription);}}else{if(!x&&options.onICESDP){options.onICESDP(peer.localDescription);}}}};if(options.attachStream)peer.addStream(options.attachStream);if(options.attachStreams&&options.attachStream.length){var streams=options.attachStreams;for(var i=0;i<streams.length;i++){peer.addStream(streams[i]);}}
+var peer=new PeerConnection(iceServers,optional);openOffererChannel();var x=0;peer.onicecandidate=function(event){if(event.candidate){options.onICE(event.candidate);clearTimeout(iceTimer);iceTimer=setTimeout(function(){iceTimerSent=1;if(iceTimerCompleted==0){if(options.onICEComplete){options.onICEComplete();}
+if(options.type=="offer"){if((!moz||(!options.sentICESDP&&peer.localDescription.sdp.match(/a=candidate/))&&!x&&options.onICESDP)){options.onICESDP(peer.localDescription);}}else{if(!x&&options.onICESDP){options.onICESDP(peer.localDescription);}}}},1000);}else{if(iceTimerSent==0){clearTimeout(iceTimer);iceTimerCompleted=1;if(options.onICEComplete){options.onICEComplete();}
+if(options.type=="offer"){if((!moz||(!options.sentICESDP&&peer.localDescription.sdp.match(/a=candidate/))&&!x&&options.onICESDP)){options.onICESDP(peer.localDescription);}}else{if(!x&&options.onICESDP){options.onICESDP(peer.localDescription);}}}}};if(options.attachStream)peer.addStream(options.attachStream);if(options.attachStreams&&options.attachStream.length){var streams=options.attachStreams;for(var i=0;i<streams.length;i++){peer.addStream(streams[i]);}}
 peer.onaddstream=function(event){var remoteMediaStream=event.stream;remoteMediaStream.onended=function(){if(options.onRemoteStreamEnded)options.onRemoteStreamEnded(remoteMediaStream);};if(options.onRemoteStream)options.onRemoteStream(remoteMediaStream);};var constraints=options.constraints||{offerToReceiveAudio:true,offerToReceiveVideo:true};function createOffer(){if(!options.onOfferSDP)return;peer.createOffer(function(sessionDescription){sessionDescription.sdp=serializeSdp(sessionDescription.sdp);peer.setLocalDescription(sessionDescription);options.onOfferSDP(sessionDescription);if(moz&&options.onICESDP&&sessionDescription.sdp.match(/a=candidate/)){options.onICESDP(sessionDescription);options.sentICESDP=1;}},onSdpError,constraints);}
 function createAnswer(){if(options.type!="answer")return;peer.setRemoteDescription(new SessionDescription(options.offerSDP),onSdpSuccess,onSdpError);peer.createAnswer(function(sessionDescription){sessionDescription.sdp=serializeSdp(sessionDescription.sdp);peer.setLocalDescription(sessionDescription);if(options.onAnswerSDP){options.onAnswerSDP(sessionDescription);}},onSdpError,constraints);}
 if((options.onChannelMessage&&!moz)||!options.onChannelMessage){createOffer();createAnswer();}