<html> 
 | 
<head> 
 | 
    <link rel="icon" type="image/png" href="webrtc.png" /> 
 | 
    <script src="libs/tfjs"></script> 
 | 
    <script src="libs/tf-backend-wasm.js"></script>     
 | 
    <script> 
 | 
        tf.setBackend('wasm').then(() => main()); 
 | 
    </script> 
 | 
    <script src="libs/coco-ssd"> </script> 
 | 
    <script src="libs/posenet"> </script> 
 | 
    <script src="libs/deeplab"> </script> 
 | 
    <script src="libs/body-pix"></script> 
 | 
    <script src="libs/blazeface"></script> 
 | 
    <script type="module" src="webrtc-streamer-element.js"></script> 
 | 
    <script type="module" src="webrtc-streamer-footer-element.js"></script> 
 | 
    <script type="module" src="webrtc-streamer-menu-element.js"></script> 
 | 
    <script type="module" src="webrtc-streamer-options-element.js"></script> 
 | 
    <script type="module" src="webrtc-streamer-algo-element.js"></script> 
 | 
</head> 
 | 
<body> 
 | 
    <webrtc-streamer-menu id="selector" ></webrtc-streamer-menu> 
 | 
    <webrtc-streamer-algo id="algo"></webrtc-streamer-algo> 
 | 
    <webrtc-streamer id="stream"></webrtc-streamer> 
 | 
    <webrtc-streamer-options id="options" options="rtptransport=tcp&timeout=60&width=0&height=0&bitrate=0&rotation=0" style="display:none"></webrtc-streamer-options> 
 | 
    <webrtc-streamer-footer></webrtc-streamer-footer> 
 | 
  
 | 
    <script> 
 | 
        customElements.whenDefined('webrtc-streamer').then(() => { 
 | 
            let selectorElement = document.getElementById("selector"); 
 | 
            let streamElement = document.getElementById("stream"); 
 | 
            let optionsElement = document.getElementById("options"); 
 | 
            let algoElement = document.getElementById("algo"); 
 | 
  
 | 
            let url; 
 | 
            if (typeof URLSearchParams != 'undefined') { 
 | 
                var params = new URLSearchParams(location.search); 
 | 
                if (params.has("options")) { 
 | 
                    streamElement.setAttribute('options', params.get("options")); 
 | 
                } 
 | 
                if (params.has("algo")) { 
 | 
                    algoElement.setAttribute('selected', params.get("algo")); 
 | 
                    streamElement.setAttribute('algo', params.get("algo")); 
 | 
                }             
 | 
                if (params.has("video") || params.has("audio")) { 
 | 
                    url = { video:params.get("video"), audio:params.get("audio") }; 
 | 
                } 
 | 
                if (params.has("showoptions")) { 
 | 
                    optionsElement.style.display = "block"; 
 | 
                } 
 | 
            } 
 | 
  
 | 
            selectorElement.addEventListener('init', (event) => { 
 | 
                    if (url) { 
 | 
                        let media = JSON.stringify(url) 
 | 
                        selectorElement.setAttribute('selected', media); 
 | 
                        streamElement.setAttribute('url', media); 
 | 
                    } else { 
 | 
                        let mediaList = event.detail; 
 | 
                        if (mediaList.length > 0) { 
 | 
                            var random = mediaList.sort(() => .5 - Math.random()); 
 | 
                            let media = JSON.stringify(random[0]) 
 | 
                            selectorElement.setAttribute('selected', media); 
 | 
                            streamElement.setAttribute('url', ''); 
 | 
                            streamElement.setAttribute('options', optionsElement.getAttribute('options')); 
 | 
                            streamElement.setAttribute('url', media); 
 | 
                        } 
 | 
                    } 
 | 
                });             
 | 
             
 | 
  
 | 
            selectorElement.addEventListener('change', (event) => { 
 | 
                streamElement.setAttribute('url', ''); 
 | 
                streamElement.setAttribute('options', optionsElement.getAttribute('options')); 
 | 
                streamElement.setAttribute('url', event.detail.url); 
 | 
            }); 
 | 
  
 | 
            selectorElement.addEventListener('settings', (event) => { 
 | 
                optionsElement.style.display = event.detail === "on" ? "block" : "none"; 
 | 
            }); 
 | 
  
 | 
            algoElement.addEventListener('change', (event) => { 
 | 
                streamElement.setAttribute('algo', event.detail.algo); 
 | 
            }); 
 | 
  
 | 
            optionsElement.addEventListener('change', (event) => { 
 | 
                streamElement.setAttribute('options', event.detail.options); 
 | 
            }); 
 | 
  
 | 
            streamElement.addEventListener('click', (event) => { 
 | 
                const url = JSON.parse(streamElement.getAttribute('url')) 
 | 
                const options = streamElement.getAttribute('options') 
 | 
                window.open('./webrtc-streamer.html?video='+encodeURIComponent(url.video)+'&audio='+encodeURIComponent(url.audio)+"&options="+encodeURIComponent(options)); 
 | 
            }); 
 | 
             
 | 
        });         
 | 
        </script> 
 | 
</body> 
 | 
</html> 
 |