diff --git a/filternames_wasm.txt b/filternames_wasm.txt new file mode 100644 index 0000000..79ab073 --- /dev/null +++ b/filternames_wasm.txt @@ -0,0 +1,464 @@ +... abench A->A Benchmark part of a filtergraph. +..C acompressor A->A Audio compressor. +... acontrast A->A Simple audio dynamic range compression/expansion filter. +... acopy A->A Copy the input audio unchanged to the output. +... acue A->A Delay filtering to match a cue. +... acrossfade AA->A Cross fade two input audio streams. +.S. acrossover A->N Split audio into per-bands streams. +T.C acrusher A->A Reduce audio bit resolution. +TS. adeclick A->A Remove impulsive noise from input audio. +TS. adeclip A->A Remove clipping from input audio. +TS. adecorrelate A->A Apply decorrelation to input audio. +T.C adelay A->A Delay one or more audio channels. +TSC adenorm A->A Remedy denormals by adding extremely low-level noise. +T.. aderivative A->A Compute derivative of input audio. +TSC adynamicequalizer A->A Apply Dynamic Equalization of input audio. +T.C adynamicsmooth A->A Apply Dynamic Smoothing of input audio. +... aecho A->A Add echoing to the audio. +TSC aemphasis A->A Audio emphasis. +T.. aeval A->A Filter audio signal according to a specified expression. +T.C aexciter A->A Enhance high frequency part of audio. +T.C afade A->A Fade in/out input audio. +TSC afftdn A->A Denoise audio samples using FFT. +TS. afftfilt A->A Apply arbitrary expressions to samples in frequency domain. +.SC afir N->N Apply Finite Impulse Response filter with supplied coefficients in additional stream(s). +... aformat A->A Convert the input audio to one of the specified formats. +TSC afreqshift A->A Apply frequency shifting to input audio. +TSC afwtdn A->A Denoise audio stream using Wavelets. +T.C agate A->A Audio gate. +.S. aiir A->N Apply Infinite Impulse Response filter with supplied coefficients. +T.. aintegral A->A Compute integral of input audio. +... ainterleave N->A Temporally interleave audio inputs. +T.. alatency A->A Report audio filtering latency. +T.C alimiter A->A Audio lookahead limiter. +TSC allpass A->A Apply a two-pole all-pass filter. +... aloop A->A Loop audio samples. +... amerge N->A Merge two or more audio streams into a single multi-channel stream. +T.. ametadata A->A Manipulate audio frame metadata. +..C amix N->A Audio mixing. +... amultiply AA->A Multiply two audio streams. +TSC anequalizer A->N Apply high-order audio parametric multi band equalizer. +TSC anlmdn A->A Reduce broadband noise from stream using Non-Local Means. +TSC anlmf AA->A Apply Normalized Least-Mean-Fourth algorithm to first audio stream. +TSC anlms AA->A Apply Normalized Least-Mean-Squares algorithm to first audio stream. +... anull A->A Pass the source unchanged to the output. +T.. apad A->A Pad audio with silence. +T.C aperms A->A Set permissions for the output audio frame. +... aphaser A->A Add a phasing effect to the audio. +TSC aphaseshift A->A Apply phase shifting to input audio. +TSC apsyclip A->A Audio Psychoacoustic Clipper. +... apulsator A->A Audio pulsator. +..C arealtime A->A Slow down filtering to match realtime. +... aresample A->A Resample audio data. +... areverse A->A Reverse an audio clip. +TSC arnndn A->A Reduce noise from speech using Recurrent Neural Networks. +... asdr AA->A Measure Audio Signal-to-Distortion Ratio. +... asegment A->N Segment audio stream. +... aselect A->N Select audio frames to pass in output. +... asendcmd A->A Send commands to filters. +... asetnsamples A->A Set the number of samples for each output audio frames. +... asetpts A->A Set PTS for the output audio frame. +... asetrate A->A Change the sample rate without altering the data. +... asettb A->A Set timebase for the audio output link. +... ashowinfo A->A Show textual information for each audio frame. +T.. asidedata A->A Manipulate audio frame side data. +TSC asoftclip A->A Audio Soft Clipper. +.S. aspectralstats A->A Show frequency domain statistics about audio frames. +... asplit A->N Pass on the audio input to N audio outputs. +.S. astats A->A Show time domain statistics about audio frames. +..C astreamselect N->N Select audio streams +TSC asubboost A->A Boost subwoofer frequencies. +TSC asubcut A->A Cut subwoofer frequencies. +TSC asupercut A->A Cut super frequencies. +TSC asuperpass A->A Apply high order Butterworth band-pass filter. +TSC asuperstop A->A Apply high order Butterworth band-stop filter. +..C atempo A->A Adjust audio tempo. +TSC atilt A->A Apply spectral tilt to audio. +... atrim A->A Pick one continuous section from the input, drop the rest. +... axcorrelate AA->A Cross-correlate two audio streams. +TSC bandpass A->A Apply a two-pole Butterworth band-pass filter. +TSC bandreject A->A Apply a two-pole Butterworth band-reject filter. +TSC bass A->A Boost or cut lower frequencies. +TSC biquad A->A Apply a biquad IIR filter with the given coefficients. +... channelmap A->A Remap audio channels. +... channelsplit A->N Split audio into per-channel streams. +... chorus A->A Add a chorus effect to the audio. +... compand A->A Compress or expand audio dynamic range. +T.C compensationdelay A->A Audio Compensation Delay Line. +T.C crossfeed A->A Apply headphone crossfeed filter. +TSC crystalizer A->A Simple audio noise sharpening filter. +T.. dcshift A->A Apply a DC shift to the audio. +T.. deesser A->A Apply de-essing to the audio. +T.C dialoguenhance A->A Audio Dialogue Enhancement. +... drmeter A->A Measure audio dynamic range. +T.C dynaudnorm A->A Dynamic Audio Normalizer. +... earwax A->A Widen the stereo image. +... ebur128 A->N EBU R128 scanner. +TSC equalizer A->A Apply two-pole peaking equalization (EQ) filter. +T.C extrastereo A->A Increase difference between stereo audio channels. +..C firequalizer A->A Finite Impulse Response Equalizer. +... flanger A->A Apply a flanging effect to the audio. +... haas A->A Apply Haas Stereo Enhancer. +... hdcd A->A Apply High Definition Compatible Digital (HDCD) decoding. +.S. headphone N->A Apply headphone binaural spatialization with HRTFs in additional streams. +TSC highpass A->A Apply a high-pass filter with 3dB point frequency. +TSC highshelf A->A Apply a high shelf filter. +... join N->A Join multiple audio streams into multi-channel output. +... loudnorm A->A EBU R128 loudness normalization +TSC lowpass A->A Apply a low-pass filter with 3dB point frequency. +TSC lowshelf A->A Apply a low shelf filter. +... mcompand A->A Multiband Compress or expand audio dynamic range. +... pan A->A Remix channels with coefficients (panning). +... replaygain A->A ReplayGain scanner. +..C sidechaincompress AA->A Sidechain compressor. +T.C sidechaingate AA->A Audio sidechain gate. +... silencedetect A->A Detect silence. +... silenceremove A->A Remove silence. +T.C speechnorm A->A Speech Normalizer. +T.C stereotools A->A Apply various stereo tools. +T.C stereowiden A->A Apply stereo widening effect. +... superequalizer A->A Apply 18 band equalization filter. +.S. surround A->A Apply audio surround upmix filter. +TSC tiltshelf A->A Apply a tilt shelf filter. +TSC treble A->A Boost or cut upper frequencies. +T.. tremolo A->A Apply tremolo effect. +T.. vibrato A->A Apply vibrato effect. +T.C virtualbass A->A Audio Virtual Bass. +T.C volume A->A Change input volume. +... volumedetect A->A Detect audio volume. +... aevalsrc |->A Generate an audio signal generated by an expression. +... afirsrc |->A Generate a FIR coefficients audio stream. +... anoisesrc |->A Generate a noise audio signal. +... anullsrc |->A Null audio source, return empty audio frames. +... hilbert |->A Generate a Hilbert transform FIR coefficients. +... sinc |->A Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients. +... sine |->A Generate sine wave audio signal. +... anullsink A->| Do absolutely nothing with the input audio. +... addroi V->V Add region of interest to frame. +... alphaextract V->V Extract an alpha channel as a grayscale image component. +T.. alphamerge VV->V Copy the luma value of the second input into the alpha channel of the first input. +TSC amplify V->V Amplify changes between successive video frames. +... ass V->V Render ASS subtitles onto input video using the libass library. +TSC atadenoise V->V Apply an Adaptive Temporal Averaging Denoiser. +T.C avgblur V->V Apply Average Blur filter. +T.C bbox V->V Compute bounding box for each frame. +... bench V->V Benchmark part of a filtergraph. +TSC bilateral V->V Apply Bilateral filter. +T.. bitplanenoise V->V Measure bit plane noise. +.S. blackdetect V->V Detect video intervals that are (almost) black. +... blackframe V->V Detect frames that are (almost) black. +TSC blend VV->V Blend two video frames into each other. +... blockdetect V->V Blockdetect filter. +... blurdetect V->V Blurdetect filter. +TS. bm3d N->V Block-Matching 3D denoiser. +T.. boxblur V->V Blur the input. +TS. bwdif V->V Deinterlace the input image. +TSC cas V->V Contrast Adaptive Sharpen. +TSC chromahold V->V Turns a certain color range into gray. +TSC chromakey V->V Turns a certain color into transparency. Operates on YUV colors. +TSC chromanr V->V Reduce chrominance noise. +TSC chromashift V->V Shift chroma. +... ciescope V->V Video CIE scope. +T.. codecview V->V Visualize information about some codecs. +TSC colorbalance V->V Adjust the color balance. +TSC colorchannelmixer V->V Adjust colors by mixing color channels. +TSC colorcontrast V->V Adjust color contrast between RGB components. +TSC colorcorrect V->V Adjust color white balance selectively for blacks and whites. +TSC colorize V->V Overlay a solid color on the video stream. +TSC colorkey V->V Turns a certain color into transparency. Operates on RGB colors. +TSC colorhold V->V Turns a certain color range into gray. Operates on RGB colors. +TSC colorlevels V->V Adjust the color levels. +TSC colormap VVV->V Apply custom Color Maps to video stream. +TS. colormatrix V->V Convert color matrix. +TS. colorspace V->V Convert between colorspaces. +TSC colortemperature V->V Adjust color temperature of video. +TSC convolution V->V Apply convolution filter. +TS. convolve VV->V Convolve first video stream with second video stream. +... copy V->V Copy the input video unchanged to the output. +... cover_rect V->V Find and cover a user specified object. +..C crop V->V Crop the input video. +T.. cropdetect V->V Auto-detect crop size. +... cue V->V Delay filtering to match a cue. +TSC curves V->V Adjust components curves. +.SC datascope V->V Video data analysis. +T.C dblur V->V Apply Directional Blur filter. +TS. dctdnoiz V->V Denoise frames using 2D DCT. +TSC deband V->V Debands video. +T.C deblock V->V Deblock video. +... decimate N->V Decimate frames (post field matching filter). +TS. deconvolve VV->V Deconvolve first video stream with second video stream. +TS. dedot V->V Reduce cross-luminance and cross-color. +TSC deflate V->V Apply deflate effect. +... deflicker V->V Remove temporal frame luminance variations. +... dejudder V->V Remove judder produced by pullup. +T.. delogo V->V Remove logo from input video. +T.. derain V->V Apply derain filter to the input. +... deshake V->V Stabilize shaky video. +TSC despill V->V Despill video. +... detelecine V->V Apply an inverse telecine pattern. +TSC dilation V->V Apply dilation effect. +T.. displace VVV->V Displace pixels. +... dnn_classify V->V Apply DNN classify filter to the input. +... dnn_detect V->V Apply DNN detect filter to the input. +... dnn_processing V->V Apply DNN processing filter to the input. +.S. doubleweave V->V Weave input video fields into double number of frames. +T.C drawbox V->V Draw a colored box on the input video. +... drawgraph V->V Draw a graph using input video metadata. +T.C drawgrid V->V Draw a colored grid on the input video. +T.C drawtext V->V Draw text on top of video frames using libfreetype library. +T.. edgedetect V->V Detect and draw edge. +... elbg V->V Apply posterize effect, using the ELBG algorithm. +T.. entropy V->V Measure video frames entropy. +.S. epx V->V Scale the input using EPX algorithm. +T.C eq V->V Adjust brightness, contrast, gamma, and saturation. +TSC erosion V->V Apply erosion effect. +TSC estdif V->V Apply Edge Slope Tracing deinterlace. +TSC exposure V->V Adjust exposure of the video stream. +... extractplanes V->N Extract planes as grayscale frames. +TS. fade V->V Fade in/out input video. +..C feedback VV->VV Apply feedback video filter. +TSC fftdnoiz V->V Denoise frames using 3D FFT. +TS. fftfilt V->V Apply arbitrary expressions to pixels in frequency domain. +... field V->V Extract a field from the input video. +... fieldhint V->V Field matching using hints. +... fieldmatch N->V Field matching for inverse telecine. +T.. fieldorder V->V Set the field order. +T.C fillborders V->V Fill borders of the input video. +... find_rect V->V Find a user specified object. +T.. floodfill V->V Fill area with same color with another color. +... format V->V Convert the input video to one of the specified pixel formats. +... fps V->V Force constant framerate. +... framepack VV->V Generate a frame packed stereoscopic video. +.S. framerate V->V Upsamples or downsamples progressive source between specified frame rates. +T.. framestep V->V Select one frame every N frames. +... freezedetect V->V Detects frozen video input. +... freezeframes VV->V Freeze video frames. +T.. fspp V->V Apply Fast Simple Post-processing filter. +TSC gblur V->V Apply Gaussian Blur filter. +TS. geq V->V Apply generic equation to each pixel. +T.. gradfun V->V Debands video quickly using gradients. +... graphmonitor V->V Show various filtergraph stats. +TS. grayworld V->V Adjust white balance using LAB gray world algorithm +TS. greyedge V->V Estimates scene illumination by grey edge assumption. +TSC guided N->V Apply Guided filter. +TSC haldclut VV->V Adjust colors using a Hald CLUT. +TS. hflip V->V Horizontally flip the input video. +T.. histeq V->V Apply global color histogram equalization. +... histogram V->V Compute and draw a histogram. +TSC hqdn3d V->V Apply a High Quality 3D Denoiser. +.S. hqx V->V Scale the input by 2, 3 or 4 using the hq*x magnification algorithm. +.S. hstack N->V Stack video inputs horizontally. +TSC hsvhold V->V Turns a certain HSV range into gray. +TSC hsvkey V->V Turns a certain HSV range into transparency. Operates on YUV colors. +T.C hue V->V Adjust the hue and saturation of the input video. +TSC huesaturation V->V Apply hue-saturation-intensity adjustments. +... hwdownload V->V Download a hardware frame to a normal frame +... hwmap V->V Map hardware frames +... hwupload V->V Upload a normal frame to a hardware frame +T.. hysteresis VV->V Grow first stream into second stream by connecting components. +TS. identity VV->V Calculate the Identity between two video streams. +... idet V->V Interlace detect Filter. +T.C il V->V Deinterleave or interleave fields. +TSC inflate V->V Apply inflate effect. +... interlace V->V Convert progressive video into interlaced. +... interleave N->V Temporally interleave video inputs. +... kerndeint V->V Apply kernel deinterlacing to the input. +TSC kirsch V->V Apply kirsch operator. +TSC lagfun V->V Slowly update darker pixels. +T.. latency V->V Report video filtering latency. +TSC lenscorrection V->V Rectify the image by correcting for lens distortion. +TSC limitdiff N->V Apply filtering with limiting difference. +TSC limiter V->V Limit pixels components to the specified range. +... loop V->V Loop video frames. +TSC lumakey V->V Turns a certain luma into transparency. +TSC lut V->V Compute and apply a lookup table to the RGB/YUV input video. +TSC lut1d V->V Adjust colors using a 1D LUT. +TSC lut2 VV->V Compute and apply a lookup table from two video inputs. +TSC lut3d V->V Adjust colors using a 3D LUT. +TSC lutrgb V->V Compute and apply a lookup table to the RGB input video. +TSC lutyuv V->V Compute and apply a lookup table to the YUV input video. +TSC maskedclamp VVV->V Clamp first stream with second stream and third stream. +TSC maskedmax VVV->V Apply filtering with maximum difference of two streams. +TSC maskedmerge VVV->V Merge first stream with second stream using third stream as mask. +TSC maskedmin VVV->V Apply filtering with minimum difference of two streams. +TSC maskedthreshold VV->V Pick pixels comparing absolute difference of two streams with threshold. +TSC maskfun V->V Create Mask. +TSC median V->V Apply Median filter. +... mergeplanes N->V Merge planes. +... mestimate V->V Generate motion vectors. +T.. metadata V->V Manipulate video frame metadata. +T.. midequalizer VV->V Apply Midway Equalization. +... minterpolate V->V Frame rate conversion using Motion Interpolation. +TSC mix N->V Mix video inputs. +TSC monochrome V->V Convert video to gray using custom color filter. +T.C morpho VV->V Apply Morphological filter. +... mpdecimate V->V Remove near-duplicate frames. +TS. msad VV->V Calculate the MSAD between two video streams. +TSC multiply VV->V Multiply first video stream with second video stream. +TSC negate V->V Negate input video. +TS. nlmeans V->V Non-local means denoiser. +TSC nnedi V->V Apply neural network edge directed interpolation intra-only deinterlacer. +... noformat V->V Force libavfilter not to use any of the specified pixel formats for the input to the next filter. +TS. noise V->V Add noise. +T.C normalize V->V Normalize RGB video. +... null V->V Pass the source unchanged to the output. +T.C oscilloscope V->V 2D Video Oscilloscope. +TSC overlay VV->V Overlay a video source on top of the input. +T.. owdenoise V->V Denoise using wavelets. +... pad V->V Pad the input video. +... palettegen V->V Find the optimal palette for a given stream. +... paletteuse VV->V Use a palette to downsample an input video stream. +T.C perms V->V Set permissions for the output video frame. +TS. perspective V->V Correct the perspective of video. +T.C phase V->V Phase shift fields. +... photosensitivity V->V Filter out photosensitive epilepsy seizure-inducing flashes. +... pixdesctest V->V Test pixel format definitions. +TSC pixelize V->V Pixelize video. +T.C pixscope V->V Pixel data analysis. +T.C pp V->V Filter video using libpostproc. +T.. pp7 V->V Apply Postprocessing 7 filter. +TS. premultiply N->V PreMultiply first stream with first plane of second stream. +TSC prewitt V->V Apply prewitt operator. +TSC pseudocolor V->V Make pseudocolored video frames. +TS. psnr VV->V Calculate the PSNR between two video streams. +... pullup V->V Pullup from field sequence to frames. +T.. qp V->V Change video quantization parameters. +... random V->V Return random frames. +TSC readeia608 V->V Read EIA-608 Closed Caption codes from input video and write them to frame metadata. +... readvitc V->V Read vertical interval timecode and write it to frame metadata. +..C realtime V->V Slow down filtering to match realtime. +.S. remap VVV->V Remap pixels. +TS. removegrain V->V Remove grain. +T.. removelogo V->V Remove a TV logo based on a mask image. +... repeatfields V->V Hard repeat fields based on MPEG repeat field flag. +... reverse V->V Reverse a clip. +TSC rgbashift V->V Shift RGBA. +TSC roberts V->V Apply roberts cross operator. +TSC rotate V->V Rotate the input image. +T.. sab V->V Apply shape adaptive blur. +..C scale V->V Scale the input video size and/or convert the image format. +..C scale2ref VV->VV Scale the input video size and/or convert the image format to the given reference. +... scdet V->V Detect video scene change +TSC scharr V->V Apply scharr operator. +TSC scroll V->V Scroll input video. +... segment V->N Segment video stream. +... select V->N Select video frames to pass in output. +TS. selectivecolor V->V Apply CMYK adjustments to specific color ranges. +... sendcmd V->V Send commands to filters. +... separatefields V->V Split input video frames into fields. +... setdar V->V Set the frame display aspect ratio. +... setfield V->V Force field for the output video frame. +... setparams V->V Force field, or color property for the output video frame. +... setpts V->V Set PTS for the output video frame. +... setrange V->V Force color range for the output video frame. +... setsar V->V Set the pixel sample aspect ratio. +... settb V->V Set timebase for the video output link. +TSC shear V->V Shear transform the input image. +... showinfo V->V Show textual information for each video frame. +... showpalette V->V Display frame palette. +T.. shuffleframes V->V Shuffle video frames. +TS. shufflepixels V->V Shuffle video pixels. +T.. shuffleplanes V->V Shuffle video planes. +T.. sidedata V->V Manipulate video frame side data. +.S. signalstats V->V Generate statistics from video analysis. +... signature N->V Calculate the MPEG-7 video signature +... siti V->V Calculate spatial information (SI) and temporal information (TI). +T.. smartblur V->V Blur the input video without impacting the outlines. +TSC sobel V->V Apply sobel operator. +... split V->N Pass on the input to N video outputs. +T.C spp V->V Apply a simple post processing filter. +... sr V->V Apply DNN-based image super resolution to the input. +TS. ssim VV->V Calculate the SSIM between two video streams. +.S. stereo3d V->V Convert video stereoscopic 3D view. +..C streamselect N->N Select video streams +... subtitles V->V Render text subtitles onto input video using the libass library. +.S. super2xsai V->V Scale the input by 2x using the Super2xSaI pixel art algorithm. +T.C swaprect V->V Swap 2 rectangular objects in video. +T.. swapuv V->V Swap U and V components. +TSC tblend V->V Blend successive frames. +... telecine V->V Apply a telecine pattern. +... thistogram V->V Compute and draw a temporal histogram. +TSC threshold VVVV->V Threshold first video stream using other video streams. +T.. thumbnail V->V Select the most representative frame in a given sequence of consecutive frames. +... tile V->V Tile several successive frames together. +... tinterlace V->V Perform temporal field interlacing. +TSC tlut2 V->V Compute and apply a lookup table from two successive frames. +TSC tmedian V->V Pick median pixels from successive frames. +T.. tmidequalizer V->V Apply Temporal Midway Equalization. +TSC tmix V->V Mix successive video frames. +.S. tonemap V->V Conversion to/from different dynamic ranges. +... tpad V->V Temporarily pad video frames. +.S. transpose V->V Transpose input video. +... trim V->V Pick one continuous section from the input, drop the rest. +TS. unpremultiply N->V UnPreMultiply first stream with first plane of second stream. +TS. unsharp V->V Sharpen or blur the input video. +... untile V->V Untile a frame into a sequence of frames. +.SC v360 V->V Convert 360 projection of video. +T.. vaguedenoiser V->V Apply a Wavelet based Denoiser. +TSC varblur VV->V Apply Variable Blur filter. +..C vectorscope V->V Video vectorscope. +T.. vflip V->V Flip the input video vertically. +... vfrdet V->V Variable frame rate detect filter. +TSC vibrance V->V Boost or alter saturation. +TS. vif VV->V Calculate the VIF between two video streams. +T.. vignette V->V Make or reverse a vignette effect. +... vmafmotion V->V Calculate the VMAF Motion score. +.S. vstack N->V Stack video inputs vertically. +TSC w3fdif V->V Apply Martin Weston three field deinterlace. +.SC waveform V->V Video waveform monitor. +.S. weave V->V Weave input video fields into frames. +.S. xbr V->V Scale the input using xBR algorithm. +TS. xcorrelate VV->V Cross-correlate first video stream with second video stream. +.S. xfade VV->V Cross fade one video with another video. +TSC xmedian N->V Pick median pixels from several video inputs. +.S. xstack N->V Stack video inputs into custom layout. +TS. yadif V->V Deinterlace the input image. +TSC yaepblur V->V Yet another edge preserving blur filter. +... zoompan V->V Apply Zoom & Pan effect. +... allrgb |->V Generate all RGB colors. +... allyuv |->V Generate all yuv colors. +... cellauto |->V Create pattern generated by an elementary cellular automaton. +..C color |->V Provide an uniformly colored input. +... colorchart |->V Generate color checker chart. +... colorspectrum |->V Generate colors spectrum. +.S. gradients |->V Draw a gradients. +... haldclutsrc |->V Provide an identity Hald CLUT. +... life |->V Create life. +... mandelbrot |->V Render a Mandelbrot fractal. +... mptestsrc |->V Generate various test pattern. +... nullsrc |->V Null video source, return unprocessed video frames. +... pal75bars |->V Generate PAL 75% color bars. +... pal100bars |->V Generate PAL 100% color bars. +... rgbtestsrc |->V Generate RGB test pattern. +.S. sierpinski |->V Render a Sierpinski fractal. +... smptebars |->V Generate SMPTE color bars. +... smptehdbars |->V Generate SMPTE HD color bars. +... testsrc |->V Generate test pattern. +... testsrc2 |->V Generate another test pattern. +... yuvtestsrc |->V Generate YUV test pattern. +... nullsink V->| Do absolutely nothing with the input video. +... abitscope A->V Convert input audio to audio bit scope video output. +... adrawgraph A->V Draw a graph using input audio metadata. +... agraphmonitor A->V Show various filtergraph stats. +... ahistogram A->V Convert input audio to histogram video output. +... aphasemeter A->N Convert input audio to phase meter video output. +.SC avectorscope A->V Convert input audio to vectorscope video output. +..C concat N->N Concatenate audio and video streams. +... showcqt A->V Convert input audio to a CQT (Constant/Clamped Q Transform) spectrum video output. +... showfreqs A->V Convert input audio to a frequencies video output. +.S. showspatial A->V Convert input audio to a spatial video output. +.S. showspectrum A->V Convert input audio to a spectrum video output. +.S. showspectrumpic A->V Convert input audio to a spectrum video output single picture. +... showvolume A->V Convert input audio volume to video output. +... showwaves A->V Convert input audio to a video output. +... showwavespic A->V Convert input audio to a video output single picture. +... spectrumsynth VV->A Convert input spectrum videos to audio output. +... avsynctest |->AV Generate an Audio Video Sync Test. +..C amovie |->N Read audio from a movie source. +..C movie |->N Read from a movie source. +... afifo A->A Buffer input frames and send them when they are requested. +... fifo V->V Buffer input images and send them when they are requested. +... abuffer |->A Buffer audio frames, and make them accessible to the filterchain. +... buffer |->V Buffer video frames, and make them accessible to the filterchain. +... abuffersink A->| Buffer audio frames, and make them available to the end of the filter graph. +... buffersink V->| Buffer video frames, and make them available to the end of the filter graph. diff --git a/index.html b/index.html index feaf27c..7b06895 100644 --- a/index.html +++ b/index.html @@ -2,9 +2,8 @@ - - Vite + Svelte + FFmpeg Explorer!
diff --git a/package-lock.json b/package-lock.json index 5ca0381..949545c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,8 @@ "name": "ffmpeg-builder", "version": "0.0.0", "dependencies": { + "@ffmpeg/ffmpeg": "^0.12.4", + "@ffmpeg/util": "^0.12.0", "@leeoniya/ufuzzy": "^1.0.8" }, "devDependencies": { @@ -381,6 +383,33 @@ "node": ">=12" } }, + "node_modules/@ffmpeg/ffmpeg": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@ffmpeg/ffmpeg/-/ffmpeg-0.12.4.tgz", + "integrity": "sha512-YwdnZFxtKncEbg2ybJOZ8di7kxtVo6DP3FkWWn5E0MiXHXxCjgiIJNq5I+/04+OGC1nMvF3hdvGuRFxuogh/mQ==", + "dependencies": { + "@ffmpeg/types": "^0.12.0" + }, + "engines": { + "node": ">=18.17.0" + } + }, + "node_modules/@ffmpeg/types": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@ffmpeg/types/-/types-0.12.0.tgz", + "integrity": "sha512-AuR4K+L6v1/9hVOsikU4rGGT5nKulQa8HrtYhpgBEq0HojoWB1c9bq3TTkNBpEvS/gC17WDMVJrqIGgXOj1DXA==", + "engines": { + "node": ">=16.6.0" + } + }, + "node_modules/@ffmpeg/util": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@ffmpeg/util/-/util-0.12.0.tgz", + "integrity": "sha512-8sHCW8H/ngqVhbRvCCX4e4uDNgZVoz8uNRry1zphIyzdX6flfBa2TmVwJ4g9/Qw//eAubEnuHaSxDGWWxcOTjg==", + "engines": { + "node": ">=18.17.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", diff --git a/package.json b/package.json index e9ae314..42729c2 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,8 @@ "vite": "^4.4.5" }, "dependencies": { + "@ffmpeg/ffmpeg": "^0.12.4", + "@ffmpeg/util": "^0.12.0", "@leeoniya/ufuzzy": "^1.0.8" } } diff --git a/parse_filters.py b/parse_filters.py index 640c8b3..e7f54ea 100644 --- a/parse_filters.py +++ b/parse_filters.py @@ -6,7 +6,7 @@ from subprocess import run def get_names(): filters = [] - with open("./filternames.txt", "r") as infile: + with open("./filternames_wasm.txt", "r") as infile: input = infile.readlines() input = [l.strip() for l in input] diff --git a/public/ffmpeg-core.js b/public/ffmpeg-core.js new file mode 100644 index 0000000..c8d4dee --- /dev/null +++ b/public/ffmpeg-core.js @@ -0,0 +1,16 @@ + +var createFFmpegCore = (() => { + var _scriptDir = import.meta.url; + + return ( +async function(createFFmpegCore = {}) { + +var Module=typeof createFFmpegCore!="undefined"?createFFmpegCore:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});const NULL=0;const SIZE_I32=Uint32Array.BYTES_PER_ELEMENT;const DEFAULT_ARGS=["./ffmpeg","-nostdin","-y"];Module["NULL"]=NULL;Module["SIZE_I32"]=SIZE_I32;Module["DEFAULT_ARGS"]=DEFAULT_ARGS;Module["ret"]=-1;Module["timeout"]=-1;Module["logger"]=()=>{};Module["progress"]=()=>{};function stringToPtr(str){const len=Module["lengthBytesUTF8"](str)+1;const ptr=Module["_malloc"](len);Module["stringToUTF8"](str,ptr,len);return ptr}function stringsToPtr(strs){const len=strs.length;const ptr=Module["_malloc"](len*SIZE_I32);for(let i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var ENVIRONMENT_IS_PTHREAD=Module["ENVIRONMENT_IS_PTHREAD"]||false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){const{createRequire:createRequire}=await import("module");var require=createRequire(import.meta.url);var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=require("url").fileURLToPath(new URL("./",import.meta.url))}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]";let nodeWorkerThreads;try{nodeWorkerThreads=require("worker_threads")}catch(e){console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}if(!ENVIRONMENT_IS_NODE){read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance=="undefined"){global.performance=require("perf_hooks").performance}}var defaultPrint=console.log.bind(console);var defaultPrintErr=console.error.bind(console);if(ENVIRONMENT_IS_NODE){defaultPrint=(...args)=>fs.writeSync(1,args.join(" ")+"\n");defaultPrintErr=(...args)=>fs.writeSync(2,args.join(" ")+"\n")}var out=Module["print"]||defaultPrint;var err=Module["printErr"]||defaultPrintErr;Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||1073741824;assert(INITIAL_MEMORY>=65536,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE="+65536+")");if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module["wasmMemory"]}else{if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536,"shared":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag");if(ENVIRONMENT_IS_NODE){err("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)")}throw Error("bad memory")}}}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(ENVIRONMENT_IS_PTHREAD)return;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();SOCKFS.root=FS.mount(SOCKFS,{},null);callRuntimeCallbacks(__ATINIT__)}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;if(Module["locateFile"]){wasmBinaryFile="ffmpeg-core.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}}else{wasmBinaryFile=new URL("ffmpeg-core.wasm",import.meta.url).href}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(()=>getBinary(binaryFile))}else{if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}}return Promise.resolve().then(()=>getBinary(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>{return WebAssembly.instantiate(binary,imports)}).then(instance=>{return instance}).then(receiver,reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;registerTLSInit(Module["asm"]["Ma"]);wasmTable=Module["asm"]["Ha"];addOnInit(Module["asm"]["Fa"]);wasmModule=module;removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"],result["module"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var ASM_CONSTS={6030544:$0=>{Module.ret=$0}};function send_progress(progress,time){Module.receiveProgress(progress,time)}function is_timeout(diff){if(Module.timeout===-1)return 0;else{return Module.timeout<=diff}}function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}function terminateWorker(worker){worker.terminate();worker.onmessage=e=>{}}function killThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];delete PThread.pthreads[pthread_ptr];terminateWorker(worker);__emscripten_thread_free_data(pthread_ptr);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0}function cancelThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];worker.postMessage({"cmd":"cancel"})}function cleanupThread(pthread_ptr){var worker=PThread.pthreads[pthread_ptr];assert(worker);PThread.returnWorkerToPool(worker)}function zeroMemory(address,size){HEAPU8.fill(0,address,address+size);return address}function spawnThread(threadParams){var worker=PThread.getNewWorker();if(!worker){return 6}PThread.runningWorkers.push(worker);PThread.pthreads[threadParams.pthread_ptr]=worker;worker.pthread_ptr=threadParams.pthread_ptr;var msg={"cmd":"run","start_routine":threadParams.startRoutine,"arg":threadParams.arg,"pthread_ptr":threadParams.pthread_ptr};if(ENVIRONMENT_IS_NODE){worker.unref()}worker.postMessage(msg,threadParams.transferList);return 0}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>{return PATH.normalize(l+"/"+r)}};function initRandomFill(){if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>(view.set(crypto.getRandomValues(new Uint8Array(view.byteLength))),view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")}function randomFill(view){return(randomFill=initRandomFill())(view)}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.buffer instanceof SharedArrayBuffer?heapOrArray.slice(idx,endPtr):heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function alignMemory(size,alignment){return Math.ceil(size/alignment)*alignment}function mmapAlloc(size){size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;return zeroMemory(ptr,size)}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)}var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{if(onerror)onerror();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,byteArray=>processData(byteArray),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>{return node===node.parent},isMountpoint:node=>{return!!node.mounted},isFile:mode=>{return(mode&61440)===32768},isDir:mode=>{return(mode&61440)===16384},isLink:mode=>{return(mode&61440)===40960},isChrdev:mode=>{return(mode&61440)===8192},isBlkdev:mode=>{return(mode&61440)===24576},isFIFO:mode=>{return(mode&61440)===4096},isSocket:mode=>{return(mode&49152)===49152},flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}},flags:{get:function(){return this.shared.flags},set:function(val){this.shared.flags=val}},position:{get:function(){return this.shared.position},set:function(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>{return parent.node_ops.lookup(parent,name)},mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>{return FS.stat(path,true)},chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>{return stream.fd===null},llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""})},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAPU32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP64[buf+40>>3]=BigInt(stat.size);HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();HEAP64[buf+56>>3]=BigInt(Math.floor(atime/1e3));HEAPU32[buf+64>>2]=atime%1e3*1e3;HEAP64[buf+72>>3]=BigInt(Math.floor(mtime/1e3));HEAPU32[buf+80>>2]=mtime%1e3*1e3;HEAP64[buf+88>>3]=BigInt(Math.floor(ctime/1e3));HEAPU32[buf+96>>2]=ctime%1e3*1e3;HEAP64[buf+104>>3]=BigInt(stat.ino);return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream}};function _proc_exit(code){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(1,1,code);EXITSTATUS=code;if(!keepRuntimeAlive()){PThread.terminateAllThreads();if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;if(ENVIRONMENT_IS_PTHREAD){exitOnMainThread(status);throw"unwind"}_proc_exit(status)}var _exit=exitJS;function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}var PThread={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],pthreads:{},init:function(){if(ENVIRONMENT_IS_PTHREAD){PThread.initWorker()}else{PThread.initMainThread()}},initMainThread:function(){var pthreadPoolSize=32;while(pthreadPoolSize--){PThread.allocateUnusedWorker()}addOnPreRun(()=>{addRunDependency("loading-workers");PThread.loadWasmModuleToAllWorkers(()=>removeRunDependency("loading-workers"))})},initWorker:function(){noExitRuntime=false},setExitStatus:function(status){EXITSTATUS=status},terminateAllThreads__deps:["$terminateWorker"],terminateAllThreads:function(){for(var worker of PThread.runningWorkers){terminateWorker(worker)}for(var worker of PThread.unusedWorkers){terminateWorker(worker)}PThread.unusedWorkers=[];PThread.runningWorkers=[];PThread.pthreads=[]},returnWorkerToPool:function(worker){var pthread_ptr=worker.pthread_ptr;delete PThread.pthreads[pthread_ptr];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);worker.pthread_ptr=0;__emscripten_thread_free_data(pthread_ptr)},receiveObjectTransfer:function(data){},threadInitTLS:function(){PThread.tlsInitFunctions.forEach(f=>f())},loadWasmModuleToWorker:worker=>new Promise(onFinishedLoading=>{worker.onmessage=e=>{var d=e["data"];var cmd=d["cmd"];if(worker.pthread_ptr)PThread.currentProxiedOperationCallerThread=worker.pthread_ptr;if(d["targetThread"]&&d["targetThread"]!=_pthread_self()){var targetWorker=PThread.pthreads[d.targetThread];if(targetWorker){targetWorker.postMessage(d,d["transferList"])}else{err('Internal error! Worker sent a message "'+cmd+'" to target pthread '+d["targetThread"]+", but that thread no longer exists!")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd==="checkMailbox"){checkMailbox()}else if(cmd==="spawnThread"){spawnThread(d)}else if(cmd==="cleanupThread"){cleanupThread(d["thread"])}else if(cmd==="killThread"){killThread(d["thread"])}else if(cmd==="cancelThread"){cancelThread(d["thread"])}else if(cmd==="loaded"){worker.loaded=true;if(ENVIRONMENT_IS_NODE&&!worker.pthread_ptr){worker.unref()}onFinishedLoading(worker)}else if(cmd==="print"){out("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="printErr"){err("Thread "+d["threadId"]+": "+d["text"])}else if(cmd==="alert"){alert("Thread "+d["threadId"]+": "+d["text"])}else if(d.target==="setimmediate"){worker.postMessage(d)}else if(cmd==="callHandler"){Module[d["handler"]](...d["args"])}else if(cmd){err("worker sent an unknown command "+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=e=>{var message="worker sent an error!";err(message+" "+e.filename+":"+e.lineno+": "+e.message);throw e};if(ENVIRONMENT_IS_NODE){worker.on("message",function(data){worker.onmessage({data:data})});worker.on("error",function(e){worker.onerror(e)})}var handlers=[];var knownHandlers=["onExit","onAbort","print","printErr"];for(var handler of knownHandlers){if(Module.hasOwnProperty(handler)){handlers.push(handler)}}worker.postMessage({"cmd":"load","handlers":handlers,"urlOrBlob":Module["mainScriptUrlOrBlob"],"wasmMemory":wasmMemory,"wasmModule":wasmModule})}),loadWasmModuleToAllWorkers:function(onMaybeReady){if(ENVIRONMENT_IS_PTHREAD){return onMaybeReady()}let pthreadPoolReady=Promise.all(PThread.unusedWorkers.map(PThread.loadWasmModuleToWorker));pthreadPoolReady.then(onMaybeReady)},allocateUnusedWorker:function(){var worker;if(!Module["locateFile"]){worker=new Worker(new URL("ffmpeg-core.worker.js",import.meta.url))}else{var pthreadMainJs=locateFile("ffmpeg-core.worker.js");worker=new Worker(pthreadMainJs)}PThread.unusedWorkers.push(worker)},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}return PThread.unusedWorkers.pop()}};Module["PThread"]=PThread;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}var wasmTableMirror=[];function getWasmTableEntry(funcPtr){var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func}function establishStackSpace(){var pthread_ptr=_pthread_self();var stackHigh=HEAP32[pthread_ptr+52>>2];var stackSize=HEAP32[pthread_ptr+56>>2];var stackLow=stackHigh-stackSize;_emscripten_stack_set_limits(stackHigh,stackLow);stackRestore(stackHigh)}Module["establishStackSpace"]=establishStackSpace;function exitOnMainThread(returnCode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(2,0,returnCode);_exit(returnCode)}function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP64[ptr>>3];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}function invokeEntryPoint(ptr,arg){var result=getWasmTableEntry(ptr)(arg);if(keepRuntimeAlive()){PThread.setExitStatus(result)}else{__emscripten_thread_exit(result)}}Module["invokeEntryPoint"]=invokeEntryPoint;function registerTLSInit(tlsInitFunc){PThread.tlsInitFunctions.push(tlsInitFunc)}function setValue(ptr,value,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":HEAP64[ptr>>3]=BigInt(value);break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}function ___assert_fail(condition,filename,line,func){abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var dlopenMissingError="To use dlopen, you need enable dynamic linking, see https://emscripten.org/docs/compiling/Dynamic-Linking.html";function ___dlsym(handle,symbol){abort(dlopenMissingError)}function ___emscripten_init_main_thread_js(tb){__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1,!ENVIRONMENT_IS_WEB,65536);PThread.threadInitTLS()}function ___emscripten_thread_cleanup(thread){if(!ENVIRONMENT_IS_PTHREAD)cleanupThread(thread);else postMessage({"cmd":"cleanupThread","thread":thread})}function pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(3,1,pthread_ptr,attr,startRoutine,arg);return ___pthread_create_js(pthread_ptr,attr,startRoutine,arg)}function ___pthread_create_js(pthread_ptr,attr,startRoutine,arg){if(typeof SharedArrayBuffer=="undefined"){err("Current environment does not support SharedArrayBuffer, pthreads are not available!");return 6}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return pthreadCreateProxied(pthread_ptr,attr,startRoutine,arg)}if(error)return error;var threadParams={startRoutine:startRoutine,pthread_ptr:pthread_ptr,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd="spawnThread";postMessage(threadParams,transferList);return 0}return spawnThread(threadParams)}function ___pthread_kill_js(thread,signal){if(signal===33){if(!ENVIRONMENT_IS_PTHREAD)cancelThread(thread);else postMessage({"cmd":"cancelThread","thread":thread})}else{if(!ENVIRONMENT_IS_PTHREAD)killThread(thread);else postMessage({"cmd":"killThread","thread":thread})}return 0}function ___syscall__newselect(nfds,readfds,writefds,exceptfds,timeout){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(4,1,nfds,readfds,writefds,exceptfds,timeout);try{var total=0;var srcReadLow=readfds?HEAP32[readfds>>2]:0,srcReadHigh=readfds?HEAP32[readfds+4>>2]:0;var srcWriteLow=writefds?HEAP32[writefds>>2]:0,srcWriteHigh=writefds?HEAP32[writefds+4>>2]:0;var srcExceptLow=exceptfds?HEAP32[exceptfds>>2]:0,srcExceptHigh=exceptfds?HEAP32[exceptfds+4>>2]:0;var dstReadLow=0,dstReadHigh=0;var dstWriteLow=0,dstWriteHigh=0;var dstExceptLow=0,dstExceptHigh=0;var allLow=(readfds?HEAP32[readfds>>2]:0)|(writefds?HEAP32[writefds>>2]:0)|(exceptfds?HEAP32[exceptfds>>2]:0);var allHigh=(readfds?HEAP32[readfds+4>>2]:0)|(writefds?HEAP32[writefds+4>>2]:0)|(exceptfds?HEAP32[exceptfds+4>>2]:0);var check=function(fd,low,high,val){return fd<32?low&val:high&val};for(var fd=0;fd>2]=dstReadLow;HEAP32[readfds+4>>2]=dstReadHigh}if(writefds){HEAP32[writefds>>2]=dstWriteLow;HEAP32[writefds+4>>2]=dstWriteHigh}if(exceptfds){HEAP32[exceptfds>>2]=dstExceptLow;HEAP32[exceptfds+4>>2]=dstExceptHigh}return total}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var SOCKFS={mount:function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket:function(family,type,protocol){type&=~526336;var streaming=type==1;if(streaming&&protocol&&protocol!=6){throw new FS.ErrnoError(66)}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket:function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll:function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl:function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read:function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write:function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close:function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname:function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(sock,addr,port){var ws;if(typeof addr=="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(23)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer:function(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents:function(sock,peer){var first=true;var handleOpen=function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data=="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}data=new Uint8Array(data)}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,isBinary){if(!isBinary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=14;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll:function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl:function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return 28}},close:function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>2]=value;return value}function inetPton4(str){var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0}function jstoi_q(str){return parseInt(str)}function inetPton6(str){var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);break;case 10:addr=inetPton6(addr);zeroMemory(sa,28);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);break;default:return 5}return 0}var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:function(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr:function(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___syscall_accept4(fd,addr,addrlen,flags,d1,d2){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(5,1,fd,addr,addrlen,flags,d1,d2);try{var sock=getSocketFromFD(fd);var newsock=sock.sock_ops.accept(sock);if(addr){var errno=writeSockaddr(addr,newsock.family,DNS.lookup_name(newsock.daddr),newsock.dport,addrlen)}return newsock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function inetNtop4(addr){return(addr&255)+"."+(addr>>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function inetNtop6(ints){var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}}function getSocketAddress(addrp,addrlen,allowNull){if(allowNull&&addrp===0)return null;var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}function ___syscall_bind(fd,addr,addrlen,d1,d2,d3){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(6,1,fd,addr,addrlen,d1,d2,d3);try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.bind(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_connect(fd,addr,addrlen,d1,d2,d3){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(7,1,fd,addr,addrlen,d1,d2,d3);try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(8,1,dirfd,path,amode,flags);try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fcntl64(fd,cmd,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(9,1,fd,cmd,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.createStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 5:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(10,1,fd,buf);try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function ___syscall_getdents64(fd,dirp,count){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(11,1,fd,dirp,count);try{var stream=SYSCALLS.getStreamFromFD(fd);if(!stream.getdents){stream.getdents=FS.readdir(stream.path)}var struct_size=280;var pos=0;var off=FS.llseek(stream,0,1);var idx=Math.floor(off/struct_size);while(idx>3]=BigInt(id);HEAP64[dirp+pos+8>>3]=BigInt((idx+1)*struct_size);HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getpeername(fd,addr,addrlen,d1,d2,d3){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(12,1,fd,addr,addrlen,d1,d2,d3);try{var sock=getSocketFromFD(fd);if(!sock.daddr){return-53}var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.daddr),sock.dport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockname(fd,addr,addrlen,d1,d2,d3){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(13,1,fd,addr,addrlen,d1,d2,d3);try{var sock=getSocketFromFD(fd);var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(sock.saddr||"0.0.0.0"),sock.sport,addrlen);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_getsockopt(fd,level,optname,optval,optlen,d1){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(14,1,fd,level,optname,optval,optlen,d1);try{var sock=getSocketFromFD(fd);if(level===1){if(optname===4){HEAP32[optval>>2]=sock.error;HEAP32[optlen>>2]=4;sock.error=null;return 0}}return-50}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(15,1,fd,op,varargs);SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_listen(fd,backlog){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(16,1,fd,backlog);try{var sock=getSocketFromFD(fd);sock.sock_ops.listen(sock,backlog);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(17,1,path,buf);try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(18,1,dirfd,path,mode);try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(19,1,dirfd,path,buf,flags);try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(20,1,dirfd,path,flags,varargs);SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_poll(fds,nfds,timeout){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(21,1,fds,nfds,timeout);try{var nonzero=0;for(var i=0;i>2];var events=HEAP16[pollfd+4>>1];var mask=32;var stream=FS.getStream(fd);if(stream){mask=SYSCALLS.DEFAULT_POLLMASK;if(stream.stream_ops.poll){mask=stream.stream_ops.poll(stream)}}mask&=events|8|16;if(mask)nonzero++;HEAP16[pollfd+6>>1]=mask}return nonzero}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_recvfrom(fd,buf,len,flags,addr,addrlen){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(22,1,fd,buf,len,flags,addr,addrlen);try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_renameat(olddirfd,oldpath,newdirfd,newpath){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(23,1,olddirfd,oldpath,newdirfd,newpath);try{oldpath=SYSCALLS.getStr(oldpath);newpath=SYSCALLS.getStr(newpath);oldpath=SYSCALLS.calculateAt(olddirfd,oldpath);newpath=SYSCALLS.calculateAt(newdirfd,newpath);FS.rename(oldpath,newpath);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_rmdir(path){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(24,1,path);try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_sendto(fd,message,length,flags,addr,addr_len){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(25,1,fd,message,length,flags,addr,addr_len);try{var sock=getSocketFromFD(fd);var dest=getSocketAddress(addr,addr_len,true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_socket(domain,type,protocol){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(26,1,domain,type,protocol);try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(27,1,path,buf);try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(28,1,dirfd,path,flags);try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort("Invalid flags passed to unlinkat")}return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=true;function __emscripten_get_now_is_monotonic(){return nowIsMonotonic}function maybeExit(){if(!keepRuntimeAlive()){try{if(ENVIRONMENT_IS_PTHREAD)__emscripten_thread_exit(EXITSTATUS);else _exit(EXITSTATUS)}catch(e){handleException(e)}}}function callUserCallback(func){if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}}function __emscripten_thread_mailbox_await(pthread_ptr){if(typeof Atomics.waitAsync==="function"){var wait=Atomics.waitAsync(HEAP32,pthread_ptr>>2,pthread_ptr);wait.value.then(checkMailbox);var waitingAsync=pthread_ptr+128;Atomics.store(HEAP32,waitingAsync>>2,1)}}Module["__emscripten_thread_mailbox_await"]=__emscripten_thread_mailbox_await;function checkMailbox(){var pthread_ptr=_pthread_self();if(pthread_ptr){__emscripten_thread_mailbox_await(pthread_ptr);callUserCallback(()=>__emscripten_check_mailbox())}}Module["checkMailbox"]=checkMailbox;function __emscripten_notify_mailbox_postmessage(targetThreadId,currThreadId,mainThreadId){if(targetThreadId==currThreadId){setTimeout(()=>checkMailbox())}else if(ENVIRONMENT_IS_PTHREAD){postMessage({"targetThread":targetThreadId,"cmd":"checkMailbox"})}else{var worker=PThread.pthreads[targetThreadId];if(!worker){return}worker.postMessage({"cmd":"checkMailbox"})}}function __emscripten_set_offscreencanvas_size(target,width,height){return-1}function __emscripten_thread_set_strongref(thread){if(ENVIRONMENT_IS_NODE){PThread.pthreads[thread].ref()}}function __emscripten_throw_longjmp(){throw Infinity}function readI53FromI64(ptr){return HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296}function __gmtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday}function isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];function ydayFromDate(date){var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday}function __localtime_js(time,tmPtr){var date=new Date(readI53FromI64(time)*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mktime_js(tmPtr){var date=new Date(HEAP32[tmPtr+20>>2]+1900,HEAP32[tmPtr+16>>2],HEAP32[tmPtr+12>>2],HEAP32[tmPtr+8>>2],HEAP32[tmPtr+4>>2],HEAP32[tmPtr>>2],0);var dst=HEAP32[tmPtr+32>>2];var guessedOffset=date.getTimezoneOffset();var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dstOffset=Math.min(winterOffset,summerOffset);if(dst<0){HEAP32[tmPtr+32>>2]=Number(summerOffset!=winterOffset&&dstOffset==guessedOffset)}else if(dst>0!=(dstOffset==guessedOffset)){var nonDstOffset=Math.max(winterOffset,summerOffset);var trueOffset=dst>0?dstOffset:nonDstOffset;date.setTime(date.getTime()+(trueOffset-guessedOffset)*6e4)}HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getYear();return date.getTime()/1e3|0}function __mmap_js(len,prot,flags,fd,off,allocated,addr){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(29,1,len,prot,flags,fd,off,allocated,addr);try{var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,off,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(30,1,addr,len,prot,flags,fd,offset);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}FS.munmap(stream)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function stringToNewUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret}function __tzset_js(timezone,daylight,tzname){var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=stringToNewUTF8(winterName);var summerNamePtr=stringToNewUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAPU32[tzname+4>>2]=summerNamePtr}else{HEAPU32[tzname>>2]=summerNamePtr;HEAPU32[tzname+4>>2]=winterNamePtr}}function _abort(){abort("")}Module["_abort"]=_abort;function _dlopen(handle){abort(dlopenMissingError)}var readEmAsmArgsArray=[];function readEmAsmArgs(sigPtr,buf){readEmAsmArgsArray.length=0;var ch;buf>>=2;while(ch=HEAPU8[sigPtr++]){buf+=ch!=105&buf;readEmAsmArgsArray.push(ch==105?HEAP32[buf]:(ch==106?HEAP64:HEAPF64)[buf++>>1]);++buf}return readEmAsmArgsArray}function runEmAsmFunction(code,sigPtr,argbuf){var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_asm_const_int(code,sigPtr,argbuf){return runEmAsmFunction(code,sigPtr,argbuf)}function _emscripten_check_blocking_allowed(){}function _emscripten_date_now(){return Date.now()}function runtimeKeepalivePush(){runtimeKeepaliveCounter+=1}function _emscripten_exit_with_live_runtime(){runtimeKeepalivePush();throw"unwind"}function getHeapMax(){return HEAPU8.length}function _emscripten_get_heap_max(){return getHeapMax()}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){global.performance=require("perf_hooks").performance}_emscripten_get_now=()=>performance.timeOrigin+performance.now();function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require("os").cpus().length;return navigator["hardwareConcurrency"]}function withStackSave(f){var stack=stackSave();var ret=f();stackRestore(stack);return ret}function proxyToMainThread(index,sync){var numCallArgs=arguments.length-2;var outerArgs=arguments;return withStackSave(()=>{var serializedNumCallArgs=numCallArgs*2;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>3;for(var i=0;i>>0;abortOnCannotGrowMemory(requestedSize)}function _emscripten_unwind_to_js_event_loop(){throw"unwind"}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings}function stringToAscii(str,buffer){for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0}function _environ_get(__environ,environ_buf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(31,1,__environ,environ_buf);var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(32,1,penviron_count,penviron_buf_size);var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(33,1,fd);try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(34,1,fd,pbuf);try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf>>0]=type;HEAP16[pbuf+2>>1]=flags;HEAP64[pbuf+8>>3]=BigInt(rightsBase);HEAP64[pbuf+16>>3]=BigInt(rightsInheriting);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doReadv(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var MAX_INT53=9007199254740992;var MIN_INT53=-9007199254740992;function bigintToI53Checked(num){return numMAX_INT53?NaN:Number(num)}function _fd_seek(fd,offset,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(36,1,fd,offset,whence,newOffset);try{offset=bigintToI53Checked(offset);if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);HEAP64[newOffset>>3]=BigInt(stream.position);if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function doWritev(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(37,1,fd,iov,iovcnt,pnum);try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _getaddrinfo(node,service,hint,out){if(ENVIRONMENT_IS_PTHREAD)return proxyToMainThread(38,1,node,service,hint,out);var addr=0;var port=0;var flags=0;var family=0;var type=0;var proto=0;var ai;function allocaddrinfo(family,type,proto,canon,addr,port){var sa,salen,ai;var errno;salen=family===10?28:16;addr=family===10?inetNtop6(addr):inetNtop4(addr);sa=_malloc(salen);errno=writeSockaddr(sa,family,addr,port);assert(!errno);ai=_malloc(32);HEAP32[ai+4>>2]=family;HEAP32[ai+8>>2]=type;HEAP32[ai+12>>2]=proto;HEAPU32[ai+24>>2]=canon;HEAPU32[ai+20>>2]=sa;if(family===10){HEAP32[ai+16>>2]=28}else{HEAP32[ai+16>>2]=16}HEAP32[ai+28>>2]=0;return ai}if(hint){flags=HEAP32[hint>>2];family=HEAP32[hint+4>>2];type=HEAP32[hint+8>>2];proto=HEAP32[hint+12>>2]}if(type&&!proto){proto=type===2?17:6}if(!type&&proto){type=proto===17?2:1}if(proto===0){proto=6}if(type===0){type=1}if(!node&&!service){return-2}if(flags&~(1|2|4|1024|8|16|32)){return-1}if(hint!==0&&HEAP32[hint>>2]&2&&!node){return-1}if(flags&32){return-2}if(type!==0&&type!==1&&type!==2){return-7}if(family!==0&&family!==2&&family!==10){return-6}if(service){service=UTF8ToString(service);port=parseInt(service,10);if(isNaN(port)){if(flags&1024){return-2}return-8}}if(!node){if(family===0){family=2}if((flags&1)===0){if(family===2){addr=_htonl(2130706433)}else{addr=[0,0,0,1]}}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}node=UTF8ToString(node);addr=inetPton4(node);if(addr!==null){if(family===0||family===2){family=2}else if(family===10&&flags&8){addr=[0,0,_htonl(65535),addr];family=10}else{return-2}}else{addr=inetPton6(node);if(addr!==null){if(family===0||family===10){family=10}else{return-2}}}if(addr!=null){ai=allocaddrinfo(family,type,proto,node,addr,port);HEAPU32[out>>2]=ai;return 0}if(flags&4){return-2}node=DNS.lookup_name(node);addr=inetPton4(node);if(family===0){family=2}else if(family===10){addr=[0,0,_htonl(65535),addr]}ai=allocaddrinfo(family,type,proto,null,addr,port);HEAPU32[out>>2]=ai;return 0}function _getnameinfo(sa,salen,node,nodelen,serv,servlen,flags){var info=readSockaddr(sa,salen);if(info.errno){return-6}var port=info.port;var addr=info.addr;var overflowed=false;if(node&&nodelen){var lookup;if(flags&1||!(lookup=DNS.lookup_addr(addr))){if(flags&8){return-2}}else{addr=lookup}var numBytesWrittenExclNull=stringToUTF8(addr,node,nodelen);if(numBytesWrittenExclNull+1>=nodelen){overflowed=true}}if(serv&&servlen){port=""+port;var numBytesWrittenExclNull=stringToUTF8(port,serv,servlen);if(numBytesWrittenExclNull+1>=servlen){overflowed=true}}if(overflowed){return-12}return 0}function arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}PThread.init();var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();var proxiedFunctionTable=[null,_proc_exit,exitOnMainThread,pthreadCreateProxied,___syscall__newselect,___syscall_accept4,___syscall_bind,___syscall_connect,___syscall_faccessat,___syscall_fcntl64,___syscall_fstat64,___syscall_getdents64,___syscall_getpeername,___syscall_getsockname,___syscall_getsockopt,___syscall_ioctl,___syscall_listen,___syscall_lstat64,___syscall_mkdirat,___syscall_newfstatat,___syscall_openat,___syscall_poll,___syscall_recvfrom,___syscall_renameat,___syscall_rmdir,___syscall_sendto,___syscall_socket,___syscall_stat64,___syscall_unlinkat,__mmap_js,__munmap_js,_environ_get,_environ_sizes_get,_fd_close,_fd_fdstat_get,_fd_read,_fd_seek,_fd_write,_getaddrinfo];var wasmImports={"c":___assert_fail,"Aa":___dlsym,"na":___emscripten_init_main_thread_js,"z":___emscripten_thread_cleanup,"da":___pthread_create_js,"ba":___pthread_kill_js,"Z":___syscall__newselect,"Q":___syscall_accept4,"P":___syscall_bind,"O":___syscall_connect,"Ba":___syscall_faccessat,"j":___syscall_fcntl64,"wa":___syscall_fstat64,"aa":___syscall_getdents64,"N":___syscall_getpeername,"M":___syscall_getsockname,"L":___syscall_getsockopt,"D":___syscall_ioctl,"K":___syscall_listen,"ta":___syscall_lstat64,"ka":___syscall_mkdirat,"ua":___syscall_newfstatat,"B":___syscall_openat,"ea":___syscall_poll,"J":___syscall_recvfrom,"$":___syscall_renameat,"_":___syscall_rmdir,"I":___syscall_sendto,"x":___syscall_socket,"va":___syscall_stat64,"T":___syscall_unlinkat,"za":__emscripten_get_now_is_monotonic,"W":__emscripten_notify_mailbox_postmessage,"pa":__emscripten_set_offscreencanvas_size,"ma":__emscripten_thread_mailbox_await,"ya":__emscripten_thread_set_strongref,"R":__emscripten_throw_longjmp,"ha":__gmtime_js,"ia":__localtime_js,"ja":__mktime_js,"fa":__mmap_js,"ga":__munmap_js,"U":__tzset_js,"b":_abort,"w":_dlopen,"Ea":_emscripten_asm_const_int,"A":_emscripten_check_blocking_allowed,"p":_emscripten_date_now,"xa":_emscripten_exit_with_live_runtime,"X":_emscripten_get_heap_max,"i":_emscripten_get_now,"Y":_emscripten_num_logical_cores,"oa":_emscripten_receive_on_main_thread_js,"S":_emscripten_resize_heap,"ca":_emscripten_unwind_to_js_event_loop,"ra":_environ_get,"sa":_environ_sizes_get,"o":_exit,"q":_fd_close,"qa":_fd_fdstat_get,"C":_fd_read,"la":_fd_seek,"s":_fd_write,"m":_getaddrinfo,"k":_getnameinfo,"G":invoke_i,"h":invoke_ii,"e":invoke_iii,"n":invoke_iiii,"v":invoke_iiiii,"E":invoke_iiiiii,"u":invoke_iiiiiiiii,"H":invoke_iiiijj,"Da":invoke_iij,"f":invoke_vi,"l":invoke_vii,"r":invoke_viii,"d":invoke_viiii,"t":invoke_viiiii,"Ca":invoke_viiiiii,"F":invoke_viiiiiiii,"V":is_timeout,"a":wasmMemory||Module["wasmMemory"],"y":send_progress,"g":_strftime};var asm=createWasm();var ___wasm_call_ctors=function(){return(___wasm_call_ctors=Module["asm"]["Fa"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["Ga"]).apply(null,arguments)};var ___errno_location=function(){return(___errno_location=Module["asm"]["Ia"]).apply(null,arguments)};var _ntohs=function(){return(_ntohs=Module["asm"]["Ja"]).apply(null,arguments)};var _htons=function(){return(_htons=Module["asm"]["Ka"]).apply(null,arguments)};var _ffmpeg=Module["_ffmpeg"]=function(){return(_ffmpeg=Module["_ffmpeg"]=Module["asm"]["La"]).apply(null,arguments)};var __emscripten_tls_init=Module["__emscripten_tls_init"]=function(){return(__emscripten_tls_init=Module["__emscripten_tls_init"]=Module["asm"]["Ma"]).apply(null,arguments)};var _pthread_self=Module["_pthread_self"]=function(){return(_pthread_self=Module["_pthread_self"]=Module["asm"]["Na"]).apply(null,arguments)};var _emscripten_builtin_memalign=function(){return(_emscripten_builtin_memalign=Module["asm"]["Oa"]).apply(null,arguments)};var __emscripten_thread_init=Module["__emscripten_thread_init"]=function(){return(__emscripten_thread_init=Module["__emscripten_thread_init"]=Module["asm"]["Pa"]).apply(null,arguments)};var __emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=function(){return(__emscripten_thread_crashed=Module["__emscripten_thread_crashed"]=Module["asm"]["Qa"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=function(){return(_emscripten_main_thread_process_queued_calls=Module["asm"]["emscripten_main_thread_process_queued_calls"]).apply(null,arguments)};var _htonl=function(){return(_htonl=Module["asm"]["Ra"]).apply(null,arguments)};var _emscripten_main_runtime_thread_id=function(){return(_emscripten_main_runtime_thread_id=Module["asm"]["emscripten_main_runtime_thread_id"]).apply(null,arguments)};var __emscripten_run_in_main_runtime_thread_js=function(){return(__emscripten_run_in_main_runtime_thread_js=Module["asm"]["Sa"]).apply(null,arguments)};var _emscripten_dispatch_to_thread_=function(){return(_emscripten_dispatch_to_thread_=Module["asm"]["emscripten_dispatch_to_thread_"]).apply(null,arguments)};var __emscripten_thread_free_data=function(){return(__emscripten_thread_free_data=Module["asm"]["Ta"]).apply(null,arguments)};var __emscripten_thread_exit=Module["__emscripten_thread_exit"]=function(){return(__emscripten_thread_exit=Module["__emscripten_thread_exit"]=Module["asm"]["Ua"]).apply(null,arguments)};var __emscripten_check_mailbox=Module["__emscripten_check_mailbox"]=function(){return(__emscripten_check_mailbox=Module["__emscripten_check_mailbox"]=Module["asm"]["Va"]).apply(null,arguments)};var _setThrew=function(){return(_setThrew=Module["asm"]["Wa"]).apply(null,arguments)};var _emscripten_stack_set_limits=function(){return(_emscripten_stack_set_limits=Module["asm"]["Xa"]).apply(null,arguments)};var stackSave=function(){return(stackSave=Module["asm"]["Ya"]).apply(null,arguments)};var stackRestore=function(){return(stackRestore=Module["asm"]["Za"]).apply(null,arguments)};var stackAlloc=function(){return(stackAlloc=Module["asm"]["_a"]).apply(null,arguments)};var _ff_h264_cabac_tables=Module["_ff_h264_cabac_tables"]=1534124;var ___start_em_js=Module["___start_em_js"]=6030565;var ___stop_em_js=Module["___stop_em_js"]=6030742;function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiijj(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iij(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiiiii(index,a1,a2,a3,a4,a5,a6,a7,a8){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6,a7,a8)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["keepRuntimeAlive"]=keepRuntimeAlive;Module["wasmMemory"]=wasmMemory;Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToUTF8"]=stringToUTF8;Module["lengthBytesUTF8"]=lengthBytesUTF8;Module["ExitStatus"]=ExitStatus;Module["FS"]=FS;Module["PThread"]=PThread;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);initRuntime();startWorker(Module);return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); + + + return createFFmpegCore.ready +} + +); +})(); +export default createFFmpegCore; \ No newline at end of file diff --git a/public/ffmpeg-core.wasm b/public/ffmpeg-core.wasm new file mode 100644 index 0000000..79daf43 Binary files /dev/null and b/public/ffmpeg-core.wasm differ diff --git a/public/ffmpeg-core.worker.js b/public/ffmpeg-core.worker.js new file mode 100644 index 0000000..4928d8e --- /dev/null +++ b/public/ffmpeg-core.worker.js @@ -0,0 +1 @@ +"use strict";var Module={};var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads");var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",data=>onmessage({data:data}));var fs=require("fs");Object.assign(global,{self:global,require:require,Module:Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:function(f){(0,eval)(fs.readFileSync(f,"utf8")+"//# sourceURL="+f)},postMessage:function(msg){parentPort.postMessage(msg)},performance:global.performance||{now:function(){return Date.now()}}})}var initializedJS=false;function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,text+"\n");return}console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;self.alert=threadAlert;Module["instantiateWasm"]=(info,receiveInstance)=>{var module=Module["wasmModule"];Module["wasmModule"]=null;var instance=new WebAssembly.Instance(module,info);return receiveInstance(instance)};self.onunhandledrejection=e=>{throw e.reason??e};function handleMessage(e){try{if(e.data.cmd==="load"){let messageQueue=[];self.onmessage=e=>messageQueue.push(e);self.startWorker=instance=>{Module=instance;postMessage({"cmd":"loaded"});for(let msg of messageQueue){handleMessage(msg)}self.onmessage=handleMessage};Module["wasmModule"]=e.data.wasmModule;for(const handler of e.data.handlers){Module[handler]=function(){postMessage({cmd:"callHandler",handler:handler,args:[...arguments]})}}Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;(e.data.urlOrBlob?import(e.data.urlOrBlob):import("./ffmpeg-core.js")).then(exports=>exports.default(Module))}else if(e.data.cmd==="run"){Module["__emscripten_thread_init"](e.data.pthread_ptr,0,0,1);Module["__emscripten_thread_mailbox_await"](e.data.pthread_ptr);Module["establishStackSpace"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].threadInitTLS();if(!initializedJS){initializedJS=true}try{Module["invokeEntryPoint"](e.data.start_routine,e.data.arg)}catch(ex){if(ex!="unwind"){throw ex}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["__emscripten_thread_exit"](-1)}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="checkMailbox"){if(initializedJS){Module["checkMailbox"]()}}else if(e.data.cmd){err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){if(Module["__emscripten_thread_crashed"]){Module["__emscripten_thread_crashed"]()}throw ex}}self.onmessage=handleMessage; diff --git a/src/App.svelte b/src/App.svelte index ebcad2e..8d5335d 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -1,13 +1,27 @@
+ {message}
{command}

