xref: /aosp_15_r20/external/libaom/tools/inspect-cli.js (revision 77c1e3ccc04c968bd2bc212e87364f250e820521)
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