1*77c1e3ccSAndroid Build Coastguard Worker/** 2*77c1e3ccSAndroid Build Coastguard Worker * This tool lets you test if the compiled Javascript decoder is functioning properly. You'll 3*77c1e3ccSAndroid Build Coastguard Worker * need to download a SpiderMonkey js-shell to run this script. 4*77c1e3ccSAndroid Build Coastguard Worker * https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/ 5*77c1e3ccSAndroid Build Coastguard Worker * 6*77c1e3ccSAndroid Build Coastguard Worker * Example: 7*77c1e3ccSAndroid Build Coastguard Worker * js-shell inspect-cli.js video.ivf 8*77c1e3ccSAndroid Build Coastguard Worker */ 9*77c1e3ccSAndroid Build Coastguard Workerload("inspect.js"); 10*77c1e3ccSAndroid Build Coastguard Workervar buffer = read(scriptArgs[0], "binary"); 11*77c1e3ccSAndroid Build Coastguard Workervar Module = { 12*77c1e3ccSAndroid Build Coastguard Worker noExitRuntime: true, 13*77c1e3ccSAndroid Build Coastguard Worker noInitialRun: true, 14*77c1e3ccSAndroid Build Coastguard Worker preInit: [], 15*77c1e3ccSAndroid Build Coastguard Worker preRun: [], 16*77c1e3ccSAndroid Build Coastguard Worker postRun: [function () { 17*77c1e3ccSAndroid Build Coastguard Worker printErr(`Loaded Javascript Decoder OK`); 18*77c1e3ccSAndroid Build Coastguard Worker }], 19*77c1e3ccSAndroid Build Coastguard Worker memoryInitializerPrefixURL: "bin/", 20*77c1e3ccSAndroid Build Coastguard Worker arguments: ['input.ivf', 'output.raw'], 21*77c1e3ccSAndroid Build Coastguard Worker on_frame_decoded_json: function (jsonString) { 22*77c1e3ccSAndroid Build Coastguard Worker let json = JSON.parse("[" + Module.UTF8ToString(jsonString) + "null]"); 23*77c1e3ccSAndroid Build Coastguard Worker json.forEach(frame => { 24*77c1e3ccSAndroid Build Coastguard Worker if (frame) { 25*77c1e3ccSAndroid Build Coastguard Worker print(frame.frame); 26*77c1e3ccSAndroid Build Coastguard Worker } 27*77c1e3ccSAndroid Build Coastguard Worker }); 28*77c1e3ccSAndroid Build Coastguard Worker } 29*77c1e3ccSAndroid Build Coastguard Worker}; 30*77c1e3ccSAndroid Build Coastguard WorkerDecoderModule(Module); 31*77c1e3ccSAndroid Build Coastguard WorkerModule.FS.writeFile("/tmp/input.ivf", buffer, { encoding: "binary" }); 32*77c1e3ccSAndroid Build Coastguard WorkerModule._open_file(); 33*77c1e3ccSAndroid Build Coastguard WorkerModule._set_layers(0xFFFFFFFF); // Set this to zero if you want to benchmark decoding. 34*77c1e3ccSAndroid Build Coastguard Workerwhile(true) { 35*77c1e3ccSAndroid Build Coastguard Worker printErr("Decoding Frame ..."); 36*77c1e3ccSAndroid Build Coastguard Worker if (Module._read_frame()) { 37*77c1e3ccSAndroid Build Coastguard Worker break; 38*77c1e3ccSAndroid Build Coastguard Worker } 39*77c1e3ccSAndroid Build Coastguard Worker} 40