All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jdiai.scripts.Whammy Maven / Gradle / Ivy

There is a newer version: 1.1.8
Show newest version
package com.jdiai.scripts;

public class Whammy {
    public static final String script =
        "window.jdi = {}\n" +
        "jdi.Whammy=(function(){function toWebM(frames,outputAsArray){var info=checkFrames(frames);var CLUSTER_MAX_DURATION=30000;var EBML=[{\"id\":0x1a45dfa3,\"data\":[{\"data\":1,\"id\":0x4286},{\"data\":1,\"id\":0x42f7},{\"data\":4,\"id\":0x42f2},{\"data\":8,\"id\":0x42f3},{\"data\":\"webm\",\"id\":0x4282},{\"data\":2,\"id\":0x4287},{\"data\":2,\"id\":0x4285}]},{\"id\":0x18538067,\"data\":[{\"id\":0x1549a966,\"data\":[{\"data\":1e6,\"id\":0x2ad7b1},{\"data\":\"whammy\",\"id\":0x4d80},{\"data\":\"whammy\",\"id\":0x5741},{\"data\":doubleToString(info.duration),\"id\":0x4489}]},{\"id\":0x1654ae6b,\"data\":[{\"id\":0xae,\"data\":[{\"data\":1,\"id\":0xd7},{\"data\":1,\"id\":0x73c5},{\"data\":0,\"id\":0x9c},{\"data\":\"und\",\"id\":0x22b59c},{\"data\":\"V_VP8\",\"id\":0x86},{\"data\":\"VP8\",\"id\":0x258688},{\"data\":1,\"id\":0x83},{\"id\":0xe0,\"data\":[{\"data\":info.width,\"id\":0xb0},{\"data\":info.height,\"id\":0xba}]}]}]},{\"id\":0x1c53bb6b,\"data\":[]}]}];var segment=EBML[1];var cues=segment.data[2];var frameNumber=0;var clusterTimecode=0;while(frameNumber=3){cues.data[i-3].data[1].data[1].data=position;}\n" +
        "var data=generateEBML([segment.data[i]],outputAsArray);position+=data.size||data.byteLength||data.length;if(i!=2){segment.data[i]=data;}}\n" +
        "return generateEBML(EBML,outputAsArray)}\n" +
        "function checkFrames(frames){var width=frames[0].width,height=frames[0].height,duration=frames[0].duration;for(var i=1;i0x7fff)throw\"Frame \"+(i+1)+\" has a weird duration (must be between 0 and 32767)\";duration+=frames[i].duration;}\n" +
        "return{duration:duration,width:width,height:height};}\n" +
        "function numToBuffer(num){var parts=[];while(num>0){parts.push(num&0xff)\n" +
        "num=num>>8}\n" +
        "return new Uint8Array(parts.reverse());}\n" +
        "function numToFixedBuffer(num,size){var parts=new Uint8Array(size);for(var i=size-1;i>=0;i--){parts[i]=num&0xff;num=num>>8;}\n" +
        "return parts;}\n" +
        "function strToBuffer(str){var arr=new Uint8Array(str.length);for(var i=0;i127){throw\"TrackNumber > 127 not supported\";}\n" +
        "var out=[data.trackNum|0x80,data.timecode>>8,data.timecode&0xff,flags].map(function(e){return String.fromCharCode(e)}).join('')+data.frame;return out;}\n" +
        "function parseWebP(riff){var VP8=riff.RIFF[0].WEBP[0];var frame_start=VP8.indexOf('\\x9d\\x01\\x2a');for(var i=0,c=[];i<4;i++)c[i]=VP8.charCodeAt(frame_start+3+i);var width,horizontal_scale,height,vertical_scale,tmp;tmp=(c[1]<<8)|c[0];width=tmp&0x3FFF;horizontal_scale=tmp>>14;tmp=(c[3]<<8)|c[2];height=tmp&0x3FFF;vertical_scale=tmp>>14;return{width:width,height:height,data:VP8,riff:riff}}\n" +
        "function parseRIFF(string){var offset=0;var chunks={};while(offset { jdi.frames.push(canvas.toDataURL('image/webp')); })};\n" +
        "jdi.record = function() { setTimeout(() => { jdi.addFrame(); if (jdi.recording) { jdi.record(); } }, 1)};\n" +
        "jdi.compile = function() { \n" +
        "let reader = new FileReader();\n" +
        "reader.onloadend = () => jdi.videoBase64 = reader.result;\n" +
        "reader.readAsDataURL(jdi.Whammy.fromImageArray(jdi.frames,100));\n" +
        "}\n" +
        "jdi.record();";
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy