40 строки
1.1 KiB
JavaScript
40 строки
1.1 KiB
JavaScript
/**
|
|
* 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;
|
|
}
|
|
}
|