Here's test function (sorry for C++ style). "senders" assumed to contain a 
single sender with a single stream.

After replaceTrack() sender.track.readyState stays "ended" while 
newTrack.readyState is "live".

var ReplaceTrack = function(senders_, newTracks_) {
        var wasReplaced = false;
        for (var j = 0; j < newTracks_.length; j++) {
                var newTrack = newTracks_[j];
                for (var i = 0; i < senders_.length; i++) {
                        var sender = senders_[i];
                        if (sender.track) {
                                if (sender.track.kind == newTrack.kind) {
                                        console.log("DBG2071 
newTrack.readyState=", newTrack.readyState);
                                        console.log("DBG2071 " + i + ". .." + 
sender.track.kind + " track has been replaced with :  ", newTrack.id + " [" + 
newTrack.label + "]", "sender.track.readyState=", sender.track.readyState, );
                                        try {
                                                sender.replaceTrack(newTrack);
                                        } catch (e) {
                                                console.error("DBG207 
sender.replaceTrack error : ", e.message);
                                        }
                                        console.log("DBG2071 after replaceTrack 
: sender.track.readyState=", sender.track.readyState);
                                        console.log("DBG2071 
newTrack.readyState=", newTrack.readyState);
                                        wasReplaced = true;
                                        break;
                                }
                        }
                }
                if (wasReplaced) {
                        break;
                }
        }
        return wasReplaced;
};
_______________________________________________
dev-media mailing list
dev-media@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-media

Reply via email to