| /** | |
| * This tool lets you test if the compiled Javascript decoder is functioning properly. You'll | |
| * need to download a SpiderMonkey js-shell to run this script. | |
| * https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/ | |
| * | |
| * Example: | |
| * js-shell inspect-cli.js video.ivf | |
| */ | |
| load("inspect.js"); | |
| var buffer = read(scriptArgs[0], "binary"); | |
| var Module = { | |
| noExitRuntime: true, | |
| noInitialRun: true, | |
| preInit: [], | |
| preRun: [], | |
| postRun: [function () { | |
| printErr(`Loaded Javascript Decoder OK`); | |
| }], | |
| memoryInitializerPrefixURL: "bin/", | |
| arguments: ['input.ivf', 'output.raw'], | |
| on_frame_decoded_json: function (jsonString) { | |
| let json = JSON.parse("[" + Module.UTF8ToString(jsonString) + "null]"); | |
| json.forEach(frame => { | |
| if (frame) { | |
| print(frame.frame); | |
| } | |
| }); | |
| } | |
| }; | |
| DecoderModule(Module); | |
| Module.FS.writeFile("/tmp/input.ivf", buffer, { encoding: "binary" }); | |
| Module._open_file(); | |
| Module._set_layers(0xFFFFFFFF); // Set this to zero if you want to benchmark decoding. | |
| while(true) { | |
| printErr("Decoding Frame ..."); | |
| if (Module._read_frame()) { | |
| break; | |
| } | |
| } |