Inputs

@@ -89,7 +176,20 @@

Output

-

{$output}

+ + {#if videoValue} +
diff --git a/src/filters.json b/src/filters.json index 19006c0..fabbb72 100644 --- a/src/filters.json +++ b/src/filters.json @@ -1233,47 +1233,6 @@ { "id": 14, "meta": "TSC", - "name": "adrc", - "type": "A->A", - "description": "Audio Spectral Dynamic Range Controller.", - "params": [ - { - "name": "transfer", - "type": "string", - "desc": "set the transfer expression (default \"p\")", - "min": null, - "max": null, - "default": "p" - }, - { - "name": "attack", - "type": "double", - "desc": "set the attack (from 1 to 1000) (default 50)", - "min": 1.0, - "max": 1000.0, - "default": 50.0 - }, - { - "name": "release", - "type": "double", - "desc": "set the release (from 5 to 2000) (default 100)", - "min": 5.0, - "max": 2000.0, - "default": 100.0 - }, - { - "name": "channels", - "type": "string", - "desc": "set channels to filter (default \"all\")", - "min": null, - "max": null, - "default": "all" - } - ] - }, - { - "id": 15, - "meta": "TSC", "name": "adynamicequalizer", "type": "A->A", "description": "Apply Dynamic Equalization of input audio.", @@ -1445,7 +1404,7 @@ ] }, { - "id": 16, + "id": 15, "meta": "T.C", "name": "adynamicsmooth", "type": "A->A", @@ -1470,7 +1429,7 @@ ] }, { - "id": 17, + "id": 16, "meta": "...", "name": "aecho", "type": "A->A", @@ -1511,7 +1470,7 @@ ] }, { - "id": 18, + "id": 17, "meta": "TSC", "name": "aemphasis", "type": "A->A", @@ -1600,7 +1559,7 @@ ] }, { - "id": 19, + "id": 18, "meta": "T..", "name": "aeval", "type": "A->A", @@ -1633,7 +1592,7 @@ ] }, { - "id": 20, + "id": 19, "meta": "T.C", "name": "aexciter", "type": "A->A", @@ -1706,7 +1665,7 @@ ] }, { - "id": 21, + "id": 20, "meta": "T.C", "name": "afade", "type": "A->A", @@ -2011,7 +1970,7 @@ ] }, { - "id": 22, + "id": 21, "meta": "TSC", "name": "afftdn", "type": "A->A", @@ -2444,7 +2403,7 @@ ] }, { - "id": 23, + "id": 22, "meta": "TS.", "name": "afftfilt", "type": "A->A", @@ -2583,7 +2542,7 @@ ] }, { - "id": 24, + "id": 23, "meta": ".SC", "name": "afir", "type": "N->N", @@ -2770,7 +2729,7 @@ ] }, { - "id": 25, + "id": 24, "meta": "...", "name": "aformat", "type": "A->A", @@ -2827,7 +2786,7 @@ ] }, { - "id": 26, + "id": 25, "meta": "TSC", "name": "afreqshift", "type": "A->A", @@ -2860,7 +2819,7 @@ ] }, { - "id": 27, + "id": 26, "meta": "TSC", "name": "afwtdn", "type": "A->A", @@ -2963,7 +2922,7 @@ ] }, { - "id": 28, + "id": 27, "meta": "T.C", "name": "agate", "type": "A->A", @@ -3098,7 +3057,7 @@ ] }, { - "id": 29, + "id": 28, "meta": ".S.", "name": "aiir", "type": "A->N", @@ -3399,7 +3358,7 @@ ] }, { - "id": 30, + "id": 29, "meta": "T..", "name": "aintegral", "type": "A->A", @@ -3407,7 +3366,7 @@ "params": [] }, { - "id": 31, + "id": 30, "meta": "...", "name": "ainterleave", "type": "N->A", @@ -3454,14 +3413,14 @@ ] }, { - "id": 32, + "id": 31, "meta": "T..", "name": "alatency", "type": "A->A", "description": "Report audio filtering latency." }, { - "id": 33, + "id": 32, "meta": "T.C", "name": "alimiter", "type": "A->A", @@ -3542,7 +3501,7 @@ ] }, { - "id": 34, + "id": 33, "meta": "TSC", "name": "allpass", "type": "A->A", @@ -3843,7 +3802,7 @@ ] }, { - "id": 35, + "id": 34, "meta": "...", "name": "aloop", "type": "A->A", @@ -3876,7 +3835,7 @@ ] }, { - "id": 36, + "id": 35, "meta": "...", "name": "amerge", "type": "N->A", @@ -3893,7 +3852,7 @@ ] }, { - "id": 37, + "id": 36, "meta": "T..", "name": "ametadata", "type": "A->A", @@ -4010,7 +3969,7 @@ ] }, { - "id": 38, + "id": 37, "meta": "..C", "name": "amix", "type": "N->A", @@ -4073,14 +4032,14 @@ ] }, { - "id": 39, + "id": 38, "meta": "...", "name": "amultiply", "type": "AA->A", "description": "Multiply two audio streams." }, { - "id": 40, + "id": 39, "meta": "TSC", "name": "anequalizer", "type": "A->N", @@ -4147,7 +4106,7 @@ ] }, { - "id": 41, + "id": 40, "meta": "TSC", "name": "anlmdn", "type": "A->A", @@ -4264,7 +4223,7 @@ ] }, { - "id": 42, + "id": 41, "meta": "TSC", "name": "anlmf", "type": "AA->A", @@ -4331,7 +4290,7 @@ ] }, { - "id": 43, + "id": 42, "meta": "TSC", "name": "anlms", "type": "AA->A", @@ -4398,14 +4357,14 @@ ] }, { - "id": 44, + "id": 43, "meta": "...", "name": "anull", "type": "A->A", "description": "Pass the source unchanged to the output." }, { - "id": 45, + "id": 44, "meta": "T..", "name": "apad", "type": "A->A", @@ -4454,7 +4413,7 @@ ] }, { - "id": 46, + "id": 45, "meta": "T.C", "name": "aperms", "type": "A->A", @@ -4501,7 +4460,7 @@ ] }, { - "id": 47, + "id": 46, "meta": "...", "name": "aphaser", "type": "A->A", @@ -4576,7 +4535,7 @@ ] }, { - "id": 48, + "id": 47, "meta": "TSC", "name": "aphaseshift", "type": "A->A", @@ -4609,7 +4568,7 @@ ] }, { - "id": 49, + "id": 48, "meta": "TSC", "name": "apsyclip", "type": "A->A", @@ -4674,7 +4633,7 @@ ] }, { - "id": 50, + "id": 49, "meta": "...", "name": "apulsator", "type": "A->A", @@ -4807,7 +4766,7 @@ ] }, { - "id": 51, + "id": 50, "meta": "..C", "name": "arealtime", "type": "A->A", @@ -4832,7 +4791,7 @@ ] }, { - "id": 52, + "id": 51, "meta": "...", "name": "aresample", "type": "A->A", @@ -4849,14 +4808,14 @@ ] }, { - "id": 53, + "id": 52, "meta": "...", "name": "areverse", "type": "A->A", "description": "Reverse an audio clip." }, { - "id": 54, + "id": 53, "meta": "TSC", "name": "arnndn", "type": "A->A", @@ -4889,14 +4848,14 @@ ] }, { - "id": 55, + "id": 54, "meta": "...", "name": "asdr", "type": "AA->A", "description": "Measure Audio Signal-to-Distortion Ratio." }, { - "id": 56, + "id": 55, "meta": "...", "name": "asegment", "type": "A->N", @@ -4921,7 +4880,7 @@ ] }, { - "id": 57, + "id": 56, "meta": "...", "name": "aselect", "type": "A->N", @@ -4962,7 +4921,7 @@ ] }, { - "id": 58, + "id": 57, "meta": "...", "name": "asendcmd", "type": "A->A", @@ -5003,7 +4962,7 @@ ] }, { - "id": 59, + "id": 58, "meta": "...", "name": "asetnsamples", "type": "A->A", @@ -5044,7 +5003,7 @@ ] }, { - "id": 60, + "id": 59, "meta": "...", "name": "asetpts", "type": "A->A", @@ -5061,7 +5020,7 @@ ] }, { - "id": 61, + "id": 60, "meta": "...", "name": "asetrate", "type": "A->A", @@ -5086,7 +5045,7 @@ ] }, { - "id": 62, + "id": 61, "meta": "...", "name": "asettb", "type": "A->A", @@ -5111,14 +5070,14 @@ ] }, { - "id": 63, + "id": 62, "meta": "...", "name": "ashowinfo", "type": "A->A", "description": "Show textual information for each audio frame." }, { - "id": 64, + "id": 63, "meta": "T..", "name": "asidedata", "type": "A->A", @@ -5239,7 +5198,7 @@ ] }, { - "id": 65, + "id": 64, "meta": "TSC", "name": "asoftclip", "type": "A->A", @@ -5326,7 +5285,7 @@ ] }, { - "id": 66, + "id": 65, "meta": ".S.", "name": "aspectralstats", "type": "A->A", @@ -5519,7 +5478,7 @@ ] }, { - "id": 67, + "id": 66, "meta": "...", "name": "asplit", "type": "A->N", @@ -5536,7 +5495,7 @@ ] }, { - "id": 68, + "id": 67, "meta": ".S.", "name": "astats", "type": "A->A", @@ -5805,7 +5764,7 @@ ] }, { - "id": 69, + "id": 68, "meta": "..C", "name": "astreamselect", "type": "N->N", @@ -5830,7 +5789,7 @@ ] }, { - "id": 70, + "id": 69, "meta": "TSC", "name": "asubboost", "type": "A->A", @@ -5911,7 +5870,7 @@ ] }, { - "id": 71, + "id": 70, "meta": "TSC", "name": "asubcut", "type": "A->A", @@ -5944,7 +5903,7 @@ ] }, { - "id": 72, + "id": 71, "meta": "TSC", "name": "asupercut", "type": "A->A", @@ -5977,7 +5936,7 @@ ] }, { - "id": 73, + "id": 72, "meta": "TSC", "name": "asuperpass", "type": "A->A", @@ -6018,7 +5977,7 @@ ] }, { - "id": 74, + "id": 73, "meta": "TSC", "name": "asuperstop", "type": "A->A", @@ -6059,7 +6018,7 @@ ] }, { - "id": 75, + "id": 74, "meta": "..C", "name": "atempo", "type": "A->A", @@ -6076,7 +6035,7 @@ ] }, { - "id": 76, + "id": 75, "meta": "TSC", "name": "atilt", "type": "A->A", @@ -6125,7 +6084,7 @@ ] }, { - "id": 77, + "id": 76, "meta": "...", "name": "atrim", "type": "A->A", @@ -6214,7 +6173,7 @@ ] }, { - "id": 78, + "id": 77, "meta": "...", "name": "axcorrelate", "type": "AA->A", @@ -6249,32 +6208,7 @@ ] }, { - "id": 79, - "meta": "...", - "name": "azmq", - "type": "A->A", - "description": "Receive commands through ZMQ and broker them to filters.", - "params": [ - { - "name": "bind_address", - "type": "string", - "desc": "set bind address (default \"tcp://*:5555\")", - "min": null, - "max": null, - "default": "tcp://*:5555" - }, - { - "name": "b", - "type": "string", - "desc": "set bind address (default \"tcp://*:5555\")", - "min": null, - "max": null, - "default": "tcp://*:5555" - } - ] - }, - { - "id": 80, + "id": 78, "meta": "TSC", "name": "bandpass", "type": "A->A", @@ -6583,7 +6517,7 @@ ] }, { - "id": 81, + "id": 79, "meta": "TSC", "name": "bandreject", "type": "A->A", @@ -6884,7 +6818,7 @@ ] }, { - "id": 82, + "id": 80, "meta": "TSC", "name": "bass", "type": "A->A", @@ -7217,7 +7151,7 @@ ] }, { - "id": 83, + "id": 81, "meta": "TSC", "name": "biquad", "type": "A->A", @@ -7474,7 +7408,7 @@ ] }, { - "id": 84, + "id": 82, "meta": "...", "name": "channelmap", "type": "A->A", @@ -7499,7 +7433,7 @@ ] }, { - "id": 85, + "id": 83, "meta": "...", "name": "channelsplit", "type": "A->N", @@ -7524,7 +7458,7 @@ ] }, { - "id": 86, + "id": 84, "meta": "...", "name": "chorus", "type": "A->A", @@ -7581,7 +7515,7 @@ ] }, { - "id": 87, + "id": 85, "meta": "...", "name": "compand", "type": "A->A", @@ -7646,7 +7580,7 @@ ] }, { - "id": 88, + "id": 86, "meta": "T.C", "name": "compensationdelay", "type": "A->A", @@ -7703,7 +7637,7 @@ ] }, { - "id": 89, + "id": 87, "meta": "T.C", "name": "crossfeed", "type": "A->A", @@ -7760,7 +7694,7 @@ ] }, { - "id": 90, + "id": 88, "meta": "TSC", "name": "crystalizer", "type": "A->A", @@ -7785,7 +7719,7 @@ ] }, { - "id": 91, + "id": 89, "meta": "T..", "name": "dcshift", "type": "A->A", @@ -7810,7 +7744,7 @@ ] }, { - "id": 92, + "id": 90, "meta": "T..", "name": "deesser", "type": "A->A", @@ -7865,7 +7799,7 @@ ] }, { - "id": 93, + "id": 91, "meta": "T.C", "name": "dialoguenhance", "type": "A->A", @@ -7898,7 +7832,7 @@ ] }, { - "id": 94, + "id": 92, "meta": "...", "name": "drmeter", "type": "A->A", @@ -7915,8 +7849,8 @@ ] }, { - "id": 95, - "meta": "TSC", + "id": 93, + "meta": "T.C", "name": "dynaudnorm", "type": "A->A", "description": "Dynamic Audio Normalizer.", @@ -8132,14 +8066,14 @@ ] }, { - "id": 96, + "id": 94, "meta": "...", "name": "earwax", "type": "A->A", "description": "Widen the stereo image." }, { - "id": 97, + "id": 95, "meta": "...", "name": "ebur128", "type": "A->N", @@ -8300,7 +8234,7 @@ ] }, { - "id": 98, + "id": 96, "meta": "TSC", "name": "equalizer", "type": "A->A", @@ -8617,7 +8551,7 @@ ] }, { - "id": 99, + "id": 97, "meta": "T.C", "name": "extrastereo", "type": "A->A", @@ -8642,7 +8576,7 @@ ] }, { - "id": 100, + "id": 98, "meta": "..C", "name": "firequalizer", "type": "A->A", @@ -8833,7 +8767,7 @@ ] }, { - "id": 101, + "id": 99, "meta": "...", "name": "flanger", "type": "A->A", @@ -8934,7 +8868,7 @@ ] }, { - "id": 102, + "id": 100, "meta": "...", "name": "haas", "type": "A->A", @@ -9065,7 +8999,7 @@ ] }, { - "id": 103, + "id": 101, "meta": "...", "name": "hdcd", "type": "A->A", @@ -9158,7 +9092,7 @@ ] }, { - "id": 104, + "id": 102, "meta": ".S.", "name": "headphone", "type": "N->A", @@ -9235,7 +9169,7 @@ ] }, { - "id": 105, + "id": 103, "meta": "TSC", "name": "highpass", "type": "A->A", @@ -9552,7 +9486,7 @@ ] }, { - "id": 106, + "id": 104, "meta": "TSC", "name": "highshelf", "type": "A->A", @@ -9885,7 +9819,7 @@ ] }, { - "id": 107, + "id": 105, "meta": "...", "name": "join", "type": "N->A", @@ -9918,7 +9852,7 @@ ] }, { - "id": 108, + "id": 106, "meta": "...", "name": "loudnorm", "type": "A->A", @@ -10077,7 +10011,7 @@ ] }, { - "id": 109, + "id": 107, "meta": "TSC", "name": "lowpass", "type": "A->A", @@ -10394,7 +10328,7 @@ ] }, { - "id": 110, + "id": 108, "meta": "TSC", "name": "lowshelf", "type": "A->A", @@ -10727,7 +10661,7 @@ ] }, { - "id": 111, + "id": 109, "meta": "...", "name": "mcompand", "type": "A->A", @@ -10744,7 +10678,7 @@ ] }, { - "id": 112, + "id": 110, "meta": "...", "name": "pan", "type": "A->A", @@ -10761,199 +10695,14 @@ ] }, { - "id": 113, + "id": 111, "meta": "...", "name": "replaygain", "type": "A->A", "description": "ReplayGain scanner." }, { - "id": 114, - "meta": "..C", - "name": "rubberband", - "type": "A->A", - "description": "Apply time-stretching and pitch-shifting.", - "params": [ - { - "name": "tempo", - "type": "double", - "desc": "set tempo scale factor (from 0.01 to 100) (default 1)", - "min": 0.01, - "max": 100.0, - "default": 1.0 - }, - { - "name": "pitch", - "type": "double", - "desc": "set pitch scale factor (from 0.01 to 100) (default 1)", - "min": 0.01, - "max": 100.0, - "default": 1.0 - }, - { - "name": "transients", - "type": "int", - "desc": "set transients (from 0 to INT_MAX) (default crisp)", - "min": 0, - "max": 2147483647, - "default": "crisp", - "options": [ - { - "value": "crisp", - "desc": "" - }, - { - "value": "mixed", - "desc": "" - }, - { - "value": "smooth", - "desc": "" - } - ] - }, - { - "name": "detector", - "type": "int", - "desc": "set detector (from 0 to INT_MAX) (default compound)", - "min": 0, - "max": 2147483647, - "default": "compound", - "options": [ - { - "value": "compound", - "desc": "" - }, - { - "value": "percussive", - "desc": "" - }, - { - "value": "soft", - "desc": "" - } - ] - }, - { - "name": "phase", - "type": "int", - "desc": "set phase (from 0 to INT_MAX) (default laminar)", - "min": 0, - "max": 2147483647, - "default": "laminar", - "options": [ - { - "value": "laminar", - "desc": "" - }, - { - "value": "independent", - "desc": "" - } - ] - }, - { - "name": "window", - "type": "int", - "desc": "set window (from 0 to INT_MAX) (default standard)", - "min": 0, - "max": 2147483647, - "default": "standard", - "options": [ - { - "value": "standard", - "desc": "" - }, - { - "value": "short", - "desc": "" - }, - { - "value": "long", - "desc": "" - } - ] - }, - { - "name": "smoothing", - "type": "int", - "desc": "set smoothing (from 0 to INT_MAX) (default off)", - "min": 0, - "max": 2147483647, - "default": "off", - "options": [ - { - "value": "off", - "desc": "" - }, - { - "value": "on", - "desc": "" - } - ] - }, - { - "name": "formant", - "type": "int", - "desc": "set formant (from 0 to INT_MAX) (default shifted)", - "min": 0, - "max": 2147483647, - "default": "shifted", - "options": [ - { - "value": "shifted", - "desc": "" - }, - { - "value": "preserved", - "desc": "" - } - ] - }, - { - "name": "pitchq", - "type": "int", - "desc": "set pitch quality (from 0 to INT_MAX) (default speed)", - "min": 0, - "max": 2147483647, - "default": "speed", - "options": [ - { - "value": "quality", - "desc": "" - }, - { - "value": "speed", - "desc": "" - }, - { - "value": "consistency", - "desc": "" - } - ] - }, - { - "name": "channels", - "type": "int", - "desc": "set channels (from 0 to INT_MAX) (default apart)", - "min": 0, - "max": 2147483647, - "default": "apart", - "options": [ - { - "value": "apart", - "desc": "" - }, - { - "value": "together", - "desc": "" - } - ] - } - ] - }, - { - "id": 115, + "id": 112, "meta": "..C", "name": "sidechaincompress", "type": "AA->A", @@ -11088,7 +10837,7 @@ ] }, { - "id": 116, + "id": 113, "meta": "T.C", "name": "sidechaingate", "type": "AA->A", @@ -11223,7 +10972,7 @@ ] }, { - "id": 117, + "id": 114, "meta": "...", "name": "silencedetect", "type": "A->A", @@ -11280,7 +11029,7 @@ ] }, { - "id": 118, + "id": 115, "meta": "...", "name": "silenceremove", "type": "A->A", @@ -11415,7 +11164,7 @@ ] }, { - "id": 119, + "id": 116, "meta": "T.C", "name": "speechnorm", "type": "A->A", @@ -11584,7 +11333,7 @@ ] }, { - "id": 120, + "id": 117, "meta": "T.C", "name": "stereotools", "type": "A->A", @@ -11827,7 +11576,7 @@ ] }, { - "id": 121, + "id": 118, "meta": "T.C", "name": "stereowiden", "type": "A->A", @@ -11868,7 +11617,7 @@ ] }, { - "id": 122, + "id": 119, "meta": "...", "name": "superequalizer", "type": "A->A", @@ -12021,8 +11770,8 @@ ] }, { - "id": 123, - "meta": ".SC", + "id": 120, + "meta": ".S.", "name": "surround", "type": "A->A", "description": "Apply audio surround upmix filter.", @@ -12530,7 +12279,7 @@ ] }, { - "id": 124, + "id": 121, "meta": "TSC", "name": "tiltshelf", "type": "A->A", @@ -12863,7 +12612,7 @@ ] }, { - "id": 125, + "id": 122, "meta": "TSC", "name": "treble", "type": "A->A", @@ -13196,7 +12945,7 @@ ] }, { - "id": 126, + "id": 123, "meta": "T..", "name": "tremolo", "type": "A->A", @@ -13221,7 +12970,7 @@ ] }, { - "id": 127, + "id": 124, "meta": "T..", "name": "vibrato", "type": "A->A", @@ -13246,7 +12995,7 @@ ] }, { - "id": 128, + "id": 125, "meta": "T.C", "name": "virtualbass", "type": "A->A", @@ -13271,7 +13020,7 @@ ] }, { - "id": 129, + "id": 126, "meta": "T.C", "name": "volume", "type": "A->A", @@ -13370,14 +13119,14 @@ ] }, { - "id": 130, + "id": 127, "meta": "...", "name": "volumedetect", "type": "A->A", "description": "Detect audio volume." }, { - "id": 131, + "id": 128, "meta": "...", "name": "aevalsrc", "type": "|->A", @@ -13458,96 +13207,7 @@ ] }, { - "id": 132, - "meta": "...", - "name": "afdelaysrc", - "type": "|->A", - "description": "Generate a Fractional delay FIR coefficients.", - "params": [ - { - "name": "delay", - "type": "double", - "desc": "set fractional delay (from 0 to 32767) (default 0)", - "min": 0.0, - "max": 32767.0, - "default": 0.0 - }, - { - "name": "d", - "type": "double", - "desc": "set fractional delay (from 0 to 32767) (default 0)", - "min": 0.0, - "max": 32767.0, - "default": 0.0 - }, - { - "name": "sample_rate", - "type": "int", - "desc": "set sample rate (from 1 to INT_MAX) (default 44100)", - "min": 1, - "max": 2147483647, - "default": 44100 - }, - { - "name": "r", - "type": "int", - "desc": "set sample rate (from 1 to INT_MAX) (default 44100)", - "min": 1, - "max": 2147483647, - "default": 44100 - }, - { - "name": "nb_samples", - "type": "int", - "desc": "set the number of samples per requested frame (from 1 to INT_MAX) (default 1024)", - "min": 1, - "max": 2147483647, - "default": 1024 - }, - { - "name": "n", - "type": "int", - "desc": "set the number of samples per requested frame (from 1 to INT_MAX) (default 1024)", - "min": 1, - "max": 2147483647, - "default": 1024 - }, - { - "name": "taps", - "type": "int", - "desc": "set number of taps for delay filter (from 0 to 32768) (default 0)", - "min": 0, - "max": 32768, - "default": 0 - }, - { - "name": "t", - "type": "int", - "desc": "set number of taps for delay filter (from 0 to 32768) (default 0)", - "min": 0, - "max": 32768, - "default": 0 - }, - { - "name": "channel_layout", - "type": "string", - "desc": "set channel layout (default \"stereo\")", - "min": null, - "max": null, - "default": "stereo" - }, - { - "name": "c", - "type": "string", - "desc": "set channel layout (default \"stereo\")", - "min": null, - "max": null, - "default": "stereo" - } - ] - }, - { - "id": 133, + "id": 129, "meta": "...", "name": "afirsrc", "type": "|->A", @@ -14024,7 +13684,7 @@ ] }, { - "id": 134, + "id": 130, "meta": "...", "name": "anoisesrc", "type": "|->A", @@ -14215,7 +13875,7 @@ ] }, { - "id": 135, + "id": 131, "meta": "...", "name": "anullsrc", "type": "|->A", @@ -14288,7 +13948,7 @@ ] }, { - "id": 136, + "id": 132, "meta": "...", "name": "hilbert", "type": "|->A", @@ -14717,7 +14377,7 @@ ] }, { - "id": 137, + "id": 133, "meta": "...", "name": "sinc", "type": "|->A", @@ -14822,7 +14482,7 @@ ] }, { - "id": 138, + "id": 134, "meta": "...", "name": "sine", "type": "|->A", @@ -14903,14 +14563,14 @@ ] }, { - "id": 139, + "id": 135, "meta": "...", "name": "anullsink", "type": "A->|", "description": "Do absolutely nothing with the input audio." }, { - "id": 140, + "id": 136, "meta": "...", "name": "addroi", "type": "V->V", @@ -14967,14 +14627,14 @@ ] }, { - "id": 141, + "id": 137, "meta": "...", "name": "alphaextract", "type": "V->V", "description": "Extract an alpha channel as a grayscale image component." }, { - "id": 142, + "id": 138, "meta": "T..", "name": "alphamerge", "type": "VV->V", @@ -14982,7 +14642,7 @@ "params": [] }, { - "id": 143, + "id": 139, "meta": "TSC", "name": "amplify", "type": "V->V", @@ -15047,7 +14707,7 @@ ] }, { - "id": 144, + "id": 140, "meta": "...", "name": "ass", "type": "V->V", @@ -15118,7 +14778,7 @@ ] }, { - "id": 145, + "id": 141, "meta": "TSC", "name": "atadenoise", "type": "V->V", @@ -15233,7 +14893,7 @@ ] }, { - "id": 146, + "id": 142, "meta": "T.C", "name": "avgblur", "type": "V->V", @@ -15266,40 +14926,7 @@ ] }, { - "id": 147, - "meta": "TSC", - "name": "backgroundkey", - "type": "V->V", - "description": "Turns a static background into transparency.", - "params": [ - { - "name": "threshold", - "type": "float", - "desc": "set the scene change threshold (from 0 to 1) (default 0.08)", - "min": 0.0, - "max": 1.0, - "default": 0.08 - }, - { - "name": "similarity", - "type": "float", - "desc": "set the similarity (from 0 to 1) (default 0.1)", - "min": 0.0, - "max": 1.0, - "default": 0.1 - }, - { - "name": "blend", - "type": "float", - "desc": "set the blend value (from 0 to 1) (default 0)", - "min": 0.0, - "max": 1.0, - "default": 0.0 - } - ] - }, - { - "id": 148, + "id": 143, "meta": "T.C", "name": "bbox", "type": "V->V", @@ -15316,7 +14943,7 @@ ] }, { - "id": 149, + "id": 144, "meta": "...", "name": "bench", "type": "V->V", @@ -15343,7 +14970,7 @@ ] }, { - "id": 150, + "id": 145, "meta": "TSC", "name": "bilateral", "type": "V->V", @@ -15376,7 +15003,7 @@ ] }, { - "id": 151, + "id": 146, "meta": "T..", "name": "bitplanenoise", "type": "V->V", @@ -15401,7 +15028,7 @@ ] }, { - "id": 152, + "id": 147, "meta": ".S.", "name": "blackdetect", "type": "V->V", @@ -15458,7 +15085,7 @@ ] }, { - "id": 153, + "id": 148, "meta": "...", "name": "blackframe", "type": "V->V", @@ -15491,7 +15118,7 @@ ] }, { - "id": 154, + "id": 149, "meta": "TSC", "name": "blend", "type": "VV->V", @@ -16470,7 +16097,7 @@ ] }, { - "id": 155, + "id": 150, "meta": "...", "name": "blockdetect", "type": "V->V", @@ -16503,7 +16130,7 @@ ] }, { - "id": 156, + "id": 151, "meta": "...", "name": "blurdetect", "type": "V->V", @@ -16568,7 +16195,7 @@ ] }, { - "id": 157, + "id": 152, "meta": "TS.", "name": "bm3d", "type": "N->V", @@ -16675,7 +16302,7 @@ ] }, { - "id": 158, + "id": 153, "meta": "T..", "name": "boxblur", "type": "V->V", @@ -16780,7 +16407,7 @@ ] }, { - "id": 159, + "id": 154, "meta": "TS.", "name": "bwdif", "type": "V->V", @@ -16847,7 +16474,7 @@ ] }, { - "id": 160, + "id": 155, "meta": "TSC", "name": "cas", "type": "V->V", @@ -16872,7 +16499,7 @@ ] }, { - "id": 161, + "id": 156, "meta": "TSC", "name": "chromahold", "type": "V->V", @@ -16913,7 +16540,7 @@ ] }, { - "id": 162, + "id": 157, "meta": "TSC", "name": "chromakey", "type": "V->V", @@ -16954,7 +16581,7 @@ ] }, { - "id": 163, + "id": 158, "meta": "TSC", "name": "chromanr", "type": "V->V", @@ -17045,7 +16672,7 @@ ] }, { - "id": 164, + "id": 159, "meta": "TSC", "name": "chromashift", "type": "V->V", @@ -17104,7 +16731,7 @@ ] }, { - "id": 165, + "id": 160, "meta": "...", "name": "ciescope", "type": "V->V", @@ -17339,7 +16966,7 @@ ] }, { - "id": 166, + "id": 161, "meta": "T..", "name": "codecview", "type": "V->V", @@ -17466,7 +17093,7 @@ ] }, { - "id": 167, + "id": 162, "meta": "TSC", "name": "colorbalance", "type": "V->V", @@ -17555,7 +17182,7 @@ ] }, { - "id": 168, + "id": 163, "meta": "TSC", "name": "colorchannelmixer", "type": "V->V", @@ -17738,7 +17365,7 @@ ] }, { - "id": 169, + "id": 164, "meta": "TSC", "name": "colorcontrast", "type": "V->V", @@ -17803,7 +17430,7 @@ ] }, { - "id": 170, + "id": 165, "meta": "TSC", "name": "colorcorrect", "type": "V->V", @@ -17878,7 +17505,7 @@ ] }, { - "id": 171, + "id": 166, "meta": "TSC", "name": "colorize", "type": "V->V", @@ -17919,7 +17546,7 @@ ] }, { - "id": 172, + "id": 167, "meta": "TSC", "name": "colorkey", "type": "V->V", @@ -17952,7 +17579,7 @@ ] }, { - "id": 173, + "id": 168, "meta": "TSC", "name": "colorhold", "type": "V->V", @@ -17985,7 +17612,7 @@ ] }, { - "id": 174, + "id": 169, "meta": "TSC", "name": "colorlevels", "type": "V->V", @@ -18160,7 +17787,7 @@ ] }, { - "id": 175, + "id": 170, "meta": "TSC", "name": "colormap", "type": "VVV->V", @@ -18221,7 +17848,7 @@ ] }, { - "id": 176, + "id": 171, "meta": "TS.", "name": "colormatrix", "type": "V->V", @@ -18314,7 +17941,7 @@ ] }, { - "id": 177, + "id": 172, "meta": "TS.", "name": "colorspace", "type": "V->V", @@ -18893,7 +18520,7 @@ ] }, { - "id": 178, + "id": 173, "meta": "TSC", "name": "colortemperature", "type": "V->V", @@ -18926,7 +18553,7 @@ ] }, { - "id": 179, + "id": 174, "meta": "TSC", "name": "convolution", "type": "V->V", @@ -19119,7 +18746,7 @@ ] }, { - "id": 180, + "id": 175, "meta": "TS.", "name": "convolve", "type": "VV->V", @@ -19162,63 +18789,14 @@ ] }, { - "id": 181, + "id": 176, "meta": "...", "name": "copy", "type": "V->V", "description": "Copy the input video unchanged to the output." }, { - "id": 182, - "meta": "...", - "name": "coreimage", - "type": "V->V", - "description": "Video filtering using CoreImage API.", - "params": [ - { - "name": "list_filters", - "type": "boolean", - "desc": "list available filters (default false)", - "min": null, - "max": null, - "default": "false" - }, - { - "name": "list_generators", - "type": "boolean", - "desc": "list available generators (default false)", - "min": null, - "max": null, - "default": "false" - }, - { - "name": "filter", - "type": "string", - "desc": "names and options of filters to apply", - "min": null, - "max": null, - "default": null - }, - { - "name": "output_rect", - "type": "string", - "desc": "output rectangle within output image", - "min": null, - "max": null, - "default": null - } - ] - }, - { - "id": 183, - "meta": "T..", - "name": "corr", - "type": "VV->V", - "description": "Calculate the correlation between two video streams.", - "params": [] - }, - { - "id": 184, + "id": 177, "meta": "...", "name": "cover_rect", "type": "V->V", @@ -19253,7 +18831,7 @@ ] }, { - "id": 185, + "id": 178, "meta": "..C", "name": "crop", "type": "V->V", @@ -19326,8 +18904,8 @@ ] }, { - "id": 186, - "meta": "T.C", + "id": 179, + "meta": "T..", "name": "cropdetect", "type": "V->V", "description": "Auto-detect crop size.", @@ -19425,7 +19003,7 @@ ] }, { - "id": 187, + "id": 180, "meta": "...", "name": "cue", "type": "V->V", @@ -19458,7 +19036,7 @@ ] }, { - "id": 188, + "id": 181, "meta": "TSC", "name": "curves", "type": "V->V", @@ -19627,7 +19205,7 @@ ] }, { - "id": 189, + "id": 182, "meta": ".SC", "name": "datascope", "type": "V->V", @@ -19732,7 +19310,7 @@ ] }, { - "id": 190, + "id": 183, "meta": "T.C", "name": "dblur", "type": "V->V", @@ -19765,7 +19343,7 @@ ] }, { - "id": 191, + "id": 184, "meta": "TS.", "name": "dctdnoiz", "type": "V->V", @@ -19822,7 +19400,7 @@ ] }, { - "id": 192, + "id": 185, "meta": "TSC", "name": "deband", "type": "V->V", @@ -19927,7 +19505,7 @@ ] }, { - "id": 193, + "id": 186, "meta": "T.C", "name": "deblock", "type": "V->V", @@ -20002,7 +19580,7 @@ ] }, { - "id": 194, + "id": 187, "meta": "...", "name": "decimate", "type": "N->V", @@ -20075,7 +19653,7 @@ ] }, { - "id": 195, + "id": 188, "meta": "TS.", "name": "deconvolve", "type": "VV->V", @@ -20118,7 +19696,7 @@ ] }, { - "id": 196, + "id": 189, "meta": "TS.", "name": "dedot", "type": "V->V", @@ -20177,7 +19755,7 @@ ] }, { - "id": 197, + "id": 190, "meta": "TSC", "name": "deflate", "type": "V->V", @@ -20218,7 +19796,7 @@ ] }, { - "id": 198, + "id": 191, "meta": "...", "name": "deflicker", "type": "V->V", @@ -20327,7 +19905,7 @@ ] }, { - "id": 199, + "id": 192, "meta": "...", "name": "dejudder", "type": "V->V", @@ -20344,7 +19922,7 @@ ] }, { - "id": 200, + "id": 193, "meta": "T..", "name": "delogo", "type": "V->V", @@ -20393,7 +19971,7 @@ ] }, { - "id": 201, + "id": 194, "meta": "T..", "name": "derain", "type": "V->V", @@ -20458,7 +20036,7 @@ ] }, { - "id": 202, + "id": 195, "meta": "...", "name": "deshake", "type": "V->V", @@ -20591,7 +20169,7 @@ ] }, { - "id": 203, + "id": 196, "meta": "TSC", "name": "despill", "type": "V->V", @@ -20674,7 +20252,7 @@ ] }, { - "id": 204, + "id": 197, "meta": "...", "name": "detelecine", "type": "V->V", @@ -20725,7 +20303,7 @@ ] }, { - "id": 205, + "id": 198, "meta": "TSC", "name": "dilation", "type": "V->V", @@ -20774,7 +20352,7 @@ ] }, { - "id": 206, + "id": 199, "meta": "T..", "name": "displace", "type": "VVV->V", @@ -20809,7 +20387,7 @@ ] }, { - "id": 207, + "id": 200, "meta": "...", "name": "dnn_classify", "type": "V->V", @@ -20898,7 +20476,7 @@ ] }, { - "id": 208, + "id": 201, "meta": "...", "name": "dnn_detect", "type": "V->V", @@ -20979,7 +20557,7 @@ ] }, { - "id": 209, + "id": 202, "meta": "...", "name": "dnn_processing", "type": "V->V", @@ -21050,7 +20628,7 @@ ] }, { - "id": 210, + "id": 203, "meta": ".S.", "name": "doubleweave", "type": "V->V", @@ -21085,7 +20663,7 @@ ] }, { - "id": 211, + "id": 204, "meta": "T.C", "name": "drawbox", "type": "V->V", @@ -21190,7 +20768,7 @@ ] }, { - "id": 212, + "id": 205, "meta": "...", "name": "drawgraph", "type": "V->V", @@ -21371,7 +20949,7 @@ ] }, { - "id": 213, + "id": 206, "meta": "T.C", "name": "drawgrid", "type": "V->V", @@ -21468,7 +21046,7 @@ ] }, { - "id": 214, + "id": 207, "meta": "T.C", "name": "drawtext", "type": "V->V", @@ -21809,7 +21387,7 @@ ] }, { - "id": 215, + "id": 208, "meta": "T..", "name": "edgedetect", "type": "V->V", @@ -21890,7 +21468,7 @@ ] }, { - "id": 216, + "id": 209, "meta": "...", "name": "elbg", "type": "V->V", @@ -21963,7 +21541,7 @@ ] }, { - "id": 217, + "id": 210, "meta": "T..", "name": "entropy", "type": "V->V", @@ -21990,7 +21568,7 @@ ] }, { - "id": 218, + "id": 211, "meta": ".S.", "name": "epx", "type": "V->V", @@ -22007,7 +21585,7 @@ ] }, { - "id": 219, + "id": 212, "meta": "T.C", "name": "eq", "type": "V->V", @@ -22098,7 +21676,7 @@ ] }, { - "id": 220, + "id": 213, "meta": "TSC", "name": "erosion", "type": "V->V", @@ -22147,7 +21725,7 @@ ] }, { - "id": 221, + "id": 214, "meta": "TSC", "name": "estdif", "type": "V->V", @@ -22276,7 +21854,7 @@ ] }, { - "id": 222, + "id": 215, "meta": "TSC", "name": "exposure", "type": "V->V", @@ -22301,7 +21879,7 @@ ] }, { - "id": 223, + "id": 216, "meta": "...", "name": "extractplanes", "type": "V->N", @@ -22348,7 +21926,7 @@ ] }, { - "id": 224, + "id": 217, "meta": "TS.", "name": "fade", "type": "V->V", @@ -22481,7 +22059,7 @@ ] }, { - "id": 225, + "id": 218, "meta": "..C", "name": "feedback", "type": "VV->VV", @@ -22522,7 +22100,7 @@ ] }, { - "id": 226, + "id": 219, "meta": "TSC", "name": "fftdnoiz", "type": "V->V", @@ -22703,7 +22281,7 @@ ] }, { - "id": 227, + "id": 220, "meta": "TS.", "name": "fftfilt", "type": "V->V", @@ -22778,7 +22356,7 @@ ] }, { - "id": 228, + "id": 221, "meta": "...", "name": "field", "type": "V->V", @@ -22805,7 +22383,7 @@ ] }, { - "id": 229, + "id": 222, "meta": "...", "name": "fieldhint", "type": "V->V", @@ -22844,7 +22422,7 @@ ] }, { - "id": 230, + "id": 223, "meta": "...", "name": "fieldmatch", "type": "N->V", @@ -23055,7 +22633,7 @@ ] }, { - "id": 231, + "id": 224, "meta": "T..", "name": "fieldorder", "type": "V->V", @@ -23082,7 +22660,7 @@ ] }, { - "id": 232, + "id": 225, "meta": "T.C", "name": "fillborders", "type": "V->V", @@ -23169,7 +22747,7 @@ ] }, { - "id": 233, + "id": 226, "meta": "...", "name": "find_rect", "type": "V->V", @@ -23242,7 +22820,7 @@ ] }, { - "id": 234, + "id": 227, "meta": "T..", "name": "floodfill", "type": "V->V", @@ -23331,7 +22909,7 @@ ] }, { - "id": 235, + "id": 228, "meta": "...", "name": "format", "type": "V->V", @@ -23348,7 +22926,7 @@ ] }, { - "id": 236, + "id": 229, "meta": "...", "name": "fps", "type": "V->V", @@ -23421,7 +22999,7 @@ ] }, { - "id": 237, + "id": 230, "meta": "...", "name": "framepack", "type": "VV->V", @@ -23460,7 +23038,7 @@ ] }, { - "id": 238, + "id": 231, "meta": ".S.", "name": "framerate", "type": "V->V", @@ -23519,7 +23097,7 @@ ] }, { - "id": 239, + "id": 232, "meta": "T..", "name": "framestep", "type": "V->V", @@ -23536,7 +23114,7 @@ ] }, { - "id": 240, + "id": 233, "meta": "...", "name": "freezedetect", "type": "V->V", @@ -23577,7 +23155,7 @@ ] }, { - "id": 241, + "id": 234, "meta": "...", "name": "freezeframes", "type": "VV->V", @@ -23610,32 +23188,7 @@ ] }, { - "id": 242, - "meta": "T.C", - "name": "frei0r", - "type": "V->V", - "description": "Apply a frei0r effect.", - "params": [ - { - "name": "filter_name", - "type": "string", - "desc": "", - "min": null, - "max": null, - "default": null - }, - { - "name": "filter_params", - "type": "string", - "desc": "", - "min": null, - "max": null, - "default": null - } - ] - }, - { - "id": 243, + "id": 235, "meta": "T..", "name": "fspp", "type": "V->V", @@ -23676,7 +23229,7 @@ ] }, { - "id": 244, + "id": 236, "meta": "TSC", "name": "gblur", "type": "V->V", @@ -23717,7 +23270,7 @@ ] }, { - "id": 245, + "id": 237, "meta": "TS.", "name": "geq", "type": "V->V", @@ -23890,7 +23443,7 @@ ] }, { - "id": 246, + "id": 238, "meta": "T..", "name": "gradfun", "type": "V->V", @@ -23915,7 +23468,7 @@ ] }, { - "id": 247, + "id": 239, "meta": "...", "name": "graphmonitor", "type": "V->V", @@ -24156,7 +23709,7 @@ ] }, { - "id": 248, + "id": 240, "meta": "TS.", "name": "grayworld", "type": "V->V", @@ -24164,7 +23717,7 @@ "params": [] }, { - "id": 249, + "id": 241, "meta": "TS.", "name": "greyedge", "type": "V->V", @@ -24197,7 +23750,7 @@ ] }, { - "id": 250, + "id": 242, "meta": "TSC", "name": "guided", "type": "N->V", @@ -24274,7 +23827,7 @@ ] }, { - "id": 251, + "id": 243, "meta": "TSC", "name": "haldclut", "type": "VV->V", @@ -24331,7 +23884,7 @@ ] }, { - "id": 252, + "id": 244, "meta": "TS.", "name": "hflip", "type": "V->V", @@ -24339,7 +23892,7 @@ "params": [] }, { - "id": 253, + "id": 245, "meta": "T..", "name": "histeq", "type": "V->V", @@ -24386,7 +23939,7 @@ ] }, { - "id": 254, + "id": 246, "meta": "...", "name": "histogram", "type": "V->V", @@ -24639,7 +24192,7 @@ ] }, { - "id": 255, + "id": 247, "meta": "TSC", "name": "hqdn3d", "type": "V->V", @@ -24680,7 +24233,7 @@ ] }, { - "id": 256, + "id": 248, "meta": ".S.", "name": "hqx", "type": "V->V", @@ -24697,7 +24250,7 @@ ] }, { - "id": 257, + "id": 249, "meta": ".S.", "name": "hstack", "type": "N->V", @@ -24722,7 +24275,7 @@ ] }, { - "id": 258, + "id": 250, "meta": "TSC", "name": "hsvhold", "type": "V->V", @@ -24771,7 +24324,7 @@ ] }, { - "id": 259, + "id": 251, "meta": "TSC", "name": "hsvkey", "type": "V->V", @@ -24820,7 +24373,7 @@ ] }, { - "id": 260, + "id": 252, "meta": "T.C", "name": "hue", "type": "V->V", @@ -24861,7 +24414,7 @@ ] }, { - "id": 261, + "id": 253, "meta": "TSC", "name": "huesaturation", "type": "V->V", @@ -24972,14 +24525,14 @@ ] }, { - "id": 262, + "id": 254, "meta": "...", "name": "hwdownload", "type": "V->V", "description": "Download a hardware frame to a normal frame" }, { - "id": 263, + "id": 255, "meta": "...", "name": "hwmap", "type": "V->V", @@ -25030,7 +24583,7 @@ ] }, { - "id": 264, + "id": 256, "meta": "...", "name": "hwupload", "type": "V->V", @@ -25047,7 +24600,7 @@ ] }, { - "id": 265, + "id": 257, "meta": "T..", "name": "hysteresis", "type": "VV->V", @@ -25072,7 +24625,7 @@ ] }, { - "id": 266, + "id": 258, "meta": "TS.", "name": "identity", "type": "VV->V", @@ -25080,7 +24633,7 @@ "params": [] }, { - "id": 267, + "id": 259, "meta": "...", "name": "idet", "type": "V->V", @@ -25129,7 +24682,7 @@ ] }, { - "id": 268, + "id": 260, "meta": "T.C", "name": "il", "type": "V->V", @@ -25366,7 +24919,7 @@ ] }, { - "id": 269, + "id": 261, "meta": "TSC", "name": "inflate", "type": "V->V", @@ -25407,7 +24960,7 @@ ] }, { - "id": 270, + "id": 262, "meta": "...", "name": "interlace", "type": "V->V", @@ -25456,7 +25009,7 @@ ] }, { - "id": 271, + "id": 263, "meta": "...", "name": "interleave", "type": "N->V", @@ -25503,7 +25056,7 @@ ] }, { - "id": 272, + "id": 264, "meta": "...", "name": "kerndeint", "type": "V->V", @@ -25552,7 +25105,7 @@ ] }, { - "id": 273, + "id": 265, "meta": "TSC", "name": "kirsch", "type": "V->V", @@ -25585,7 +25138,7 @@ ] }, { - "id": 274, + "id": 266, "meta": "TSC", "name": "lagfun", "type": "V->V", @@ -25610,14 +25163,14 @@ ] }, { - "id": 275, + "id": 267, "meta": "T..", "name": "latency", "type": "V->V", "description": "Report video filtering latency." }, { - "id": 276, + "id": 268, "meta": "TSC", "name": "lenscorrection", "type": "V->V", @@ -25684,128 +25237,7 @@ ] }, { - "id": 277, - "meta": "...", - "name": "libvmaf", - "type": "VV->V", - "description": "Calculate the VMAF between two video streams.", - "params": [ - { - "name": "model_path", - "type": "string", - "desc": "use model='path=...'.", - "min": null, - "max": null, - "default": null - }, - { - "name": "log_path", - "type": "string", - "desc": "Set the file path to be used to write log.", - "min": null, - "max": null, - "default": null - }, - { - "name": "log_fmt", - "type": "string", - "desc": "Set the format of the log (csv, json, xml, or sub). (default \"xml\")", - "min": null, - "max": null, - "default": "xml" - }, - { - "name": "enable_transform", - "type": "boolean", - "desc": "use model='enable_transform=true'. (default false)", - "min": null, - "max": null, - "default": "false" - }, - { - "name": "phone_model", - "type": "boolean", - "desc": "use model='enable_transform=true'. (default false)", - "min": null, - "max": null, - "default": "false" - }, - { - "name": "psnr", - "type": "boolean", - "desc": "use feature='name=psnr'. (default false)", - "min": null, - "max": null, - "default": "false" - }, - { - "name": "ssim", - "type": "boolean", - "desc": "use feature='name=float_ssim'. (default false)", - "min": null, - "max": null, - "default": "false" - }, - { - "name": "ms_ssim", - "type": "boolean", - "desc": "use feature='name=float_ms_ssim'. (default false)", - "min": null, - "max": null, - "default": "false" - }, - { - "name": "pool", - "type": "string", - "desc": "Set the pool method to be used for computing vmaf.", - "min": null, - "max": null, - "default": null - }, - { - "name": "n_threads", - "type": "int", - "desc": "Set number of threads to be used when computing vmaf. (from 0 to UINT32_MAX) (default 0)", - "min": 0, - "max": "UINT32_MAX", - "default": "0" - }, - { - "name": "n_subsample", - "type": "int", - "desc": "Set interval for frame subsampling used when computing vmaf. (from 1 to UINT32_MAX) (default 1)", - "min": 1, - "max": "UINT32_MAX", - "default": "1" - }, - { - "name": "enable_conf_interval", - "type": "boolean", - "desc": "model='enable_conf_interval=true'. (default false)", - "min": null, - "max": null, - "default": "false" - }, - { - "name": "model", - "type": "string", - "desc": "Set the model to be used for computing vmaf. (default \"version=vmaf_v0.6.1\")", - "min": null, - "max": null, - "default": "version=vmaf_v0.6.1" - }, - { - "name": "feature", - "type": "string", - "desc": "Set the feature to be used for computing vmaf.", - "min": null, - "max": null, - "default": null - } - ] - }, - { - "id": 278, + "id": 269, "meta": "TSC", "name": "limitdiff", "type": "N->V", @@ -25846,7 +25278,7 @@ ] }, { - "id": 279, + "id": 270, "meta": "TSC", "name": "limiter", "type": "V->V", @@ -25879,7 +25311,7 @@ ] }, { - "id": 280, + "id": 271, "meta": "...", "name": "loop", "type": "V->V", @@ -25912,7 +25344,7 @@ ] }, { - "id": 281, + "id": 272, "meta": "TSC", "name": "lumakey", "type": "V->V", @@ -25945,7 +25377,7 @@ ] }, { - "id": 282, + "id": 273, "meta": "TSC", "name": "lut", "type": "V->V", @@ -26042,7 +25474,7 @@ ] }, { - "id": 283, + "id": 274, "meta": "TSC", "name": "lut1d", "type": "V->V", @@ -26089,7 +25521,7 @@ ] }, { - "id": 284, + "id": 275, "meta": "TSC", "name": "lut2", "type": "VV->V", @@ -26138,7 +25570,7 @@ ] }, { - "id": 285, + "id": 276, "meta": "TSC", "name": "lut3d", "type": "V->V", @@ -26203,7 +25635,7 @@ ] }, { - "id": 286, + "id": 277, "meta": "TSC", "name": "lutrgb", "type": "V->V", @@ -26300,7 +25732,7 @@ ] }, { - "id": 287, + "id": 278, "meta": "TSC", "name": "lutyuv", "type": "V->V", @@ -26397,7 +25829,7 @@ ] }, { - "id": 288, + "id": 279, "meta": "TSC", "name": "maskedclamp", "type": "VVV->V", @@ -26430,7 +25862,7 @@ ] }, { - "id": 289, + "id": 280, "meta": "TSC", "name": "maskedmax", "type": "VVV->V", @@ -26447,7 +25879,7 @@ ] }, { - "id": 290, + "id": 281, "meta": "TSC", "name": "maskedmerge", "type": "VVV->V", @@ -26464,7 +25896,7 @@ ] }, { - "id": 291, + "id": 282, "meta": "TSC", "name": "maskedmin", "type": "VVV->V", @@ -26481,7 +25913,7 @@ ] }, { - "id": 292, + "id": 283, "meta": "TSC", "name": "maskedthreshold", "type": "VV->V", @@ -26524,7 +25956,7 @@ ] }, { - "id": 293, + "id": 284, "meta": "TSC", "name": "maskfun", "type": "V->V", @@ -26573,7 +26005,7 @@ ] }, { - "id": 294, + "id": 285, "meta": "TSC", "name": "median", "type": "V->V", @@ -26614,7 +26046,7 @@ ] }, { - "id": 295, + "id": 286, "meta": "...", "name": "mergeplanes", "type": "N->V", @@ -26703,7 +26135,7 @@ ] }, { - "id": 296, + "id": 287, "meta": "...", "name": "mestimate", "type": "V->V", @@ -26774,7 +26206,7 @@ ] }, { - "id": 297, + "id": 288, "meta": "T..", "name": "metadata", "type": "V->V", @@ -26891,7 +26323,7 @@ ] }, { - "id": 298, + "id": 289, "meta": "T..", "name": "midequalizer", "type": "VV->V", @@ -26908,7 +26340,7 @@ ] }, { - "id": 299, + "id": 290, "meta": "...", "name": "minterpolate", "type": "V->V", @@ -27079,7 +26511,7 @@ ] }, { - "id": 300, + "id": 291, "meta": "TSC", "name": "mix", "type": "N->V", @@ -27142,7 +26574,7 @@ ] }, { - "id": 301, + "id": 292, "meta": "TSC", "name": "monochrome", "type": "V->V", @@ -27183,7 +26615,7 @@ ] }, { - "id": 302, + "id": 293, "meta": "T.C", "name": "morpho", "type": "VV->V", @@ -27256,7 +26688,7 @@ ] }, { - "id": 303, + "id": 294, "meta": "...", "name": "mpdecimate", "type": "V->V", @@ -27297,7 +26729,7 @@ ] }, { - "id": 304, + "id": 295, "meta": "TS.", "name": "msad", "type": "VV->V", @@ -27305,7 +26737,7 @@ "params": [] }, { - "id": 305, + "id": 296, "meta": "TSC", "name": "multiply", "type": "VV->V", @@ -27338,7 +26770,7 @@ ] }, { - "id": 306, + "id": 297, "meta": "TSC", "name": "negate", "type": "V->V", @@ -27393,7 +26825,7 @@ ] }, { - "id": 307, + "id": 298, "meta": "TS.", "name": "nlmeans", "type": "V->V", @@ -27442,7 +26874,7 @@ ] }, { - "id": 308, + "id": 299, "meta": "TSC", "name": "nnedi", "type": "V->V", @@ -27661,7 +27093,7 @@ ] }, { - "id": 309, + "id": 300, "meta": "...", "name": "noformat", "type": "V->V", @@ -27678,7 +27110,7 @@ ] }, { - "id": 310, + "id": 301, "meta": "TS.", "name": "noise", "type": "V->V", @@ -28067,7 +27499,7 @@ ] }, { - "id": 311, + "id": 302, "meta": "T.C", "name": "normalize", "type": "V->V", @@ -28116,55 +27548,14 @@ ] }, { - "id": 312, + "id": 303, "meta": "...", "name": "null", "type": "V->V", "description": "Pass the source unchanged to the output." }, { - "id": 313, - "meta": "...", - "name": "ocr", - "type": "V->V", - "description": "Optical Character Recognition.", - "params": [ - { - "name": "datapath", - "type": "string", - "desc": "set datapath", - "min": null, - "max": null, - "default": null - }, - { - "name": "language", - "type": "string", - "desc": "set language (default \"eng\")", - "min": null, - "max": null, - "default": "eng" - }, - { - "name": "whitelist", - "type": "string", - "desc": "set character whitelist (default \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.:;,-+_!?\"'[]{}()<>|/\\=*&%$#@!~ \")", - "min": null, - "max": null, - "default": "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.:;,-+_!?[]{}(" - }, - { - "name": "blacklist", - "type": "string", - "desc": "set character blacklist (default \"\")", - "min": null, - "max": null, - "default": "" - } - ] - }, - { - "id": 314, + "id": 304, "meta": "T.C", "name": "oscilloscope", "type": "V->V", @@ -28277,7 +27668,7 @@ ] }, { - "id": 315, + "id": 305, "meta": "TSC", "name": "overlay", "type": "VV->V", @@ -28418,7 +27809,7 @@ ] }, { - "id": 316, + "id": 306, "meta": "T..", "name": "owdenoise", "type": "V->V", @@ -28467,7 +27858,7 @@ ] }, { - "id": 317, + "id": 307, "meta": "...", "name": "pad", "type": "V->V", @@ -28558,7 +27949,7 @@ ] }, { - "id": 318, + "id": 308, "meta": "...", "name": "palettegen", "type": "V->V", @@ -28613,7 +28004,7 @@ ] }, { - "id": 319, + "id": 309, "meta": "...", "name": "paletteuse", "type": "VV->V", @@ -28710,7 +28101,7 @@ ] }, { - "id": 320, + "id": 310, "meta": "T.C", "name": "perms", "type": "V->V", @@ -28757,7 +28148,7 @@ ] }, { - "id": 321, + "id": 311, "meta": "TS.", "name": "perspective", "type": "V->V", @@ -28884,7 +28275,7 @@ ] }, { - "id": 322, + "id": 312, "meta": "T.C", "name": "phase", "type": "V->V", @@ -28939,7 +28330,7 @@ ] }, { - "id": 323, + "id": 313, "meta": "...", "name": "photosensitivity", "type": "V->V", @@ -28996,14 +28387,14 @@ ] }, { - "id": 324, + "id": 314, "meta": "...", "name": "pixdesctest", "type": "V->V", "description": "Test pixel format definitions." }, { - "id": 325, + "id": 315, "meta": "TSC", "name": "pixelize", "type": "V->V", @@ -29104,7 +28495,7 @@ ] }, { - "id": 326, + "id": 316, "meta": "T.C", "name": "pixscope", "type": "V->V", @@ -29169,7 +28560,7 @@ ] }, { - "id": 327, + "id": 317, "meta": "T.C", "name": "pp", "type": "V->V", @@ -29186,7 +28577,7 @@ ] }, { - "id": 328, + "id": 318, "meta": "T..", "name": "pp7", "type": "V->V", @@ -29225,7 +28616,7 @@ ] }, { - "id": 329, + "id": 319, "meta": "TS.", "name": "premultiply", "type": "N->V", @@ -29250,7 +28641,7 @@ ] }, { - "id": 330, + "id": 320, "meta": "TSC", "name": "prewitt", "type": "V->V", @@ -29283,7 +28674,7 @@ ] }, { - "id": 331, + "id": 321, "meta": "TSC", "name": "pseudocolor", "type": "V->V", @@ -29496,7 +28887,7 @@ ] }, { - "id": 332, + "id": 322, "meta": "TS.", "name": "psnr", "type": "VV->V", @@ -29537,7 +28928,7 @@ ] }, { - "id": 333, + "id": 323, "meta": "...", "name": "pullup", "type": "V->V", @@ -29608,7 +28999,7 @@ ] }, { - "id": 334, + "id": 324, "meta": "T..", "name": "qp", "type": "V->V", @@ -29625,7 +29016,7 @@ ] }, { - "id": 335, + "id": 325, "meta": "...", "name": "random", "type": "V->V", @@ -29650,7 +29041,7 @@ ] }, { - "id": 336, + "id": 326, "meta": "TSC", "name": "readeia608", "type": "V->V", @@ -29699,7 +29090,7 @@ ] }, { - "id": 337, + "id": 327, "meta": "...", "name": "readvitc", "type": "V->V", @@ -29732,7 +29123,7 @@ ] }, { - "id": 338, + "id": 328, "meta": "..C", "name": "realtime", "type": "V->V", @@ -29757,7 +29148,7 @@ ] }, { - "id": 339, + "id": 329, "meta": ".S.", "name": "remap", "type": "VVV->V", @@ -29792,7 +29183,7 @@ ] }, { - "id": 340, + "id": 330, "meta": "TS.", "name": "removegrain", "type": "V->V", @@ -29833,7 +29224,7 @@ ] }, { - "id": 341, + "id": 331, "meta": "T..", "name": "removelogo", "type": "V->V", @@ -29858,21 +29249,21 @@ ] }, { - "id": 342, + "id": 332, "meta": "...", "name": "repeatfields", "type": "V->V", "description": "Hard repeat fields based on MPEG repeat field flag." }, { - "id": 343, + "id": 333, "meta": "...", "name": "reverse", "type": "V->V", "description": "Reverse a clip." }, { - "id": 344, + "id": 334, "meta": "TSC", "name": "rgbashift", "type": "V->V", @@ -29963,7 +29354,7 @@ ] }, { - "id": 345, + "id": 335, "meta": "TSC", "name": "roberts", "type": "V->V", @@ -29996,7 +29387,7 @@ ] }, { - "id": 346, + "id": 336, "meta": "TSC", "name": "rotate", "type": "V->V", @@ -30077,7 +29468,7 @@ ] }, { - "id": 347, + "id": 337, "meta": "T..", "name": "sab", "type": "V->V", @@ -30182,7 +29573,7 @@ ] }, { - "id": 348, + "id": 338, "meta": "..C", "name": "scale", "type": "V->V", @@ -30503,7 +29894,7 @@ ] }, { - "id": 349, + "id": 339, "meta": "..C", "name": "scale2ref", "type": "VV->VV", @@ -30824,7 +30215,7 @@ ] }, { - "id": 350, + "id": 340, "meta": "...", "name": "scdet", "type": "V->V", @@ -30865,7 +30256,7 @@ ] }, { - "id": 351, + "id": 341, "meta": "TSC", "name": "scharr", "type": "V->V", @@ -30898,7 +30289,7 @@ ] }, { - "id": 352, + "id": 342, "meta": "TSC", "name": "scroll", "type": "V->V", @@ -30955,7 +30346,7 @@ ] }, { - "id": 353, + "id": 343, "meta": "...", "name": "segment", "type": "V->N", @@ -30980,7 +30371,7 @@ ] }, { - "id": 354, + "id": 344, "meta": "...", "name": "select", "type": "V->N", @@ -31021,7 +30412,7 @@ ] }, { - "id": 355, + "id": 345, "meta": "TS.", "name": "selectivecolor", "type": "V->V", @@ -31128,7 +30519,7 @@ ] }, { - "id": 356, + "id": 346, "meta": "...", "name": "sendcmd", "type": "V->V", @@ -31169,14 +30560,14 @@ ] }, { - "id": 357, + "id": 347, "meta": "...", "name": "separatefields", "type": "V->V", "description": "Split input video frames into fields." }, { - "id": 358, + "id": 348, "meta": "...", "name": "setdar", "type": "V->V", @@ -31217,7 +30608,7 @@ ] }, { - "id": 359, + "id": 349, "meta": "...", "name": "setfield", "type": "V->V", @@ -31252,7 +30643,7 @@ ] }, { - "id": 360, + "id": 350, "meta": "...", "name": "setparams", "type": "V->V", @@ -31551,7 +30942,7 @@ ] }, { - "id": 361, + "id": 351, "meta": "...", "name": "setpts", "type": "V->V", @@ -31568,7 +30959,7 @@ ] }, { - "id": 362, + "id": 352, "meta": "...", "name": "setrange", "type": "V->V", @@ -31623,7 +31014,7 @@ ] }, { - "id": 363, + "id": 353, "meta": "...", "name": "setsar", "type": "V->V", @@ -31664,7 +31055,7 @@ ] }, { - "id": 364, + "id": 354, "meta": "...", "name": "settb", "type": "V->V", @@ -31689,7 +31080,7 @@ ] }, { - "id": 365, + "id": 355, "meta": "TSC", "name": "shear", "type": "V->V", @@ -31748,7 +31139,7 @@ ] }, { - "id": 366, + "id": 356, "meta": "...", "name": "showinfo", "type": "V->V", @@ -31765,7 +31156,7 @@ ] }, { - "id": 367, + "id": 357, "meta": "...", "name": "showpalette", "type": "V->V", @@ -31782,7 +31173,7 @@ ] }, { - "id": 368, + "id": 358, "meta": "T..", "name": "shuffleframes", "type": "V->V", @@ -31799,7 +31190,7 @@ ] }, { - "id": 369, + "id": 359, "meta": "TS.", "name": "shufflepixels", "type": "V->V", @@ -31936,7 +31327,7 @@ ] }, { - "id": 370, + "id": 360, "meta": "T..", "name": "shuffleplanes", "type": "V->V", @@ -31977,7 +31368,7 @@ ] }, { - "id": 371, + "id": 361, "meta": "T..", "name": "sidedata", "type": "V->V", @@ -32098,7 +31489,7 @@ ] }, { - "id": 372, + "id": 362, "meta": ".S.", "name": "signalstats", "type": "V->V", @@ -32167,7 +31558,7 @@ ] }, { - "id": 373, + "id": 363, "meta": "...", "name": "signature", "type": "N->V", @@ -32272,7 +31663,7 @@ ] }, { - "id": 374, + "id": 364, "meta": "...", "name": "siti", "type": "V->V", @@ -32289,7 +31680,7 @@ ] }, { - "id": 375, + "id": 365, "meta": "T..", "name": "smartblur", "type": "V->V", @@ -32394,7 +31785,7 @@ ] }, { - "id": 376, + "id": 366, "meta": "TSC", "name": "sobel", "type": "V->V", @@ -32427,7 +31818,7 @@ ] }, { - "id": 377, + "id": 367, "meta": "...", "name": "split", "type": "V->N", @@ -32444,7 +31835,7 @@ ] }, { - "id": 378, + "id": 368, "meta": "T.C", "name": "spp", "type": "V->V", @@ -32495,7 +31886,7 @@ ] }, { - "id": 379, + "id": 369, "meta": "...", "name": "sr", "type": "V->V", @@ -32550,7 +31941,7 @@ ] }, { - "id": 380, + "id": 370, "meta": "TS.", "name": "ssim", "type": "VV->V", @@ -32575,208 +31966,7 @@ ] }, { - "id": 381, - "meta": "...", - "name": "ssim360", - "type": "VV->V", - "description": "Calculate the SSIM between two 360 video streams.", - "params": [ - { - "name": "stats_file", - "type": "string", - "desc": "Set file where to store per-frame difference information", - "min": null, - "max": null, - "default": null - }, - { - "name": "f", - "type": "string", - "desc": "Set file where to store per-frame difference information", - "min": null, - "max": null, - "default": null - }, - { - "name": "compute_chroma", - "type": "int", - "desc": "Specifies if non-luma channels must be computed (from 0 to 1) (default 1)", - "min": 0, - "max": 1, - "default": 1 - }, - { - "name": "frame_skip_ratio", - "type": "int", - "desc": "Specifies the number of frames to be skipped from evaluation, for every evaluated frame (from 0 to 1e+06) (default 0)", - "min": 0, - "max": "1e+06", - "default": "0" - }, - { - "name": "ref_projection", - "type": "int", - "desc": "projection of the reference video (from 0 to 4) (default e)", - "min": 0, - "max": 4, - "default": "e", - "options": [ - { - "value": "e", - "desc": "equirectangular" - }, - { - "value": "equirect", - "desc": "equirectangular" - }, - { - "value": "c3x2", - "desc": "cubemap 3x2" - }, - { - "value": "c2x3", - "desc": "cubemap 2x3" - }, - { - "value": "barrel", - "desc": "barrel facebook's 360 format" - }, - { - "value": "barrelsplit", - "desc": "barrel split facebook's 360 format" - } - ] - }, - { - "name": "main_projection", - "type": "int", - "desc": "projection of the main video (from 0 to 5) (default 5)", - "min": 0, - "max": 5, - "default": 5, - "options": [ - { - "value": "e", - "desc": "equirectangular" - }, - { - "value": "equirect", - "desc": "equirectangular" - }, - { - "value": "c3x2", - "desc": "cubemap 3x2" - }, - { - "value": "c2x3", - "desc": "cubemap 2x3" - }, - { - "value": "barrel", - "desc": "barrel facebook's 360 format" - }, - { - "value": "barrelsplit", - "desc": "barrel split facebook's 360 format" - } - ] - }, - { - "name": "ref_stereo", - "type": "int", - "desc": "stereo format of the reference video (from 0 to 2) (default mono)", - "min": 0, - "max": 2, - "default": "mono", - "options": [ - { - "value": "mono", - "desc": "" - }, - { - "value": "tb", - "desc": "" - }, - { - "value": "lr", - "desc": "" - } - ] - }, - { - "name": "main_stereo", - "type": "int", - "desc": "stereo format of main video (from 0 to 3) (default 3)", - "min": 0, - "max": 3, - "default": 3, - "options": [ - { - "value": "mono", - "desc": "" - }, - { - "value": "tb", - "desc": "" - }, - { - "value": "lr", - "desc": "" - } - ] - }, - { - "name": "ref_pad", - "type": "float", - "desc": "Expansion (padding) coefficient for each cube face of the reference video (from 0 to 10) (default 0)", - "min": 0.0, - "max": 10.0, - "default": 0.0 - }, - { - "name": "main_pad", - "type": "float", - "desc": "Expansion (padding) coeffiecient for each cube face of the main video (from 0 to 10) (default 0)", - "min": 0.0, - "max": 10.0, - "default": 0.0 - }, - { - "name": "use_tape", - "type": "int", - "desc": "Specifies if the tape based SSIM 360 algorithm must be used independent of the input video types (from 0 to 1) (default 0)", - "min": 0, - "max": 1, - "default": 0 - }, - { - "name": "heatmap_str", - "type": "string", - "desc": "Heatmap data for view-based evaluation. For heatmap file format, please refer to EntSphericalVideoHeatmapData.", - "min": null, - "max": null, - "default": null - }, - { - "name": "default_heatmap_width", - "type": "int", - "desc": "Default heatmap dimension. Will be used when dimension is not specified in heatmap data. (from 1 to 4096) (default 32)", - "min": 1, - "max": 4096, - "default": 32 - }, - { - "name": "default_heatmap_height", - "type": "int", - "desc": "Default heatmap dimension. Will be used when dimension is not specified in heatmap data. (from 1 to 4096) (default 16)", - "min": 1, - "max": 4096, - "default": 16 - } - ] - }, - { - "id": 382, + "id": 371, "meta": ".S.", "name": "stereo3d", "type": "V->V", @@ -33025,7 +32215,7 @@ ] }, { - "id": 383, + "id": 372, "meta": "..C", "name": "streamselect", "type": "N->N", @@ -33050,7 +32240,7 @@ ] }, { - "id": 384, + "id": 373, "meta": "...", "name": "subtitles", "type": "V->V", @@ -33131,14 +32321,14 @@ ] }, { - "id": 385, + "id": 374, "meta": ".S.", "name": "super2xsai", "type": "V->V", "description": "Scale the input by 2x using the Super2xSaI pixel art algorithm." }, { - "id": 386, + "id": 375, "meta": "T.C", "name": "swaprect", "type": "V->V", @@ -33195,7 +32385,7 @@ ] }, { - "id": 387, + "id": 376, "meta": "T..", "name": "swapuv", "type": "V->V", @@ -33203,7 +32393,7 @@ "params": [] }, { - "id": 388, + "id": 377, "meta": "TSC", "name": "tblend", "type": "V->V", @@ -34182,7 +33372,7 @@ ] }, { - "id": 389, + "id": 378, "meta": "...", "name": "telecine", "type": "V->V", @@ -34225,7 +33415,7 @@ ] }, { - "id": 390, + "id": 379, "meta": "...", "name": "thistogram", "type": "V->V", @@ -34424,7 +33614,7 @@ ] }, { - "id": 391, + "id": 380, "meta": "TSC", "name": "threshold", "type": "VVVV->V", @@ -34441,8 +33631,8 @@ ] }, { - "id": 392, - "meta": "TS.", + "id": 381, + "meta": "T..", "name": "thumbnail", "type": "V->V", "description": "Select the most representative frame in a given sequence of consecutive frames.", @@ -34480,7 +33670,7 @@ ] }, { - "id": 393, + "id": 382, "meta": "...", "name": "tile", "type": "V->V", @@ -34545,7 +33735,7 @@ ] }, { - "id": 394, + "id": 383, "meta": "...", "name": "tinterlace", "type": "V->V", @@ -34596,7 +33786,7 @@ ] }, { - "id": 395, + "id": 384, "meta": "TSC", "name": "tlut2", "type": "V->V", @@ -34637,7 +33827,7 @@ ] }, { - "id": 396, + "id": 385, "meta": "TSC", "name": "tmedian", "type": "V->V", @@ -34670,7 +33860,7 @@ ] }, { - "id": 397, + "id": 386, "meta": "T..", "name": "tmidequalizer", "type": "V->V", @@ -34703,7 +33893,7 @@ ] }, { - "id": 398, + "id": 387, "meta": "TSC", "name": "tmix", "type": "V->V", @@ -34744,7 +33934,7 @@ ] }, { - "id": 399, + "id": 388, "meta": ".S.", "name": "tonemap", "type": "V->V", @@ -34815,7 +34005,7 @@ ] }, { - "id": 400, + "id": 389, "meta": "...", "name": "tpad", "type": "V->V", @@ -34900,7 +34090,7 @@ ] }, { - "id": 401, + "id": 390, "meta": ".S.", "name": "transpose", "type": "V->V", @@ -34957,7 +34147,7 @@ ] }, { - "id": 402, + "id": 391, "meta": "...", "name": "trim", "type": "V->V", @@ -35046,7 +34236,7 @@ ] }, { - "id": 403, + "id": 392, "meta": "TS.", "name": "unpremultiply", "type": "N->V", @@ -35071,7 +34261,7 @@ ] }, { - "id": 404, + "id": 393, "meta": "TS.", "name": "unsharp", "type": "V->V", @@ -35224,7 +34414,7 @@ ] }, { - "id": 405, + "id": 394, "meta": "...", "name": "untile", "type": "V->V", @@ -35241,7 +34431,7 @@ ] }, { - "id": 406, + "id": 395, "meta": ".SC", "name": "v360", "type": "V->V", @@ -35864,7 +35054,7 @@ ] }, { - "id": 407, + "id": 396, "meta": "T..", "name": "vaguedenoiser", "type": "V->V", @@ -35945,7 +35135,7 @@ ] }, { - "id": 408, + "id": 397, "meta": "TSC", "name": "varblur", "type": "VV->V", @@ -35978,7 +35168,7 @@ ] }, { - "id": 409, + "id": 398, "meta": "..C", "name": "vectorscope", "type": "V->V", @@ -36383,7 +35573,7 @@ ] }, { - "id": 410, + "id": 399, "meta": "T..", "name": "vflip", "type": "V->V", @@ -36391,14 +35581,14 @@ "params": [] }, { - "id": 411, + "id": 400, "meta": "...", "name": "vfrdet", "type": "V->V", "description": "Variable frame rate detect filter." }, { - "id": 412, + "id": 401, "meta": "TSC", "name": "vibrance", "type": "V->V", @@ -36471,235 +35661,7 @@ ] }, { - "id": 413, - "meta": "...", - "name": "vidstabdetect", - "type": "V->V", - "description": "Extract relative transformations, pass 1 of 2 for stabilization (see vidstabtransform for pass 2).", - "params": [ - { - "name": "result", - "type": "string", - "desc": "path to the file used to write the transforms (default \"transforms.trf\")", - "min": null, - "max": null, - "default": "transforms.trf" - }, - { - "name": "shakiness", - "type": "int", - "desc": "how shaky is the video and how quick is the camera? 1: little (fast) 10: very strong/quick (slow) (from 1 to 10) (default 5)", - "min": 1, - "max": 10, - "default": 5 - }, - { - "name": "accuracy", - "type": "int", - "desc": "(>=shakiness) 1: low 15: high (slow) (from 1 to 15) (default 15)", - "min": 1, - "max": 15, - "default": 15 - }, - { - "name": "stepsize", - "type": "int", - "desc": "region around minimum is scanned with 1 pixel resolution (from 1 to 32) (default 6)", - "min": 1, - "max": 32, - "default": 6 - }, - { - "name": "mincontrast", - "type": "double", - "desc": "below this contrast a field is discarded (0-1) (from 0 to 1) (default 0.25)", - "min": 0.0, - "max": 1.0, - "default": 0.25 - }, - { - "name": "show", - "type": "int", - "desc": "0: draw nothing; 1,2: show fields and transforms (from 0 to 2) (default 0)", - "min": 0, - "max": 2, - "default": 0 - }, - { - "name": "tripod", - "type": "int", - "desc": "virtual tripod mode (if >0): motion is compared to a reference reference frame (frame # is the value) (from 0 to INT_MAX) (default 0)", - "min": 0, - "max": 2147483647, - "default": 0 - } - ] - }, - { - "id": 414, - "meta": "...", - "name": "vidstabtransform", - "type": "V->V", - "description": "Transform the frames, pass 2 of 2 for stabilization (see vidstabdetect for pass 1).", - "params": [ - { - "name": "input", - "type": "string", - "desc": "set path to the file storing the transforms (default \"transforms.trf\")", - "min": null, - "max": null, - "default": "transforms.trf" - }, - { - "name": "smoothing", - "type": "int", - "desc": "set number of frames*2 + 1 used for lowpass filtering (from 0 to 1000) (default 15)", - "min": 0, - "max": 1000, - "default": 15 - }, - { - "name": "optalgo", - "type": "int", - "desc": "set camera path optimization algo (from 0 to 2) (default opt)", - "min": 0, - "max": 2, - "default": "opt", - "options": [ - { - "value": "opt", - "desc": "global optimization" - }, - { - "value": "gauss", - "desc": "gaussian kernel" - }, - { - "value": "avg", - "desc": "simple averaging on motion" - } - ] - }, - { - "name": "maxshift", - "type": "int", - "desc": "set maximal number of pixels to translate image (from -1 to 500) (default -1)", - "min": -1, - "max": 500, - "default": -1 - }, - { - "name": "maxangle", - "type": "double", - "desc": "set maximal angle in rad to rotate image (from -1 to 3.14) (default -1)", - "min": -1.0, - "max": 3.14, - "default": -1.0 - }, - { - "name": "crop", - "type": "int", - "desc": "set cropping mode (from 0 to 1) (default keep)", - "min": 0, - "max": 1, - "default": "keep", - "options": [ - { - "value": "keep", - "desc": "keep border" - }, - { - "value": "black", - "desc": "black border" - } - ] - }, - { - "name": "invert", - "type": "int", - "desc": "invert transforms (from 0 to 1) (default 0)", - "min": 0, - "max": 1, - "default": 0 - }, - { - "name": "relative", - "type": "int", - "desc": "consider transforms as relative (from 0 to 1) (default 1)", - "min": 0, - "max": 1, - "default": 1 - }, - { - "name": "zoom", - "type": "double", - "desc": "set percentage to zoom (>0: zoom in, <0: zoom out (from -100 to 100) (default 0)", - "min": -100.0, - "max": 100.0, - "default": 0.0 - }, - { - "name": "optzoom", - "type": "int", - "desc": "set optimal zoom (0: nothing, 1: optimal static zoom, 2: optimal dynamic zoom) (from 0 to 2) (default 1)", - "min": 0, - "max": 2, - "default": 1 - }, - { - "name": "zoomspeed", - "type": "double", - "desc": "for adative zoom: percent to zoom maximally each frame (from 0 to 5) (default 0.25)", - "min": 0.0, - "max": 5.0, - "default": 0.25 - }, - { - "name": "interpol", - "type": "int", - "desc": "set type of interpolation (from 0 to 3) (default bilinear)", - "min": 0, - "max": 3, - "default": "bilinear", - "options": [ - { - "value": "no", - "desc": "no interpolation" - }, - { - "value": "linear", - "desc": "linear (horizontal)" - }, - { - "value": "bilinear", - "desc": "bi-linear" - }, - { - "value": "bicubic", - "desc": "bi-cubic" - } - ] - }, - { - "name": "tripod", - "type": "boolean", - "desc": "enable virtual tripod mode (same as relative=0:smoothing=0) (default false)", - "min": null, - "max": null, - "default": "false" - }, - { - "name": "debug", - "type": "boolean", - "desc": "enable debug mode and writer global motions information to file (default false)", - "min": null, - "max": null, - "default": "false" - } - ] - }, - { - "id": 415, + "id": 402, "meta": "TS.", "name": "vif", "type": "VV->V", @@ -36707,7 +35669,7 @@ "params": [] }, { - "id": 416, + "id": 403, "meta": "T..", "name": "vignette", "type": "V->V", @@ -36800,7 +35762,7 @@ ] }, { - "id": 417, + "id": 404, "meta": "...", "name": "vmafmotion", "type": "V->V", @@ -36817,7 +35779,7 @@ ] }, { - "id": 418, + "id": 405, "meta": ".S.", "name": "vstack", "type": "N->V", @@ -36842,7 +35804,7 @@ ] }, { - "id": 419, + "id": 406, "meta": "TSC", "name": "w3fdif", "type": "V->V", @@ -36927,7 +35889,7 @@ ] }, { - "id": 420, + "id": 407, "meta": ".SC", "name": "waveform", "type": "V->V", @@ -37432,7 +36394,7 @@ ] }, { - "id": 421, + "id": 408, "meta": ".S.", "name": "weave", "type": "V->V", @@ -37467,7 +36429,7 @@ ] }, { - "id": 422, + "id": 409, "meta": ".S.", "name": "xbr", "type": "V->V", @@ -37484,7 +36446,7 @@ ] }, { - "id": 423, + "id": 410, "meta": "TS.", "name": "xcorrelate", "type": "VV->V", @@ -37519,7 +36481,7 @@ ] }, { - "id": 424, + "id": 411, "meta": ".S.", "name": "xfade", "type": "VV->V", @@ -37750,7 +36712,7 @@ ] }, { - "id": 425, + "id": 412, "meta": "TSC", "name": "xmedian", "type": "N->V", @@ -37783,7 +36745,7 @@ ] }, { - "id": 426, + "id": 413, "meta": ".S.", "name": "xstack", "type": "N->V", @@ -37832,7 +36794,7 @@ ] }, { - "id": 427, + "id": 414, "meta": "TS.", "name": "yadif", "type": "V->V", @@ -37907,82 +36869,7 @@ ] }, { - "id": 428, - "meta": "T..", - "name": "yadif_videotoolbox", - "type": "V->V", - "description": "YADIF for VideoToolbox frames using Metal compute", - "params": [ - { - "name": "mode", - "type": "int", - "desc": "specify the interlacing mode (from 0 to 3) (default send_frame)", - "min": 0, - "max": 3, - "default": "send_frame", - "options": [ - { - "value": "send_frame", - "desc": "send one frame for each frame" - }, - { - "value": "send_field", - "desc": "send one frame for each field" - }, - { - "value": "send_frame_nospatial", - "desc": "send one frame for each frame, but skip spatial interlacing check" - }, - { - "value": "send_field_nospatial", - "desc": "send one frame for each field, but skip spatial interlacing check" - } - ] - }, - { - "name": "parity", - "type": "int", - "desc": "specify the assumed picture field parity (from -1 to 1) (default auto)", - "min": -1, - "max": 1, - "default": "auto", - "options": [ - { - "value": "tff", - "desc": "assume top field first" - }, - { - "value": "bff", - "desc": "assume bottom field first" - }, - { - "value": "auto", - "desc": "auto detect parity" - } - ] - }, - { - "name": "deint", - "type": "int", - "desc": "specify which frames to deinterlace (from 0 to 1) (default all)", - "min": 0, - "max": 1, - "default": "all", - "options": [ - { - "value": "all", - "desc": "deinterlace all frames" - }, - { - "value": "interlaced", - "desc": "only deinterlace frames marked as interlaced" - } - ] - } - ] - }, - { - "id": 429, + "id": 415, "meta": "TSC", "name": "yaepblur", "type": "V->V", @@ -38039,32 +36926,7 @@ ] }, { - "id": 430, - "meta": "...", - "name": "zmq", - "type": "V->V", - "description": "Receive commands through ZMQ and broker them to filters.", - "params": [ - { - "name": "bind_address", - "type": "string", - "desc": "set bind address (default \"tcp://*:5555\")", - "min": null, - "max": null, - "default": "tcp://*:5555" - }, - { - "name": "b", - "type": "string", - "desc": "set bind address (default \"tcp://*:5555\")", - "min": null, - "max": null, - "default": "tcp://*:5555" - } - ] - }, - { - "id": 431, + "id": 416, "meta": "...", "name": "zoompan", "type": "V->V", @@ -38129,1668 +36991,7 @@ ] }, { - "id": 432, - "meta": ".SC", - "name": "zscale", - "type": "V->V", - "description": "Apply resizing, colorspace and bit depth conversion.", - "params": [ - { - "name": "w", - "type": "string", - "desc": "Output video width", - "min": null, - "max": null, - "default": null - }, - { - "name": "width", - "type": "string", - "desc": "Output video width", - "min": null, - "max": null, - "default": null - }, - { - "name": "h", - "type": "string", - "desc": "Output video height", - "min": null, - "max": null, - "default": null - }, - { - "name": "height", - "type": "string", - "desc": "Output video height", - "min": null, - "max": null, - "default": null - }, - { - "name": "size", - "type": "string", - "desc": "set video size", - "min": null, - "max": null, - "default": null - }, - { - "name": "s", - "type": "string", - "desc": "set video size", - "min": null, - "max": null, - "default": null - }, - { - "name": "dither", - "type": "int", - "desc": "set dither type (from 0 to 3) (default none)", - "min": 0, - "max": 3, - "default": "none", - "options": [ - { - "value": "none", - "desc": "" - }, - { - "value": "ordered", - "desc": "" - }, - { - "value": "random", - "desc": "" - }, - { - "value": "error_diffusion", - "desc": "" - } - ] - }, - { - "name": "d", - "type": "int", - "desc": "set dither type (from 0 to 3) (default none)", - "min": 0, - "max": 3, - "default": "none", - "options": [ - { - "value": "none", - "desc": "" - }, - { - "value": "ordered", - "desc": "" - }, - { - "value": "random", - "desc": "" - }, - { - "value": "error_diffusion", - "desc": "" - } - ] - }, - { - "name": "filter", - "type": "int", - "desc": "set filter type (from 0 to 5) (default bilinear)", - "min": 0, - "max": 5, - "default": "bilinear", - "options": [ - { - "value": "point", - "desc": "" - }, - { - "value": "bilinear", - "desc": "" - }, - { - "value": "bicubic", - "desc": "" - }, - { - "value": "spline16", - "desc": "" - }, - { - "value": "spline36", - "desc": "" - }, - { - "value": "lanczos", - "desc": "" - } - ] - }, - { - "name": "f", - "type": "int", - "desc": "set filter type (from 0 to 5) (default bilinear)", - "min": 0, - "max": 5, - "default": "bilinear", - "options": [ - { - "value": "point", - "desc": "" - }, - { - "value": "bilinear", - "desc": "" - }, - { - "value": "bicubic", - "desc": "" - }, - { - "value": "spline16", - "desc": "" - }, - { - "value": "spline36", - "desc": "" - }, - { - "value": "lanczos", - "desc": "" - } - ] - }, - { - "name": "out_range", - "type": "int", - "desc": "set color range (from -1 to 1) (default input)", - "min": -1, - "max": 1, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "limited", - "desc": "" - }, - { - "value": "full", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "tv", - "desc": "" - }, - { - "value": "pc", - "desc": "" - } - ] - }, - { - "name": "range", - "type": "int", - "desc": "set color range (from -1 to 1) (default input)", - "min": -1, - "max": 1, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "limited", - "desc": "" - }, - { - "value": "full", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "tv", - "desc": "" - }, - { - "value": "pc", - "desc": "" - } - ] - }, - { - "name": "r", - "type": "int", - "desc": "set color range (from -1 to 1) (default input)", - "min": -1, - "max": 1, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "limited", - "desc": "" - }, - { - "value": "full", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "tv", - "desc": "" - }, - { - "value": "pc", - "desc": "" - } - ] - }, - { - "name": "primaries", - "type": "int", - "desc": "set color primaries (from -1 to INT_MAX) (default input)", - "min": -1, - "max": 2147483647, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "709", - "desc": "" - }, - { - "value": "unspecified", - "desc": "" - }, - { - "value": "170m", - "desc": "" - }, - { - "value": "240m", - "desc": "" - }, - { - "value": "2020", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "bt709", - "desc": "" - }, - { - "value": "bt470m", - "desc": "" - }, - { - "value": "bt470bg", - "desc": "" - }, - { - "value": "smpte170m", - "desc": "" - }, - { - "value": "smpte240m", - "desc": "" - }, - { - "value": "film", - "desc": "" - }, - { - "value": "bt2020", - "desc": "" - }, - { - "value": "smpte428", - "desc": "" - }, - { - "value": "smpte431", - "desc": "" - }, - { - "value": "smpte432", - "desc": "" - }, - { - "value": "jedec-p22", - "desc": "" - }, - { - "value": "ebu3213", - "desc": "" - } - ] - }, - { - "name": "p", - "type": "int", - "desc": "set color primaries (from -1 to INT_MAX) (default input)", - "min": -1, - "max": 2147483647, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "709", - "desc": "" - }, - { - "value": "unspecified", - "desc": "" - }, - { - "value": "170m", - "desc": "" - }, - { - "value": "240m", - "desc": "" - }, - { - "value": "2020", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "bt709", - "desc": "" - }, - { - "value": "bt470m", - "desc": "" - }, - { - "value": "bt470bg", - "desc": "" - }, - { - "value": "smpte170m", - "desc": "" - }, - { - "value": "smpte240m", - "desc": "" - }, - { - "value": "film", - "desc": "" - }, - { - "value": "bt2020", - "desc": "" - }, - { - "value": "smpte428", - "desc": "" - }, - { - "value": "smpte431", - "desc": "" - }, - { - "value": "smpte432", - "desc": "" - }, - { - "value": "jedec-p22", - "desc": "" - }, - { - "value": "ebu3213", - "desc": "" - } - ] - }, - { - "name": "transfer", - "type": "int", - "desc": "set transfer characteristic (from -1 to INT_MAX) (default input)", - "min": -1, - "max": 2147483647, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "709", - "desc": "" - }, - { - "value": "unspecified", - "desc": "" - }, - { - "value": "601", - "desc": "" - }, - { - "value": "linear", - "desc": "" - }, - { - "value": "2020_10", - "desc": "" - }, - { - "value": "2020_12", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "bt470m", - "desc": "" - }, - { - "value": "bt470bg", - "desc": "" - }, - { - "value": "smpte170m", - "desc": "" - }, - { - "value": "smpte240m", - "desc": "" - }, - { - "value": "bt709", - "desc": "" - }, - { - "value": "linear", - "desc": "" - }, - { - "value": "log100", - "desc": "" - }, - { - "value": "log316", - "desc": "" - }, - { - "value": "bt2020-10", - "desc": "" - }, - { - "value": "bt2020-12", - "desc": "" - }, - { - "value": "smpte2084", - "desc": "" - }, - { - "value": "iec61966-2-4", - "desc": "" - }, - { - "value": "iec61966-2-1", - "desc": "" - }, - { - "value": "arib-std-b67", - "desc": "" - } - ] - }, - { - "name": "t", - "type": "int", - "desc": "set transfer characteristic (from -1 to INT_MAX) (default input)", - "min": -1, - "max": 2147483647, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "709", - "desc": "" - }, - { - "value": "unspecified", - "desc": "" - }, - { - "value": "601", - "desc": "" - }, - { - "value": "linear", - "desc": "" - }, - { - "value": "2020_10", - "desc": "" - }, - { - "value": "2020_12", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "bt470m", - "desc": "" - }, - { - "value": "bt470bg", - "desc": "" - }, - { - "value": "smpte170m", - "desc": "" - }, - { - "value": "smpte240m", - "desc": "" - }, - { - "value": "bt709", - "desc": "" - }, - { - "value": "linear", - "desc": "" - }, - { - "value": "log100", - "desc": "" - }, - { - "value": "log316", - "desc": "" - }, - { - "value": "bt2020-10", - "desc": "" - }, - { - "value": "bt2020-12", - "desc": "" - }, - { - "value": "smpte2084", - "desc": "" - }, - { - "value": "iec61966-2-4", - "desc": "" - }, - { - "value": "iec61966-2-1", - "desc": "" - }, - { - "value": "arib-std-b67", - "desc": "" - } - ] - }, - { - "name": "matrix", - "type": "int", - "desc": "set colorspace matrix (from -1 to INT_MAX) (default input)", - "min": -1, - "max": 2147483647, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "709", - "desc": "" - }, - { - "value": "unspecified", - "desc": "" - }, - { - "value": "470bg", - "desc": "" - }, - { - "value": "170m", - "desc": "" - }, - { - "value": "2020_ncl", - "desc": "" - }, - { - "value": "2020_cl", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "gbr", - "desc": "" - }, - { - "value": "bt709", - "desc": "" - }, - { - "value": "fcc", - "desc": "" - }, - { - "value": "bt470bg", - "desc": "" - }, - { - "value": "smpte170m", - "desc": "" - }, - { - "value": "smpte240m", - "desc": "" - }, - { - "value": "ycgco", - "desc": "" - }, - { - "value": "bt2020nc", - "desc": "" - }, - { - "value": "bt2020c", - "desc": "" - }, - { - "value": "chroma-derived-nc", - "desc": "" - }, - { - "value": "chroma-derived-c", - "desc": "" - }, - { - "value": "ictcp", - "desc": "" - } - ] - }, - { - "name": "m", - "type": "int", - "desc": "set colorspace matrix (from -1 to INT_MAX) (default input)", - "min": -1, - "max": 2147483647, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "709", - "desc": "" - }, - { - "value": "unspecified", - "desc": "" - }, - { - "value": "470bg", - "desc": "" - }, - { - "value": "170m", - "desc": "" - }, - { - "value": "2020_ncl", - "desc": "" - }, - { - "value": "2020_cl", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "gbr", - "desc": "" - }, - { - "value": "bt709", - "desc": "" - }, - { - "value": "fcc", - "desc": "" - }, - { - "value": "bt470bg", - "desc": "" - }, - { - "value": "smpte170m", - "desc": "" - }, - { - "value": "smpte240m", - "desc": "" - }, - { - "value": "ycgco", - "desc": "" - }, - { - "value": "bt2020nc", - "desc": "" - }, - { - "value": "bt2020c", - "desc": "" - }, - { - "value": "chroma-derived-nc", - "desc": "" - }, - { - "value": "chroma-derived-c", - "desc": "" - }, - { - "value": "ictcp", - "desc": "" - } - ] - }, - { - "name": "in_range", - "type": "int", - "desc": "set input color range (from -1 to 1) (default input)", - "min": -1, - "max": 1, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "limited", - "desc": "" - }, - { - "value": "full", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "tv", - "desc": "" - }, - { - "value": "pc", - "desc": "" - } - ] - }, - { - "name": "rangein", - "type": "int", - "desc": "set input color range (from -1 to 1) (default input)", - "min": -1, - "max": 1, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "limited", - "desc": "" - }, - { - "value": "full", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "tv", - "desc": "" - }, - { - "value": "pc", - "desc": "" - } - ] - }, - { - "name": "rin", - "type": "int", - "desc": "set input color range (from -1 to 1) (default input)", - "min": -1, - "max": 1, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "limited", - "desc": "" - }, - { - "value": "full", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "tv", - "desc": "" - }, - { - "value": "pc", - "desc": "" - } - ] - }, - { - "name": "primariesin", - "type": "int", - "desc": "set input color primaries (from -1 to INT_MAX) (default input)", - "min": -1, - "max": 2147483647, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "709", - "desc": "" - }, - { - "value": "unspecified", - "desc": "" - }, - { - "value": "170m", - "desc": "" - }, - { - "value": "240m", - "desc": "" - }, - { - "value": "2020", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "bt709", - "desc": "" - }, - { - "value": "bt470m", - "desc": "" - }, - { - "value": "bt470bg", - "desc": "" - }, - { - "value": "smpte170m", - "desc": "" - }, - { - "value": "smpte240m", - "desc": "" - }, - { - "value": "film", - "desc": "" - }, - { - "value": "bt2020", - "desc": "" - }, - { - "value": "smpte428", - "desc": "" - }, - { - "value": "smpte431", - "desc": "" - }, - { - "value": "smpte432", - "desc": "" - }, - { - "value": "jedec-p22", - "desc": "" - }, - { - "value": "ebu3213", - "desc": "" - } - ] - }, - { - "name": "pin", - "type": "int", - "desc": "set input color primaries (from -1 to INT_MAX) (default input)", - "min": -1, - "max": 2147483647, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "709", - "desc": "" - }, - { - "value": "unspecified", - "desc": "" - }, - { - "value": "170m", - "desc": "" - }, - { - "value": "240m", - "desc": "" - }, - { - "value": "2020", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "bt709", - "desc": "" - }, - { - "value": "bt470m", - "desc": "" - }, - { - "value": "bt470bg", - "desc": "" - }, - { - "value": "smpte170m", - "desc": "" - }, - { - "value": "smpte240m", - "desc": "" - }, - { - "value": "film", - "desc": "" - }, - { - "value": "bt2020", - "desc": "" - }, - { - "value": "smpte428", - "desc": "" - }, - { - "value": "smpte431", - "desc": "" - }, - { - "value": "smpte432", - "desc": "" - }, - { - "value": "jedec-p22", - "desc": "" - }, - { - "value": "ebu3213", - "desc": "" - } - ] - }, - { - "name": "transferin", - "type": "int", - "desc": "set input transfer characteristic (from -1 to INT_MAX) (default input)", - "min": -1, - "max": 2147483647, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "709", - "desc": "" - }, - { - "value": "unspecified", - "desc": "" - }, - { - "value": "601", - "desc": "" - }, - { - "value": "linear", - "desc": "" - }, - { - "value": "2020_10", - "desc": "" - }, - { - "value": "2020_12", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "bt470m", - "desc": "" - }, - { - "value": "bt470bg", - "desc": "" - }, - { - "value": "smpte170m", - "desc": "" - }, - { - "value": "smpte240m", - "desc": "" - }, - { - "value": "bt709", - "desc": "" - }, - { - "value": "linear", - "desc": "" - }, - { - "value": "log100", - "desc": "" - }, - { - "value": "log316", - "desc": "" - }, - { - "value": "bt2020-10", - "desc": "" - }, - { - "value": "bt2020-12", - "desc": "" - }, - { - "value": "smpte2084", - "desc": "" - }, - { - "value": "iec61966-2-4", - "desc": "" - }, - { - "value": "iec61966-2-1", - "desc": "" - }, - { - "value": "arib-std-b67", - "desc": "" - } - ] - }, - { - "name": "tin", - "type": "int", - "desc": "set input transfer characteristic (from -1 to INT_MAX) (default input)", - "min": -1, - "max": 2147483647, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "709", - "desc": "" - }, - { - "value": "unspecified", - "desc": "" - }, - { - "value": "601", - "desc": "" - }, - { - "value": "linear", - "desc": "" - }, - { - "value": "2020_10", - "desc": "" - }, - { - "value": "2020_12", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "bt470m", - "desc": "" - }, - { - "value": "bt470bg", - "desc": "" - }, - { - "value": "smpte170m", - "desc": "" - }, - { - "value": "smpte240m", - "desc": "" - }, - { - "value": "bt709", - "desc": "" - }, - { - "value": "linear", - "desc": "" - }, - { - "value": "log100", - "desc": "" - }, - { - "value": "log316", - "desc": "" - }, - { - "value": "bt2020-10", - "desc": "" - }, - { - "value": "bt2020-12", - "desc": "" - }, - { - "value": "smpte2084", - "desc": "" - }, - { - "value": "iec61966-2-4", - "desc": "" - }, - { - "value": "iec61966-2-1", - "desc": "" - }, - { - "value": "arib-std-b67", - "desc": "" - } - ] - }, - { - "name": "matrixin", - "type": "int", - "desc": "set input colorspace matrix (from -1 to INT_MAX) (default input)", - "min": -1, - "max": 2147483647, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "709", - "desc": "" - }, - { - "value": "unspecified", - "desc": "" - }, - { - "value": "470bg", - "desc": "" - }, - { - "value": "170m", - "desc": "" - }, - { - "value": "2020_ncl", - "desc": "" - }, - { - "value": "2020_cl", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "gbr", - "desc": "" - }, - { - "value": "bt709", - "desc": "" - }, - { - "value": "fcc", - "desc": "" - }, - { - "value": "bt470bg", - "desc": "" - }, - { - "value": "smpte170m", - "desc": "" - }, - { - "value": "smpte240m", - "desc": "" - }, - { - "value": "ycgco", - "desc": "" - }, - { - "value": "bt2020nc", - "desc": "" - }, - { - "value": "bt2020c", - "desc": "" - }, - { - "value": "chroma-derived-nc", - "desc": "" - }, - { - "value": "chroma-derived-c", - "desc": "" - }, - { - "value": "ictcp", - "desc": "" - } - ] - }, - { - "name": "min", - "type": "int", - "desc": "set input colorspace matrix (from -1 to INT_MAX) (default input)", - "min": -1, - "max": 2147483647, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "709", - "desc": "" - }, - { - "value": "unspecified", - "desc": "" - }, - { - "value": "470bg", - "desc": "" - }, - { - "value": "170m", - "desc": "" - }, - { - "value": "2020_ncl", - "desc": "" - }, - { - "value": "2020_cl", - "desc": "" - }, - { - "value": "unknown", - "desc": "" - }, - { - "value": "gbr", - "desc": "" - }, - { - "value": "bt709", - "desc": "" - }, - { - "value": "fcc", - "desc": "" - }, - { - "value": "bt470bg", - "desc": "" - }, - { - "value": "smpte170m", - "desc": "" - }, - { - "value": "smpte240m", - "desc": "" - }, - { - "value": "ycgco", - "desc": "" - }, - { - "value": "bt2020nc", - "desc": "" - }, - { - "value": "bt2020c", - "desc": "" - }, - { - "value": "chroma-derived-nc", - "desc": "" - }, - { - "value": "chroma-derived-c", - "desc": "" - }, - { - "value": "ictcp", - "desc": "" - } - ] - }, - { - "name": "chromal", - "type": "int", - "desc": "set output chroma location (from -1 to 5) (default input)", - "min": -1, - "max": 5, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "left", - "desc": "" - }, - { - "value": "center", - "desc": "" - }, - { - "value": "topleft", - "desc": "" - }, - { - "value": "top", - "desc": "" - }, - { - "value": "bottomleft", - "desc": "" - }, - { - "value": "bottom", - "desc": "" - } - ] - }, - { - "name": "c", - "type": "int", - "desc": "set output chroma location (from -1 to 5) (default input)", - "min": -1, - "max": 5, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "left", - "desc": "" - }, - { - "value": "center", - "desc": "" - }, - { - "value": "topleft", - "desc": "" - }, - { - "value": "top", - "desc": "" - }, - { - "value": "bottomleft", - "desc": "" - }, - { - "value": "bottom", - "desc": "" - } - ] - }, - { - "name": "chromalin", - "type": "int", - "desc": "set input chroma location (from -1 to 5) (default input)", - "min": -1, - "max": 5, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "left", - "desc": "" - }, - { - "value": "center", - "desc": "" - }, - { - "value": "topleft", - "desc": "" - }, - { - "value": "top", - "desc": "" - }, - { - "value": "bottomleft", - "desc": "" - }, - { - "value": "bottom", - "desc": "" - } - ] - }, - { - "name": "cin", - "type": "int", - "desc": "set input chroma location (from -1 to 5) (default input)", - "min": -1, - "max": 5, - "default": "input", - "options": [ - { - "value": "input", - "desc": "" - }, - { - "value": "left", - "desc": "" - }, - { - "value": "center", - "desc": "" - }, - { - "value": "topleft", - "desc": "" - }, - { - "value": "top", - "desc": "" - }, - { - "value": "bottomleft", - "desc": "" - }, - { - "value": "bottom", - "desc": "" - } - ] - }, - { - "name": "npl", - "type": "double", - "desc": "set nominal peak luminance (from 0 to DBL_MAX) (default nan)", - "min": 0.0, - "max": 2147483647.0, - "default": null - }, - { - "name": "agamma", - "type": "boolean", - "desc": "allow approximate gamma (default true)", - "min": null, - "max": null, - "default": "true" - }, - { - "name": "param_a", - "type": "double", - "desc": "parameter A, which is parameter \"b\" for bicubic, and the number of filter taps for lanczos (from -DBL_MAX to DBL_MAX) (default nan)", - "min": -2147483648.0, - "max": 2147483647.0, - "default": null - }, - { - "name": "param_b", - "type": "double", - "desc": "parameter B, which is parameter \"c\" for bicubic (from -DBL_MAX to DBL_MAX) (default nan)", - "min": -2147483648.0, - "max": 2147483647.0, - "default": null - } - ] - }, - { - "id": 433, + "id": 417, "meta": "...", "name": "allrgb", "type": "|->V", @@ -39839,7 +37040,7 @@ ] }, { - "id": 434, + "id": 418, "meta": "...", "name": "allyuv", "type": "|->V", @@ -39888,7 +37089,7 @@ ] }, { - "id": 435, + "id": 419, "meta": "...", "name": "cellauto", "type": "|->V", @@ -40033,7 +37234,7 @@ ] }, { - "id": 436, + "id": 420, "meta": "..C", "name": "color", "type": "|->V", @@ -40114,7 +37315,7 @@ ] }, { - "id": 437, + "id": 421, "meta": "...", "name": "colorchart", "type": "|->V", @@ -40189,7 +37390,7 @@ ] }, { - "id": 438, + "id": 422, "meta": "...", "name": "colorspectrum", "type": "|->V", @@ -40276,145 +37477,7 @@ ] }, { - "id": 439, - "meta": "...", - "name": "coreimagesrc", - "type": "|->V", - "description": "Video source using image generators of CoreImage API.", - "params": [ - { - "name": "size", - "type": "image_size", - "desc": "set video size (default \"320x240\")", - "min": null, - "max": null, - "default": "320x240" - }, - { - "name": "s", - "type": "image_size", - "desc": "set video size (default \"320x240\")", - "min": null, - "max": null, - "default": "320x240" - }, - { - "name": "rate", - "type": "video_rate", - "desc": "set video rate (default \"25\")", - "min": null, - "max": null, - "default": "25" - }, - { - "name": "r", - "type": "video_rate", - "desc": "set video rate (default \"25\")", - "min": null, - "max": null, - "default": "25" - }, - { - "name": "duration", - "type": "duration", - "desc": "set video duration (default -0.000001)", - "min": null, - "max": null, - "default": "-0.000001" - }, - { - "name": "d", - "type": "duration", - "desc": "set video duration (default -0.000001)", - "min": null, - "max": null, - "default": "-0.000001" - }, - { - "name": "sar", - "type": "rational", - "desc": "set video sample aspect ratio (from 0 to INT_MAX) (default 1/1)", - "min": "0", - "max": 2147483647, - "default": "1/1" - }, - { - "name": "list_filters", - "type": "boolean", - "desc": "list available filters (default false)", - "min": null, - "max": null, - "default": "false" - }, - { - "name": "list_generators", - "type": "boolean", - "desc": "list available generators (default false)", - "min": null, - "max": null, - "default": "false" - }, - { - "name": "filter", - "type": "string", - "desc": "names and options of filters to apply", - "min": null, - "max": null, - "default": null - }, - { - "name": "output_rect", - "type": "string", - "desc": "output rectangle within output image", - "min": null, - "max": null, - "default": null - } - ] - }, - { - "id": 440, - "meta": "...", - "name": "frei0r_src", - "type": "|->V", - "description": "Generate a frei0r source.", - "params": [ - { - "name": "size", - "type": "image_size", - "desc": "Dimensions of the generated video. (default \"320x240\")", - "min": null, - "max": null, - "default": "320x240" - }, - { - "name": "framerate", - "type": "video_rate", - "desc": "(default \"25\")", - "min": null, - "max": null, - "default": "25" - }, - { - "name": "filter_name", - "type": "string", - "desc": "", - "min": null, - "max": null, - "default": null - }, - { - "name": "filter_params", - "type": "string", - "desc": "", - "min": null, - "max": null, - "default": null - } - ] - }, - { - "id": 441, + "id": 423, "meta": ".S.", "name": "gradients", "type": "|->V", @@ -40651,7 +37714,7 @@ ] }, { - "id": 442, + "id": 424, "meta": "...", "name": "haldclutsrc", "type": "|->V", @@ -40708,7 +37771,7 @@ ] }, { - "id": 443, + "id": 425, "meta": "...", "name": "life", "type": "|->V", @@ -40845,7 +37908,7 @@ ] }, { - "id": 444, + "id": 426, "meta": "...", "name": "mandelbrot", "type": "|->V", @@ -41018,7 +38081,7 @@ ] }, { - "id": 445, + "id": 427, "meta": "...", "name": "mptestsrc", "type": "|->V", @@ -41183,7 +38246,7 @@ ] }, { - "id": 446, + "id": 428, "meta": "...", "name": "nullsrc", "type": "|->V", @@ -41248,7 +38311,7 @@ ] }, { - "id": 447, + "id": 429, "meta": "...", "name": "pal75bars", "type": "|->V", @@ -41313,7 +38376,7 @@ ] }, { - "id": 448, + "id": 430, "meta": "...", "name": "pal100bars", "type": "|->V", @@ -41378,7 +38441,7 @@ ] }, { - "id": 449, + "id": 431, "meta": "...", "name": "rgbtestsrc", "type": "|->V", @@ -41459,7 +38522,7 @@ ] }, { - "id": 450, + "id": 432, "meta": ".S.", "name": "sierpinski", "type": "|->V", @@ -41534,7 +38597,7 @@ ] }, { - "id": 451, + "id": 433, "meta": "...", "name": "smptebars", "type": "|->V", @@ -41599,7 +38662,7 @@ ] }, { - "id": 452, + "id": 434, "meta": "...", "name": "smptehdbars", "type": "|->V", @@ -41664,7 +38727,7 @@ ] }, { - "id": 453, + "id": 435, "meta": "...", "name": "testsrc", "type": "|->V", @@ -41745,7 +38808,7 @@ ] }, { - "id": 454, + "id": 436, "meta": "...", "name": "testsrc2", "type": "|->V", @@ -41818,7 +38881,7 @@ ] }, { - "id": 455, + "id": 437, "meta": "...", "name": "yuvtestsrc", "type": "|->V", @@ -41883,143 +38946,14 @@ ] }, { - "id": 456, + "id": 438, "meta": "...", "name": "nullsink", "type": "V->|", "description": "Do absolutely nothing with the input video." }, { - "id": 457, - "meta": "..C", - "name": "a3dscope", - "type": "A->V", - "description": "Convert input audio to 3d scope video output.", - "params": [ - { - "name": "rate", - "type": "video_rate", - "desc": "set video rate (default \"25\")", - "min": null, - "max": null, - "default": "25" - }, - { - "name": "r", - "type": "video_rate", - "desc": "set video rate (default \"25\")", - "min": null, - "max": null, - "default": "25" - }, - { - "name": "size", - "type": "image_size", - "desc": "set video size (default \"hd720\")", - "min": null, - "max": null, - "default": "hd720" - }, - { - "name": "s", - "type": "image_size", - "desc": "set video size (default \"hd720\")", - "min": null, - "max": null, - "default": "hd720" - }, - { - "name": "fov", - "type": "float", - "desc": "set camera FoV (from 40 to 150) (default 90)", - "min": 40.0, - "max": 150.0, - "default": 90.0 - }, - { - "name": "roll", - "type": "float", - "desc": "set camera roll (from -180 to 180) (default 0)", - "min": -180.0, - "max": 180.0, - "default": 0.0 - }, - { - "name": "pitch", - "type": "float", - "desc": "set camera pitch (from -180 to 180) (default 0)", - "min": -180.0, - "max": 180.0, - "default": 0.0 - }, - { - "name": "yaw", - "type": "float", - "desc": "set camera yaw (from -180 to 180) (default 0)", - "min": -180.0, - "max": 180.0, - "default": 0.0 - }, - { - "name": "xzoom", - "type": "float", - "desc": "set camera zoom (from 0.01 to 10) (default 1)", - "min": 0.01, - "max": 10.0, - "default": 1.0 - }, - { - "name": "yzoom", - "type": "float", - "desc": "set camera zoom (from 0.01 to 10) (default 1)", - "min": 0.01, - "max": 10.0, - "default": 1.0 - }, - { - "name": "zzoom", - "type": "float", - "desc": "set camera zoom (from 0.01 to 10) (default 1)", - "min": 0.01, - "max": 10.0, - "default": 1.0 - }, - { - "name": "xpos", - "type": "float", - "desc": "set camera position (from -60 to 60) (default 0)", - "min": -60.0, - "max": 60.0, - "default": 0.0 - }, - { - "name": "ypos", - "type": "float", - "desc": "set camera position (from -60 to 60) (default 0)", - "min": -60.0, - "max": 60.0, - "default": 0.0 - }, - { - "name": "zpos", - "type": "float", - "desc": "set camera position (from -60 to 60) (default 0)", - "min": -60.0, - "max": 60.0, - "default": 0.0 - }, - { - "name": "length", - "type": "int", - "desc": "set length (from 1 to 60) (default 15)", - "min": 1, - "max": 60, - "default": 15 - } - ] - }, - { - "id": 458, + "id": 439, "meta": "...", "name": "abitscope", "type": "A->V", @@ -42104,7 +39038,7 @@ ] }, { - "id": 459, + "id": 440, "meta": "...", "name": "adrawgraph", "type": "A->V", @@ -42285,7 +39219,7 @@ ] }, { - "id": 460, + "id": 441, "meta": "...", "name": "agraphmonitor", "type": "A->V", @@ -42526,7 +39460,7 @@ ] }, { - "id": 461, + "id": 442, "meta": "...", "name": "ahistogram", "type": "A->V", @@ -42685,7 +39619,7 @@ ] }, { - "id": 462, + "id": 443, "meta": "...", "name": "aphasemeter", "type": "A->N", @@ -42822,7 +39756,7 @@ ] }, { - "id": 463, + "id": 444, "meta": ".SC", "name": "avectorscope", "type": "A->V", @@ -43061,7 +39995,7 @@ ] }, { - "id": 464, + "id": 445, "meta": "..C", "name": "concat", "type": "N->N", @@ -43102,7 +40036,7 @@ ] }, { - "id": 465, + "id": 446, "meta": "...", "name": "showcqt", "type": "A->V", @@ -43421,196 +40355,7 @@ ] }, { - "id": 466, - "meta": ".S.", - "name": "showcwt", - "type": "A->V", - "description": "Convert input audio to a CWT (Continuous Wavelet Transform) spectrum video output.", - "params": [ - { - "name": "size", - "type": "image_size", - "desc": "set video size (default \"640x512\")", - "min": null, - "max": null, - "default": "640x512" - }, - { - "name": "s", - "type": "image_size", - "desc": "set video size (default \"640x512\")", - "min": null, - "max": null, - "default": "640x512" - }, - { - "name": "rate", - "type": "string", - "desc": "set video rate (default \"25\")", - "min": null, - "max": null, - "default": "25" - }, - { - "name": "r", - "type": "string", - "desc": "set video rate (default \"25\")", - "min": null, - "max": null, - "default": "25" - }, - { - "name": "scale", - "type": "int", - "desc": "set frequency scale (from 0 to 4) (default linear)", - "min": 0, - "max": 4, - "default": "linear", - "options": [ - { - "value": "linear", - "desc": "linear" - }, - { - "value": "log2", - "desc": "logarithmic" - }, - { - "value": "bark", - "desc": "bark" - }, - { - "value": "mel", - "desc": "mel" - }, - { - "value": "erbs", - "desc": "erbs" - } - ] - }, - { - "name": "min", - "type": "float", - "desc": "set minimum frequency (from 1 to 2000) (default 20)", - "min": 1.0, - "max": 2000.0, - "default": 20.0 - }, - { - "name": "max", - "type": "float", - "desc": "set maximum frequency (from 0 to 192000) (default 20000)", - "min": 0.0, - "max": 192000.0, - "default": 20000.0 - }, - { - "name": "logb", - "type": "float", - "desc": "set logarithmic basis (from 0 to 1) (default 0.0001)", - "min": 0.0, - "max": 1.0, - "default": 0.0001 - }, - { - "name": "deviation", - "type": "float", - "desc": "set frequency deviation (from 0 to 10) (default 1)", - "min": 0.0, - "max": 10.0, - "default": 1.0 - }, - { - "name": "pps", - "type": "int", - "desc": "set pixels per second (from 1 to 1024) (default 64)", - "min": 1, - "max": 1024, - "default": 64 - }, - { - "name": "mode", - "type": "int", - "desc": "set output mode (from 0 to 4) (default magnitude)", - "min": 0, - "max": 4, - "default": "magnitude", - "options": [ - { - "value": "magnitude", - "desc": "magnitude" - }, - { - "value": "phase", - "desc": "phase" - }, - { - "value": "magphase", - "desc": "magnitude+phase" - }, - { - "value": "channel", - "desc": "color per channel" - }, - { - "value": "stereo", - "desc": "stereo difference" - } - ] - }, - { - "name": "slide", - "type": "int", - "desc": "set slide mode (from 0 to 2) (default replace)", - "min": 0, - "max": 2, - "default": "replace", - "options": [ - { - "value": "replace", - "desc": "replace" - }, - { - "value": "scroll", - "desc": "scroll" - }, - { - "value": "frame", - "desc": "frame" - } - ] - }, - { - "name": "direction", - "type": "int", - "desc": "set direction mode (from 0 to 3) (default lr)", - "min": 0, - "max": 3, - "default": "lr", - "options": [ - { - "value": "lr", - "desc": "left to right" - }, - { - "value": "rl", - "desc": "right to left" - }, - { - "value": "ud", - "desc": "up to down" - }, - { - "value": "du", - "desc": "down to up" - } - ] - } - ] - }, - { - "id": 467, + "id": 447, "meta": "...", "name": "showfreqs", "type": "A->V", @@ -43907,7 +40652,7 @@ ] }, { - "id": 468, + "id": 448, "meta": ".S.", "name": "showspatial", "type": "A->V", @@ -44054,7 +40799,7 @@ ] }, { - "id": 469, + "id": 449, "meta": ".S.", "name": "showspectrum", "type": "A->V", @@ -44475,7 +41220,7 @@ ] }, { - "id": 470, + "id": 450, "meta": ".S.", "name": "showspectrumpic", "type": "A->V", @@ -44828,7 +41573,7 @@ ] }, { - "id": 471, + "id": 451, "meta": "...", "name": "showvolume", "type": "A->V", @@ -44995,7 +41740,7 @@ ] }, { - "id": 472, + "id": 452, "meta": "...", "name": "showwaves", "type": "A->V", @@ -45130,7 +41875,7 @@ ] }, { - "id": 473, + "id": 453, "meta": "...", "name": "showwavespic", "type": "A->V", @@ -45233,7 +41978,7 @@ ] }, { - "id": 474, + "id": 454, "meta": "...", "name": "spectrumsynth", "type": "VV->A", @@ -45426,7 +42171,7 @@ ] }, { - "id": 475, + "id": 455, "meta": "...", "name": "avsynctest", "type": "|->AV", @@ -45587,7 +42332,7 @@ ] }, { - "id": 476, + "id": 456, "meta": "..C", "name": "amovie", "type": "|->N", @@ -45700,7 +42445,7 @@ ] }, { - "id": 477, + "id": 457, "meta": "..C", "name": "movie", "type": "|->N", @@ -45813,21 +42558,21 @@ ] }, { - "id": 478, + "id": 458, "meta": "...", "name": "afifo", "type": "A->A", "description": "Buffer input frames and send them when they are requested." }, { - "id": 479, + "id": 459, "meta": "...", "name": "fifo", "type": "V->V", "description": "Buffer input images and send them when they are requested." }, { - "id": 480, + "id": 460, "meta": "...", "name": "abuffer", "type": "|->A", @@ -45876,7 +42621,7 @@ ] }, { - "id": 481, + "id": 461, "meta": "...", "name": "buffer", "type": "|->V", @@ -45949,7 +42694,7 @@ ] }, { - "id": 482, + "id": 462, "meta": "...", "name": "abuffersink", "type": "A->|", @@ -46006,7 +42751,7 @@ ] }, { - "id": 483, + "id": 463, "meta": "...", "name": "buffersink", "type": "V->|", diff --git a/src/stores.js b/src/stores.js index f64afac..86720f2 100644 --- a/src/stores.js +++ b/src/stores.js @@ -1,5 +1,5 @@ import { writable } from 'svelte/store'; -export const inputs = writable(["input.mp4"]); -export const output = writable("output.mp4"); +export const inputs = writable(["example.mp4"]); +export const output = writable("out.mp4"); export const filters = writable([]); diff --git a/vite.config.js b/vite.config.js index d701969..fa639c7 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,4 +4,13 @@ import { svelte } from '@sveltejs/vite-plugin-svelte' // https://vitejs.dev/config/ export default defineConfig({ plugins: [svelte()], + optimizeDeps: { + exclude: ["@ffmpeg/ffmpeg", "@ffmpeg/util"], + }, + server: { + headers: { + "Cross-Origin-Opener-Policy": "same-origin", + "Cross-Origin-Embedder-Policy": "require-corp", + }, + }, })