ref: 7ff43ca6eef03fffdb38694fb9542c7723c8da27
dir: /test/h264bsd.html/
<!doctype html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>h.264bsd test</title> </head> <body> <input type="file" id="file" name="file" /><br/> <!--This is where we will display decoded frames--> <canvas id="canvas" width="640" height="480" style="border:solid;"></canvas> <script src="../js/h264bsd_asm.js"></script> <script src="../js/h264bsd_decoder.js"></script> <script src="../js/h264bsd_canvas.js"></script> <!--<script src="../js/h264bsd.min.js"></script>--> <script type="text/javascript"> var canvas = document.getElementById('canvas'); // Create the decoder and canvas var d = new H264bsdDecoder(Module); var c = new H264bsdCanvas(canvas); console.log('Created decoder and canvas'); // Render for each picture d.onPictureReady = function () { console.log('Drawing next output picture...'); c.drawNextOutputPicture(d); } // Render for each picture d.onHeadersReady = function () { canvas.width = d.outputPictureWidth(); canvas.height = d.outputPictureHeight(); } // Loop with setTimeout delay to allow UI to update. var loopBody = function() { var retCode = d.decode(); console.log('Decoded data. Return code: ', retCode, ' bytes remaining: ', d.inputBytesRemaining()); switch(retCode) { case H264bsdDecoder.NO_INPUT: console.log('Decoding complete'); d.release(); break; default: setTimeout(loopBody, 0); break; } } // Use the FileReader to get the bytes into the decoder function handleFileSelect(evt) { var f = evt.target.files[0]; // FileList object var reader = new FileReader(); // Closure to capture the file information. reader.onload = function(e) { console.log('Queueing file data...'); var buf = e.target.result; d.queueInput(buf); loopBody(); }; // Read in the image file as a data URL. reader.readAsArrayBuffer(f); } document.getElementById('file').addEventListener('change', handleFileSelect, false); </script> </body> </html>