From 43107c6244f7354e281a635a1e5e2ce3809da47d Mon Sep 17 00:00:00 2001 From: Sam Lavigne Date: Sun, 3 Sep 2023 16:21:45 -0400 Subject: [PATCH] fix handles on N type nodes --- parse_filters.py | 15 + src/Filter.svelte | 23 +- src/filters.json | 2901 ++++++++++++++++++++++++++++++++++++++++++++- src/stores.js | 79 +- 4 files changed, 2964 insertions(+), 54 deletions(-) diff --git a/parse_filters.py b/parse_filters.py index 9b70eee..f406ea2 100644 --- a/parse_filters.py +++ b/parse_filters.py @@ -58,13 +58,22 @@ def get_params(f): text=True, capture_output=True, ) + text = help_text.stdout + + input_channels, output_channels = f["type"].split("->") + f["inputs"] = list(input_channels.lower().strip()) + f["outputs"] = list(output_channels.lower().strip()) + try: text = text.split("AVOptions:")[1] except Exception as e: return f + lines = text.split("\n") + params = [] + for l in lines: if not l.startswith(" "): continue @@ -124,6 +133,12 @@ def get_params(f): if type(item["default"]) == str: item["default"] = item["default"].replace("'", "").replace('"', "") + if item["name"] == "inputs" and item["default"]: + f["inputs"] = [f["outputs"][0]] * item["default"] + + if item["name"] == "outputs" and item["default"]: + f["outputs"] = [f["inputs"][0]] * item["default"] + else: item = {"value": parts[0], "desc": " ".join(parts[3:])} if "options" not in params[-1]: diff --git a/src/Filter.svelte b/src/Filter.svelte index 9c64a64..814ffc1 100644 --- a/src/Filter.svelte +++ b/src/Filter.svelte @@ -1,10 +1,12 @@ @@ -53,8 +71,9 @@ min={p.min} max={p.max} bind:value={p.value} + on:change={(e) => changeHandles(e, p.name)} /> - + changeHandles(e, p.name)} /> {:else} {/if} diff --git a/src/filters.json b/src/filters.json index 9c64cf6..047dde5 100644 --- a/src/filters.json +++ b/src/filters.json @@ -5,6 +5,12 @@ "name": "abench", "type": "A->A", "description": "Benchmark part of a filtergraph.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "action", @@ -32,6 +38,12 @@ "name": "acompressor", "type": "A->A", "description": "Audio compressor.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level_in", @@ -167,6 +179,12 @@ "name": "acontrast", "type": "A->A", "description": "Simple audio dynamic range compression/expansion filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "contrast", @@ -183,7 +201,13 @@ "meta": "...", "name": "acopy", "type": "A->A", - "description": "Copy the input audio unchanged to the output." + "description": "Copy the input audio unchanged to the output.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ] }, { "id": 4, @@ -191,6 +215,12 @@ "name": "acue", "type": "A->A", "description": "Delay filtering to match a cue.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "cue", @@ -224,6 +254,13 @@ "name": "acrossfade", "type": "AA->A", "description": "Cross fade two input audio streams.", + "inputs": [ + "a", + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "nb_samples", @@ -641,6 +678,12 @@ "name": "acrossover", "type": "A->N", "description": "Split audio into per-bands streams.", + "inputs": [ + "a" + ], + "outputs": [ + "n" + ], "params": [ { "name": "split", @@ -746,6 +789,12 @@ "name": "acrusher", "type": "A->A", "description": "Reduce audio bit resolution.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level_in", @@ -853,6 +902,12 @@ "name": "adeclick", "type": "A->A", "description": "Remove impulsive noise from input audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "window", @@ -994,6 +1049,12 @@ "name": "adeclip", "type": "A->A", "description": "Remove clipping from input audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "window", @@ -1135,6 +1196,12 @@ "name": "adecorrelate", "type": "A->A", "description": "Apply decorrelation to input audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "stages", @@ -1160,6 +1227,12 @@ "name": "adelay", "type": "A->A", "description": "Delay one or more audio channels.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "delays", @@ -1185,6 +1258,12 @@ "name": "adenorm", "type": "A->A", "description": "Remedy denormals by adding extremely low-level noise.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level", @@ -1228,6 +1307,12 @@ "name": "aderivative", "type": "A->A", "description": "Compute derivative of input audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [] }, { @@ -1236,6 +1321,12 @@ "name": "adynamicequalizer", "type": "A->A", "description": "Apply Dynamic Equalization of input audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "threshold", @@ -1409,6 +1500,12 @@ "name": "adynamicsmooth", "type": "A->A", "description": "Apply Dynamic Smoothing of input audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "sensitivity", @@ -1434,6 +1531,12 @@ "name": "aecho", "type": "A->A", "description": "Add echoing to the audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "in_gain", @@ -1475,6 +1578,12 @@ "name": "aemphasis", "type": "A->A", "description": "Audio emphasis.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level_in", @@ -1564,6 +1673,12 @@ "name": "aeval", "type": "A->A", "description": "Filter audio signal according to a specified expression.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "exprs", @@ -1597,6 +1712,12 @@ "name": "aexciter", "type": "A->A", "description": "Enhance high frequency part of audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level_in", @@ -1670,6 +1791,12 @@ "name": "afade", "type": "A->A", "description": "Fade in/out input audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "type", @@ -1975,6 +2102,12 @@ "name": "afftdn", "type": "A->A", "description": "Denoise audio samples using FFT.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "noise_reduction", @@ -2408,6 +2541,12 @@ "name": "afftfilt", "type": "A->A", "description": "Apply arbitrary expressions to samples in frequency domain.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "real", @@ -2547,6 +2686,12 @@ "name": "afir", "type": "N->N", "description": "Apply Finite Impulse Response filter with supplied coefficients in additional stream(s).", + "inputs": [ + "n" + ], + "outputs": [ + "n" + ], "params": [ { "name": "dry", @@ -2734,6 +2879,12 @@ "name": "aformat", "type": "A->A", "description": "Convert the input audio to one of the specified formats.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "sample_fmts", @@ -2791,6 +2942,12 @@ "name": "afreqshift", "type": "A->A", "description": "Apply frequency shifting to input audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "shift", @@ -2824,6 +2981,12 @@ "name": "afwtdn", "type": "A->A", "description": "Denoise audio stream using Wavelets.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "sigma", @@ -2927,6 +3090,12 @@ "name": "agate", "type": "A->A", "description": "Audio gate.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level_in", @@ -3062,6 +3231,12 @@ "name": "aiir", "type": "A->N", "description": "Apply Infinite Impulse Response filter with supplied coefficients.", + "inputs": [ + "a" + ], + "outputs": [ + "n" + ], "params": [ { "name": "zeros", @@ -3363,6 +3538,12 @@ "name": "aintegral", "type": "A->A", "description": "Compute integral of input audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [] }, { @@ -3371,6 +3552,12 @@ "name": "ainterleave", "type": "N->A", "description": "Temporally interleave audio inputs.", + "inputs": [ + "n" + ], + "outputs": [ + "a" + ], "params": [ { "name": "nb_inputs", @@ -3417,7 +3604,13 @@ "meta": "T..", "name": "alatency", "type": "A->A", - "description": "Report audio filtering latency." + "description": "Report audio filtering latency.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ] }, { "id": 32, @@ -3425,6 +3618,12 @@ "name": "alimiter", "type": "A->A", "description": "Audio lookahead limiter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level_in", @@ -3506,6 +3705,12 @@ "name": "allpass", "type": "A->A", "description": "Apply a two-pole all-pass filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "frequency", @@ -3807,6 +4012,12 @@ "name": "aloop", "type": "A->A", "description": "Loop audio samples.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "loop", @@ -3840,6 +4051,13 @@ "name": "amerge", "type": "N->A", "description": "Merge two or more audio streams into a single multi-channel stream.", + "inputs": [ + "a", + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "inputs", @@ -3857,6 +4075,12 @@ "name": "ametadata", "type": "A->A", "description": "Manipulate audio frame metadata.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "mode", @@ -3974,6 +4198,13 @@ "name": "amix", "type": "N->A", "description": "Audio mixing.", + "inputs": [ + "a", + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "inputs", @@ -4036,7 +4267,14 @@ "meta": "...", "name": "amultiply", "type": "AA->A", - "description": "Multiply two audio streams." + "description": "Multiply two audio streams.", + "inputs": [ + "a", + "a" + ], + "outputs": [ + "a" + ] }, { "id": 39, @@ -4044,6 +4282,12 @@ "name": "anequalizer", "type": "A->N", "description": "Apply high-order audio parametric multi band equalizer.", + "inputs": [ + "a" + ], + "outputs": [ + "n" + ], "params": [ { "name": "params", @@ -4111,6 +4355,12 @@ "name": "anlmdn", "type": "A->A", "description": "Reduce broadband noise from stream using Non-Local Means.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "strength", @@ -4228,6 +4478,13 @@ "name": "anlmf", "type": "AA->A", "description": "Apply Normalized Least-Mean-Fourth algorithm to first audio stream.", + "inputs": [ + "a", + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "order", @@ -4295,6 +4552,13 @@ "name": "anlms", "type": "AA->A", "description": "Apply Normalized Least-Mean-Squares algorithm to first audio stream.", + "inputs": [ + "a", + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "order", @@ -4361,7 +4625,13 @@ "meta": "...", "name": "anull", "type": "A->A", - "description": "Pass the source unchanged to the output." + "description": "Pass the source unchanged to the output.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ] }, { "id": 44, @@ -4369,6 +4639,12 @@ "name": "apad", "type": "A->A", "description": "Pad audio with silence.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "packet_size", @@ -4418,6 +4694,12 @@ "name": "aperms", "type": "A->A", "description": "Set permissions for the output audio frame.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "mode", @@ -4465,6 +4747,12 @@ "name": "aphaser", "type": "A->A", "description": "Add a phasing effect to the audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "in_gain", @@ -4540,6 +4828,12 @@ "name": "aphaseshift", "type": "A->A", "description": "Apply phase shifting to input audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "shift", @@ -4573,6 +4867,12 @@ "name": "apsyclip", "type": "A->A", "description": "Audio Psychoacoustic Clipper.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level_in", @@ -4638,6 +4938,12 @@ "name": "apulsator", "type": "A->A", "description": "Audio pulsator.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level_in", @@ -4771,6 +5077,12 @@ "name": "arealtime", "type": "A->A", "description": "Slow down filtering to match realtime.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "limit", @@ -4796,6 +5108,12 @@ "name": "aresample", "type": "A->A", "description": "Resample audio data.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "sample_rate", @@ -4812,7 +5130,13 @@ "meta": "...", "name": "areverse", "type": "A->A", - "description": "Reverse an audio clip." + "description": "Reverse an audio clip.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ] }, { "id": 53, @@ -4820,6 +5144,12 @@ "name": "arnndn", "type": "A->A", "description": "Reduce noise from speech using Recurrent Neural Networks.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "model", @@ -4852,7 +5182,14 @@ "meta": "...", "name": "asdr", "type": "AA->A", - "description": "Measure Audio Signal-to-Distortion Ratio." + "description": "Measure Audio Signal-to-Distortion Ratio.", + "inputs": [ + "a", + "a" + ], + "outputs": [ + "a" + ] }, { "id": 55, @@ -4860,6 +5197,12 @@ "name": "asegment", "type": "A->N", "description": "Segment audio stream.", + "inputs": [ + "a" + ], + "outputs": [ + "n" + ], "params": [ { "name": "timestamps", @@ -4885,6 +5228,12 @@ "name": "aselect", "type": "A->N", "description": "Select audio frames to pass in output.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "expr", @@ -4926,6 +5275,12 @@ "name": "asendcmd", "type": "A->A", "description": "Send commands to filters.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "commands", @@ -4967,6 +5322,12 @@ "name": "asetnsamples", "type": "A->A", "description": "Set the number of samples for each output audio frames.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "nb_out_samples", @@ -5008,6 +5369,12 @@ "name": "asetpts", "type": "A->A", "description": "Set PTS for the output audio frame.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "expr", @@ -5025,6 +5392,12 @@ "name": "asetrate", "type": "A->A", "description": "Change the sample rate without altering the data.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "sample_rate", @@ -5050,6 +5423,12 @@ "name": "asettb", "type": "A->A", "description": "Set timebase for the audio output link.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "expr", @@ -5074,7 +5453,13 @@ "meta": "...", "name": "ashowinfo", "type": "A->A", - "description": "Show textual information for each audio frame." + "description": "Show textual information for each audio frame.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ] }, { "id": 63, @@ -5082,6 +5467,12 @@ "name": "asidedata", "type": "A->A", "description": "Manipulate audio frame side data.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "mode", @@ -5203,6 +5594,12 @@ "name": "asoftclip", "type": "A->A", "description": "Audio Soft Clipper.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "type", @@ -5290,6 +5687,12 @@ "name": "aspectralstats", "type": "A->A", "description": "Show frequency domain statistics about audio frames.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "win_size", @@ -5483,6 +5886,13 @@ "name": "asplit", "type": "A->N", "description": "Pass on the audio input to N audio outputs.", + "inputs": [ + "a" + ], + "outputs": [ + "a", + "a" + ], "params": [ { "name": "outputs", @@ -5500,6 +5910,12 @@ "name": "astats", "type": "A->A", "description": "Show time domain statistics about audio frames.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "length", @@ -5769,6 +6185,13 @@ "name": "astreamselect", "type": "N->N", "description": "Select audio streams", + "inputs": [ + "n", + "n" + ], + "outputs": [ + "n" + ], "params": [ { "name": "inputs", @@ -5794,6 +6217,12 @@ "name": "asubboost", "type": "A->A", "description": "Boost subwoofer frequencies.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "dry", @@ -5875,6 +6304,12 @@ "name": "asubcut", "type": "A->A", "description": "Cut subwoofer frequencies.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "cutoff", @@ -5908,6 +6343,12 @@ "name": "asupercut", "type": "A->A", "description": "Cut super frequencies.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "cutoff", @@ -5941,6 +6382,12 @@ "name": "asuperpass", "type": "A->A", "description": "Apply high order Butterworth band-pass filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "centerf", @@ -5982,6 +6429,12 @@ "name": "asuperstop", "type": "A->A", "description": "Apply high order Butterworth band-stop filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "centerf", @@ -6023,6 +6476,12 @@ "name": "atempo", "type": "A->A", "description": "Adjust audio tempo.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "tempo", @@ -6040,6 +6499,12 @@ "name": "atilt", "type": "A->A", "description": "Apply spectral tilt to audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "freq", @@ -6089,6 +6554,12 @@ "name": "atrim", "type": "A->A", "description": "Pick one continuous section from the input, drop the rest.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "start", @@ -6178,6 +6649,13 @@ "name": "axcorrelate", "type": "AA->A", "description": "Cross-correlate two audio streams.", + "inputs": [ + "a", + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "size", @@ -6213,6 +6691,12 @@ "name": "bandpass", "type": "A->A", "description": "Apply a two-pole Butterworth band-pass filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "frequency", @@ -6522,6 +7006,12 @@ "name": "bandreject", "type": "A->A", "description": "Apply a two-pole Butterworth band-reject filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "frequency", @@ -6823,6 +7313,12 @@ "name": "bass", "type": "A->A", "description": "Boost or cut lower frequencies.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "frequency", @@ -7156,6 +7652,12 @@ "name": "biquad", "type": "A->A", "description": "Apply a biquad IIR filter with the given coefficients.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "a0", @@ -7413,6 +7915,12 @@ "name": "channelmap", "type": "A->A", "description": "Remap audio channels.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "map", @@ -7438,6 +7946,12 @@ "name": "channelsplit", "type": "A->N", "description": "Split audio into per-channel streams.", + "inputs": [ + "a" + ], + "outputs": [ + "n" + ], "params": [ { "name": "channel_layout", @@ -7463,6 +7977,12 @@ "name": "chorus", "type": "A->A", "description": "Add a chorus effect to the audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "in_gain", @@ -7520,6 +8040,12 @@ "name": "compand", "type": "A->A", "description": "Compress or expand audio dynamic range.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "attacks", @@ -7585,6 +8111,12 @@ "name": "compensationdelay", "type": "A->A", "description": "Audio Compensation Delay Line.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "mm", @@ -7642,6 +8174,12 @@ "name": "crossfeed", "type": "A->A", "description": "Apply headphone crossfeed filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "strength", @@ -7699,6 +8237,12 @@ "name": "crystalizer", "type": "A->A", "description": "Simple audio noise sharpening filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "i", @@ -7724,6 +8268,12 @@ "name": "dcshift", "type": "A->A", "description": "Apply a DC shift to the audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "shift", @@ -7749,6 +8299,12 @@ "name": "deesser", "type": "A->A", "description": "Apply de-essing to the audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "i", @@ -7804,6 +8360,12 @@ "name": "dialoguenhance", "type": "A->A", "description": "Audio Dialogue Enhancement.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "original", @@ -7837,6 +8399,12 @@ "name": "drmeter", "type": "A->A", "description": "Measure audio dynamic range.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "length", @@ -7854,6 +8422,12 @@ "name": "dynaudnorm", "type": "A->A", "description": "Dynamic Audio Normalizer.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "framelen", @@ -8070,7 +8644,13 @@ "meta": "...", "name": "earwax", "type": "A->A", - "description": "Widen the stereo image." + "description": "Widen the stereo image.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ] }, { "id": 95, @@ -8078,6 +8658,12 @@ "name": "ebur128", "type": "A->N", "description": "EBU R128 scanner.", + "inputs": [ + "a" + ], + "outputs": [ + "n" + ], "params": [ { "name": "video", @@ -8239,6 +8825,12 @@ "name": "equalizer", "type": "A->A", "description": "Apply two-pole peaking equalization (EQ) filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "frequency", @@ -8556,6 +9148,12 @@ "name": "extrastereo", "type": "A->A", "description": "Increase difference between stereo audio channels.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "m", @@ -8581,6 +9179,12 @@ "name": "firequalizer", "type": "A->A", "description": "Finite Impulse Response Equalizer.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "gain", @@ -8772,6 +9376,12 @@ "name": "flanger", "type": "A->A", "description": "Apply a flanging effect to the audio.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "delay", @@ -8873,6 +9483,12 @@ "name": "haas", "type": "A->A", "description": "Apply Haas Stereo Enhancer.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level_in", @@ -9004,6 +9620,12 @@ "name": "hdcd", "type": "A->A", "description": "Apply High Definition Compatible Digital (HDCD) decoding.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "disable_autoconvert", @@ -9097,6 +9719,12 @@ "name": "headphone", "type": "N->A", "description": "Apply headphone binaural spatialization with HRTFs in additional streams.", + "inputs": [ + "n" + ], + "outputs": [ + "a" + ], "params": [ { "name": "map", @@ -9174,6 +9802,12 @@ "name": "highpass", "type": "A->A", "description": "Apply a high-pass filter with 3dB point frequency.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "frequency", @@ -9491,6 +10125,12 @@ "name": "highshelf", "type": "A->A", "description": "Apply a high shelf filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "frequency", @@ -9824,6 +10464,13 @@ "name": "join", "type": "N->A", "description": "Join multiple audio streams into multi-channel output.", + "inputs": [ + "a", + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "inputs", @@ -9857,6 +10504,12 @@ "name": "loudnorm", "type": "A->A", "description": "EBU R128 loudness normalization", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "I", @@ -10016,6 +10669,12 @@ "name": "lowpass", "type": "A->A", "description": "Apply a low-pass filter with 3dB point frequency.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "frequency", @@ -10333,6 +10992,12 @@ "name": "lowshelf", "type": "A->A", "description": "Apply a low shelf filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "frequency", @@ -10666,6 +11331,12 @@ "name": "mcompand", "type": "A->A", "description": "Multiband Compress or expand audio dynamic range.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "args", @@ -10683,6 +11354,12 @@ "name": "pan", "type": "A->A", "description": "Remix channels with coefficients (panning).", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "args", @@ -10699,7 +11376,13 @@ "meta": "...", "name": "replaygain", "type": "A->A", - "description": "ReplayGain scanner." + "description": "ReplayGain scanner.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ] }, { "id": 112, @@ -10707,6 +11390,13 @@ "name": "sidechaincompress", "type": "AA->A", "description": "Sidechain compressor.", + "inputs": [ + "a", + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level_in", @@ -10842,6 +11532,13 @@ "name": "sidechaingate", "type": "AA->A", "description": "Audio sidechain gate.", + "inputs": [ + "a", + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level_in", @@ -10977,6 +11674,12 @@ "name": "silencedetect", "type": "A->A", "description": "Detect silence.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "n", @@ -11034,6 +11737,12 @@ "name": "silenceremove", "type": "A->A", "description": "Remove silence.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "start_periods", @@ -11169,6 +11878,12 @@ "name": "speechnorm", "type": "A->A", "description": "Speech Normalizer.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "peak", @@ -11338,6 +12053,12 @@ "name": "stereotools", "type": "A->A", "description": "Apply various stereo tools.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "level_in", @@ -11581,6 +12302,12 @@ "name": "stereowiden", "type": "A->A", "description": "Apply stereo widening effect.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "delay", @@ -11622,6 +12349,12 @@ "name": "superequalizer", "type": "A->A", "description": "Apply 18 band equalization filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "1b", @@ -11775,6 +12508,12 @@ "name": "surround", "type": "A->A", "description": "Apply audio surround upmix filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "chl_out", @@ -12284,6 +13023,12 @@ "name": "tiltshelf", "type": "A->A", "description": "Apply a tilt shelf filter.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "frequency", @@ -12617,6 +13362,12 @@ "name": "treble", "type": "A->A", "description": "Boost or cut upper frequencies.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "frequency", @@ -12950,6 +13701,12 @@ "name": "tremolo", "type": "A->A", "description": "Apply tremolo effect.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "f", @@ -12975,6 +13732,12 @@ "name": "vibrato", "type": "A->A", "description": "Apply vibrato effect.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "f", @@ -13000,6 +13763,12 @@ "name": "virtualbass", "type": "A->A", "description": "Audio Virtual Bass.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "cutoff", @@ -13025,6 +13794,12 @@ "name": "volume", "type": "A->A", "description": "Change input volume.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ], "params": [ { "name": "volume", @@ -13123,7 +13898,13 @@ "meta": "...", "name": "volumedetect", "type": "A->A", - "description": "Detect audio volume." + "description": "Detect audio volume.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ] }, { "id": 128, @@ -13131,6 +13912,12 @@ "name": "aevalsrc", "type": "|->A", "description": "Generate an audio signal generated by an expression.", + "inputs": [ + "|" + ], + "outputs": [ + "a" + ], "params": [ { "name": "exprs", @@ -13212,6 +13999,12 @@ "name": "afirsrc", "type": "|->A", "description": "Generate a FIR coefficients audio stream.", + "inputs": [ + "|" + ], + "outputs": [ + "a" + ], "params": [ { "name": "taps", @@ -13689,6 +14482,12 @@ "name": "anoisesrc", "type": "|->A", "description": "Generate a noise audio signal.", + "inputs": [ + "|" + ], + "outputs": [ + "a" + ], "params": [ { "name": "sample_rate", @@ -13880,6 +14679,12 @@ "name": "anullsrc", "type": "|->A", "description": "Null audio source, return empty audio frames.", + "inputs": [ + "|" + ], + "outputs": [ + "a" + ], "params": [ { "name": "channel_layout", @@ -13953,6 +14758,12 @@ "name": "hilbert", "type": "|->A", "description": "Generate a Hilbert transform FIR coefficients.", + "inputs": [ + "|" + ], + "outputs": [ + "a" + ], "params": [ { "name": "sample_rate", @@ -14382,6 +15193,12 @@ "name": "sinc", "type": "|->A", "description": "Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.", + "inputs": [ + "|" + ], + "outputs": [ + "a" + ], "params": [ { "name": "sample_rate", @@ -14487,6 +15304,12 @@ "name": "sine", "type": "|->A", "description": "Generate sine wave audio signal.", + "inputs": [ + "|" + ], + "outputs": [ + "a" + ], "params": [ { "name": "frequency", @@ -14567,7 +15390,13 @@ "meta": "...", "name": "anullsink", "type": "A->|", - "description": "Do absolutely nothing with the input audio." + "description": "Do absolutely nothing with the input audio.", + "inputs": [ + "a" + ], + "outputs": [ + "|" + ] }, { "id": 136, @@ -14575,6 +15404,12 @@ "name": "addroi", "type": "V->V", "description": "Add region of interest to frame.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "x", @@ -14631,7 +15466,13 @@ "meta": "...", "name": "alphaextract", "type": "V->V", - "description": "Extract an alpha channel as a grayscale image component." + "description": "Extract an alpha channel as a grayscale image component.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ] }, { "id": 138, @@ -14639,6 +15480,13 @@ "name": "alphamerge", "type": "VV->V", "description": "Copy the luma value of the second input into the alpha channel of the first input.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [] }, { @@ -14647,6 +15495,12 @@ "name": "amplify", "type": "V->V", "description": "Amplify changes between successive video frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "radius", @@ -14712,6 +15566,12 @@ "name": "ass", "type": "V->V", "description": "Render ASS subtitles onto input video using the libass library.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "filename", @@ -14783,6 +15643,12 @@ "name": "atadenoise", "type": "V->V", "description": "Apply an Adaptive Temporal Averaging Denoiser.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "0a", @@ -14898,6 +15764,12 @@ "name": "avgblur", "type": "V->V", "description": "Apply Average Blur filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "sizeX", @@ -14931,6 +15803,12 @@ "name": "bbox", "type": "V->V", "description": "Compute bounding box for each frame.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "min_val", @@ -14948,6 +15826,12 @@ "name": "bench", "type": "V->V", "description": "Benchmark part of a filtergraph.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "action", @@ -14975,6 +15859,12 @@ "name": "bilateral", "type": "V->V", "description": "Apply Bilateral filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "sigmaS", @@ -15008,6 +15898,12 @@ "name": "bitplanenoise", "type": "V->V", "description": "Measure bit plane noise.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "bitplane", @@ -15033,6 +15929,12 @@ "name": "blackdetect", "type": "V->V", "description": "Detect video intervals that are (almost) black.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "d", @@ -15090,6 +15992,12 @@ "name": "blackframe", "type": "V->V", "description": "Detect frames that are (almost) black.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "amount", @@ -15123,6 +16031,13 @@ "name": "blend", "type": "VV->V", "description": "Blend two video frames into each other.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "c0_mode", @@ -16102,6 +17017,12 @@ "name": "blockdetect", "type": "V->V", "description": "Blockdetect filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "period_min", @@ -16135,6 +17056,12 @@ "name": "blurdetect", "type": "V->V", "description": "Blurdetect filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "high", @@ -16200,6 +17127,12 @@ "name": "bm3d", "type": "N->V", "description": "Block-Matching 3D denoiser.", + "inputs": [ + "n" + ], + "outputs": [ + "v" + ], "params": [ { "name": "sigma", @@ -16307,6 +17240,12 @@ "name": "boxblur", "type": "V->V", "description": "Blur the input.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "luma_radius", @@ -16412,6 +17351,12 @@ "name": "bwdif", "type": "V->V", "description": "Deinterlace the input image.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -16479,6 +17424,12 @@ "name": "cas", "type": "V->V", "description": "Contrast Adaptive Sharpen.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "strength", @@ -16504,6 +17455,12 @@ "name": "chromahold", "type": "V->V", "description": "Turns a certain color range into gray.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "color", @@ -16545,6 +17502,12 @@ "name": "chromakey", "type": "V->V", "description": "Turns a certain color into transparency. Operates on YUV colors.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "color", @@ -16586,6 +17549,12 @@ "name": "chromanr", "type": "V->V", "description": "Reduce chrominance noise.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "thres", @@ -16677,6 +17646,12 @@ "name": "chromashift", "type": "V->V", "description": "Shift chroma.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "cbh", @@ -16736,6 +17711,12 @@ "name": "ciescope", "type": "V->V", "description": "Video CIE scope.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "system", @@ -16971,6 +17952,12 @@ "name": "codecview", "type": "V->V", "description": "Visualize information about some codecs.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mv", @@ -17098,6 +18085,12 @@ "name": "colorbalance", "type": "V->V", "description": "Adjust the color balance.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "rs", @@ -17187,6 +18180,12 @@ "name": "colorchannelmixer", "type": "V->V", "description": "Adjust colors by mixing color channels.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "rr", @@ -17370,6 +18369,12 @@ "name": "colorcontrast", "type": "V->V", "description": "Adjust color contrast between RGB components.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "rc", @@ -17435,6 +18440,12 @@ "name": "colorcorrect", "type": "V->V", "description": "Adjust color white balance selectively for blacks and whites.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "rl", @@ -17510,6 +18521,12 @@ "name": "colorize", "type": "V->V", "description": "Overlay a solid color on the video stream.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "hue", @@ -17551,6 +18568,12 @@ "name": "colorkey", "type": "V->V", "description": "Turns a certain color into transparency. Operates on RGB colors.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "color", @@ -17584,6 +18607,12 @@ "name": "colorhold", "type": "V->V", "description": "Turns a certain color range into gray. Operates on RGB colors.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "color", @@ -17617,6 +18646,12 @@ "name": "colorlevels", "type": "V->V", "description": "Adjust the color levels.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "rimin", @@ -17792,6 +18827,14 @@ "name": "colormap", "type": "VVV->V", "description": "Apply custom Color Maps to video stream.", + "inputs": [ + "v", + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "patch_size", @@ -17853,6 +18896,12 @@ "name": "colormatrix", "type": "V->V", "description": "Convert color matrix.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "src", @@ -17946,6 +18995,12 @@ "name": "colorspace", "type": "V->V", "description": "Convert between colorspaces.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "all", @@ -18525,6 +19580,12 @@ "name": "colortemperature", "type": "V->V", "description": "Adjust color temperature of video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "temperature", @@ -18558,6 +19619,12 @@ "name": "convolution", "type": "V->V", "description": "Apply convolution filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "0m", @@ -18751,6 +19818,13 @@ "name": "convolve", "type": "VV->V", "description": "Convolve first video stream with second video stream.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -18793,7 +19867,13 @@ "meta": "...", "name": "copy", "type": "V->V", - "description": "Copy the input video unchanged to the output." + "description": "Copy the input video unchanged to the output.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ] }, { "id": 177, @@ -18801,6 +19881,12 @@ "name": "cover_rect", "type": "V->V", "description": "Find and cover a user specified object.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "cover", @@ -18836,6 +19922,12 @@ "name": "crop", "type": "V->V", "description": "Crop the input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "out_w", @@ -18909,6 +20001,12 @@ "name": "cropdetect", "type": "V->V", "description": "Auto-detect crop size.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "limit", @@ -19008,6 +20106,12 @@ "name": "cue", "type": "V->V", "description": "Delay filtering to match a cue.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "cue", @@ -19041,6 +20145,12 @@ "name": "curves", "type": "V->V", "description": "Adjust components curves.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "preset", @@ -19210,6 +20320,12 @@ "name": "datascope", "type": "V->V", "description": "Video data analysis.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -19315,6 +20431,12 @@ "name": "dblur", "type": "V->V", "description": "Apply Directional Blur filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "angle", @@ -19348,6 +20470,12 @@ "name": "dctdnoiz", "type": "V->V", "description": "Denoise frames using 2D DCT.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "sigma", @@ -19405,6 +20533,12 @@ "name": "deband", "type": "V->V", "description": "Debands video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "1thr", @@ -19510,6 +20644,12 @@ "name": "deblock", "type": "V->V", "description": "Deblock video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "filter", @@ -19585,6 +20725,12 @@ "name": "decimate", "type": "N->V", "description": "Decimate frames (post field matching filter).", + "inputs": [ + "n" + ], + "outputs": [ + "v" + ], "params": [ { "name": "cycle", @@ -19658,6 +20804,13 @@ "name": "deconvolve", "type": "VV->V", "description": "Deconvolve first video stream with second video stream.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -19701,6 +20854,12 @@ "name": "dedot", "type": "V->V", "description": "Reduce cross-luminance and cross-color.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "m", @@ -19760,6 +20919,12 @@ "name": "deflate", "type": "V->V", "description": "Apply deflate effect.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "threshold0", @@ -19801,6 +20966,12 @@ "name": "deflicker", "type": "V->V", "description": "Remove temporal frame luminance variations.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -19910,6 +21081,12 @@ "name": "dejudder", "type": "V->V", "description": "Remove judder produced by pullup.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "cycle", @@ -19927,6 +21104,12 @@ "name": "delogo", "type": "V->V", "description": "Remove logo from input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "x", @@ -19976,6 +21159,12 @@ "name": "derain", "type": "V->V", "description": "Apply derain filter to the input.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "filter_type", @@ -20041,6 +21230,12 @@ "name": "deshake", "type": "V->V", "description": "Stabilize shaky video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "x", @@ -20174,6 +21369,12 @@ "name": "despill", "type": "V->V", "description": "Despill video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "type", @@ -20257,6 +21458,12 @@ "name": "detelecine", "type": "V->V", "description": "Apply an inverse telecine pattern.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "first_field", @@ -20308,6 +21515,12 @@ "name": "dilation", "type": "V->V", "description": "Apply dilation effect.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "coordinates", @@ -20357,6 +21570,14 @@ "name": "displace", "type": "VVV->V", "description": "Displace pixels.", + "inputs": [ + "v", + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "edge", @@ -20392,6 +21613,12 @@ "name": "dnn_classify", "type": "V->V", "description": "Apply DNN classify filter to the input.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "dnn_backend", @@ -20481,6 +21708,12 @@ "name": "dnn_detect", "type": "V->V", "description": "Apply DNN detect filter to the input.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "dnn_backend", @@ -20562,6 +21795,12 @@ "name": "dnn_processing", "type": "V->V", "description": "Apply DNN processing filter to the input.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "dnn_backend", @@ -20633,6 +21872,12 @@ "name": "doubleweave", "type": "V->V", "description": "Weave input video fields into double number of frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "first_field", @@ -20668,6 +21913,12 @@ "name": "drawbox", "type": "V->V", "description": "Draw a colored box on the input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "x", @@ -20773,6 +22024,12 @@ "name": "drawgraph", "type": "V->V", "description": "Draw a graph using input video metadata.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "m1", @@ -20954,6 +22211,12 @@ "name": "drawgrid", "type": "V->V", "description": "Draw a colored grid on the input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "x", @@ -21051,6 +22314,12 @@ "name": "drawtext", "type": "V->V", "description": "Draw text on top of video frames using libfreetype library.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "fontfile", @@ -21414,6 +22683,12 @@ "name": "edgedetect", "type": "V->V", "description": "Detect and draw edge.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "high", @@ -21495,6 +22770,12 @@ "name": "elbg", "type": "V->V", "description": "Apply posterize effect, using the ELBG algorithm.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "codebook_length", @@ -21568,6 +22849,12 @@ "name": "entropy", "type": "V->V", "description": "Measure video frames entropy.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -21595,6 +22882,12 @@ "name": "epx", "type": "V->V", "description": "Scale the input using EPX algorithm.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "n", @@ -21612,6 +22905,12 @@ "name": "eq", "type": "V->V", "description": "Adjust brightness, contrast, gamma, and saturation.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "contrast", @@ -21703,6 +23002,12 @@ "name": "erosion", "type": "V->V", "description": "Apply erosion effect.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "coordinates", @@ -21752,6 +23057,12 @@ "name": "estdif", "type": "V->V", "description": "Apply Edge Slope Tracing deinterlace.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -21881,6 +23192,12 @@ "name": "exposure", "type": "V->V", "description": "Adjust exposure of the video stream.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "exposure", @@ -21906,6 +23223,12 @@ "name": "extractplanes", "type": "V->N", "description": "Extract planes as grayscale frames.", + "inputs": [ + "v" + ], + "outputs": [ + "n" + ], "params": [ { "name": "planes", @@ -21953,6 +23276,12 @@ "name": "fade", "type": "V->V", "description": "Fade in/out input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "type", @@ -22086,6 +23415,14 @@ "name": "feedback", "type": "VV->VV", "description": "Apply feedback video filter.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v", + "v" + ], "params": [ { "name": "x", @@ -22127,6 +23464,12 @@ "name": "fftdnoiz", "type": "V->V", "description": "Denoise frames using 3D FFT.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "sigma", @@ -22308,6 +23651,12 @@ "name": "fftfilt", "type": "V->V", "description": "Apply arbitrary expressions to pixels in frequency domain.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "dc_Y", @@ -22383,6 +23732,12 @@ "name": "field", "type": "V->V", "description": "Extract a field from the input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "type", @@ -22410,6 +23765,12 @@ "name": "fieldhint", "type": "V->V", "description": "Field matching using hints.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "hint", @@ -22449,6 +23810,12 @@ "name": "fieldmatch", "type": "N->V", "description": "Field matching for inverse telecine.", + "inputs": [ + "n" + ], + "outputs": [ + "v" + ], "params": [ { "name": "order", @@ -22660,6 +24027,12 @@ "name": "fieldorder", "type": "V->V", "description": "Set the field order.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "order", @@ -22687,6 +24060,12 @@ "name": "fillborders", "type": "V->V", "description": "Fill borders of the input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "left", @@ -22774,6 +24153,12 @@ "name": "find_rect", "type": "V->V", "description": "Find a user specified object.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "object", @@ -22847,6 +24232,12 @@ "name": "floodfill", "type": "V->V", "description": "Fill area with same color with another color.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "x", @@ -22936,6 +24327,12 @@ "name": "format", "type": "V->V", "description": "Convert the input video to one of the specified pixel formats.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "pix_fmts", @@ -22953,6 +24350,12 @@ "name": "fps", "type": "V->V", "description": "Force constant framerate.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "fps", @@ -23026,6 +24429,13 @@ "name": "framepack", "type": "VV->V", "description": "Generate a frame packed stereoscopic video.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "format", @@ -23065,6 +24475,12 @@ "name": "framerate", "type": "V->V", "description": "Upsamples or downsamples progressive source between specified frame rates.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "fps", @@ -23124,6 +24540,12 @@ "name": "framestep", "type": "V->V", "description": "Select one frame every N frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "step", @@ -23141,6 +24563,12 @@ "name": "freezedetect", "type": "V->V", "description": "Detects frozen video input.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "n", @@ -23182,6 +24610,13 @@ "name": "freezeframes", "type": "VV->V", "description": "Freeze video frames.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "first", @@ -23215,6 +24650,12 @@ "name": "fspp", "type": "V->V", "description": "Apply Fast Simple Post-processing filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "quality", @@ -23256,6 +24697,12 @@ "name": "gblur", "type": "V->V", "description": "Apply Gaussian Blur filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "sigma", @@ -23297,6 +24744,12 @@ "name": "geq", "type": "V->V", "description": "Apply generic equation to each pixel.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "lum_expr", @@ -23470,6 +24923,12 @@ "name": "gradfun", "type": "V->V", "description": "Debands video quickly using gradients.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "strength", @@ -23495,6 +24954,12 @@ "name": "graphmonitor", "type": "V->V", "description": "Show various filtergraph stats.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -23736,6 +25201,12 @@ "name": "grayworld", "type": "V->V", "description": "Adjust white balance using LAB gray world algorithm", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [] }, { @@ -23744,6 +25215,12 @@ "name": "greyedge", "type": "V->V", "description": "Estimates scene illumination by grey edge assumption.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "difford", @@ -23777,6 +25254,12 @@ "name": "guided", "type": "N->V", "description": "Apply Guided filter.", + "inputs": [ + "n" + ], + "outputs": [ + "v" + ], "params": [ { "name": "radius", @@ -23854,6 +25337,13 @@ "name": "haldclut", "type": "VV->V", "description": "Adjust colors using a Hald CLUT.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "clut", @@ -23911,6 +25401,12 @@ "name": "hflip", "type": "V->V", "description": "Horizontally flip the input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [] }, { @@ -23919,6 +25415,12 @@ "name": "histeq", "type": "V->V", "description": "Apply global color histogram equalization.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "strength", @@ -23966,6 +25468,12 @@ "name": "histogram", "type": "V->V", "description": "Compute and draw a histogram.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "level_height", @@ -24219,6 +25727,12 @@ "name": "hqdn3d", "type": "V->V", "description": "Apply a High Quality 3D Denoiser.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "luma_spatial", @@ -24260,6 +25774,12 @@ "name": "hqx", "type": "V->V", "description": "Scale the input by 2, 3 or 4 using the hq*x magnification algorithm.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "n", @@ -24277,6 +25797,13 @@ "name": "hstack", "type": "N->V", "description": "Stack video inputs horizontally.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "inputs", @@ -24302,6 +25829,12 @@ "name": "hsvhold", "type": "V->V", "description": "Turns a certain HSV range into gray.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "hue", @@ -24351,6 +25884,12 @@ "name": "hsvkey", "type": "V->V", "description": "Turns a certain HSV range into transparency. Operates on YUV colors.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "hue", @@ -24400,6 +25939,12 @@ "name": "hue", "type": "V->V", "description": "Adjust the hue and saturation of the input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "h", @@ -24441,6 +25986,12 @@ "name": "huesaturation", "type": "V->V", "description": "Apply hue-saturation-intensity adjustments.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "hue", @@ -24551,7 +26102,13 @@ "meta": "...", "name": "hwdownload", "type": "V->V", - "description": "Download a hardware frame to a normal frame" + "description": "Download a hardware frame to a normal frame", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ] }, { "id": 255, @@ -24559,6 +26116,12 @@ "name": "hwmap", "type": "V->V", "description": "Map hardware frames", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -24610,6 +26173,12 @@ "name": "hwupload", "type": "V->V", "description": "Upload a normal frame to a hardware frame", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "derive_device", @@ -24627,6 +26196,13 @@ "name": "hysteresis", "type": "VV->V", "description": "Grow first stream into second stream by connecting components.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -24652,6 +26228,13 @@ "name": "identity", "type": "VV->V", "description": "Calculate the Identity between two video streams.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [] }, { @@ -24660,6 +26243,12 @@ "name": "idet", "type": "V->V", "description": "Interlace detect Filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "intl_thres", @@ -24709,6 +26298,12 @@ "name": "il", "type": "V->V", "description": "Deinterleave or interleave fields.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "luma_mode", @@ -24946,6 +26541,12 @@ "name": "inflate", "type": "V->V", "description": "Apply inflate effect.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "threshold0", @@ -24987,6 +26588,12 @@ "name": "interlace", "type": "V->V", "description": "Convert progressive video into interlaced.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "scan", @@ -25036,6 +26643,12 @@ "name": "interleave", "type": "N->V", "description": "Temporally interleave video inputs.", + "inputs": [ + "n" + ], + "outputs": [ + "v" + ], "params": [ { "name": "nb_inputs", @@ -25083,6 +26696,12 @@ "name": "kerndeint", "type": "V->V", "description": "Apply kernel deinterlacing to the input.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "thresh", @@ -25132,6 +26751,12 @@ "name": "kirsch", "type": "V->V", "description": "Apply kirsch operator.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -25165,6 +26790,12 @@ "name": "lagfun", "type": "V->V", "description": "Slowly update darker pixels.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "decay", @@ -25189,7 +26820,13 @@ "meta": "T..", "name": "latency", "type": "V->V", - "description": "Report video filtering latency." + "description": "Report video filtering latency.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ] }, { "id": 268, @@ -25197,6 +26834,12 @@ "name": "lenscorrection", "type": "V->V", "description": "Rectify the image by correcting for lens distortion.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "cx", @@ -25264,6 +26907,12 @@ "name": "limitdiff", "type": "N->V", "description": "Apply filtering with limiting difference.", + "inputs": [ + "n" + ], + "outputs": [ + "v" + ], "params": [ { "name": "threshold", @@ -25305,6 +26954,12 @@ "name": "limiter", "type": "V->V", "description": "Limit pixels components to the specified range.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "min", @@ -25338,6 +26993,12 @@ "name": "loop", "type": "V->V", "description": "Loop video frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "loop", @@ -25371,6 +27032,12 @@ "name": "lumakey", "type": "V->V", "description": "Turns a certain luma into transparency.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "threshold", @@ -25404,6 +27071,12 @@ "name": "lut", "type": "V->V", "description": "Compute and apply a lookup table to the RGB/YUV input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "c0", @@ -25501,6 +27174,12 @@ "name": "lut1d", "type": "V->V", "description": "Adjust colors using a 1D LUT.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "file", @@ -25548,6 +27227,13 @@ "name": "lut2", "type": "VV->V", "description": "Compute and apply a lookup table from two video inputs.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "c0", @@ -25597,6 +27283,12 @@ "name": "lut3d", "type": "V->V", "description": "Adjust colors using a 3D LUT.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "file", @@ -25662,6 +27354,12 @@ "name": "lutrgb", "type": "V->V", "description": "Compute and apply a lookup table to the RGB input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "c0", @@ -25759,6 +27457,12 @@ "name": "lutyuv", "type": "V->V", "description": "Compute and apply a lookup table to the YUV input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "c0", @@ -25856,6 +27560,14 @@ "name": "maskedclamp", "type": "VVV->V", "description": "Clamp first stream with second stream and third stream.", + "inputs": [ + "v", + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "undershoot", @@ -25889,6 +27601,14 @@ "name": "maskedmax", "type": "VVV->V", "description": "Apply filtering with maximum difference of two streams.", + "inputs": [ + "v", + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -25906,6 +27626,14 @@ "name": "maskedmerge", "type": "VVV->V", "description": "Merge first stream with second stream using third stream as mask.", + "inputs": [ + "v", + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -25923,6 +27651,14 @@ "name": "maskedmin", "type": "VVV->V", "description": "Apply filtering with minimum difference of two streams.", + "inputs": [ + "v", + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -25940,6 +27676,13 @@ "name": "maskedthreshold", "type": "VV->V", "description": "Pick pixels comparing absolute difference of two streams with threshold.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "threshold", @@ -25983,6 +27726,12 @@ "name": "maskfun", "type": "V->V", "description": "Create Mask.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "low", @@ -26032,6 +27781,12 @@ "name": "median", "type": "V->V", "description": "Apply Median filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "radius", @@ -26073,6 +27828,12 @@ "name": "mergeplanes", "type": "N->V", "description": "Merge planes.", + "inputs": [ + "n" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mapping", @@ -26162,6 +27923,12 @@ "name": "mestimate", "type": "V->V", "description": "Generate motion vectors.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "method", @@ -26233,6 +28000,12 @@ "name": "metadata", "type": "V->V", "description": "Manipulate video frame metadata.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -26350,6 +28123,13 @@ "name": "midequalizer", "type": "VV->V", "description": "Apply Midway Equalization.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -26367,6 +28147,12 @@ "name": "minterpolate", "type": "V->V", "description": "Frame rate conversion using Motion Interpolation.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "fps", @@ -26538,6 +28324,13 @@ "name": "mix", "type": "N->V", "description": "Mix video inputs.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "inputs", @@ -26601,6 +28394,12 @@ "name": "monochrome", "type": "V->V", "description": "Convert video to gray using custom color filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "cb", @@ -26642,6 +28441,13 @@ "name": "morpho", "type": "VV->V", "description": "Apply Morphological filter.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -26715,6 +28521,12 @@ "name": "mpdecimate", "type": "V->V", "description": "Remove near-duplicate frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "max", @@ -26756,6 +28568,13 @@ "name": "msad", "type": "VV->V", "description": "Calculate the MSAD between two video streams.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [] }, { @@ -26764,6 +28583,13 @@ "name": "multiply", "type": "VV->V", "description": "Multiply first video stream with second video stream.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "scale", @@ -26797,6 +28623,12 @@ "name": "negate", "type": "V->V", "description": "Negate input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "components", @@ -26852,6 +28684,12 @@ "name": "nlmeans", "type": "V->V", "description": "Non-local means denoiser.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "s", @@ -26901,6 +28739,12 @@ "name": "nnedi", "type": "V->V", "description": "Apply neural network edge directed interpolation intra-only deinterlacer.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "weights", @@ -27120,6 +28964,12 @@ "name": "noformat", "type": "V->V", "description": "Force libavfilter not to use any of the specified pixel formats for the input to the next filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "pix_fmts", @@ -27137,6 +28987,12 @@ "name": "noise", "type": "V->V", "description": "Add noise.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "all_seed", @@ -27526,6 +29382,12 @@ "name": "normalize", "type": "V->V", "description": "Normalize RGB video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "blackpt", @@ -27574,7 +29436,13 @@ "meta": "...", "name": "null", "type": "V->V", - "description": "Pass the source unchanged to the output." + "description": "Pass the source unchanged to the output.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ] }, { "id": 304, @@ -27582,6 +29450,12 @@ "name": "oscilloscope", "type": "V->V", "description": "2D Video Oscilloscope.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "x", @@ -27695,6 +29569,13 @@ "name": "overlay", "type": "VV->V", "description": "Overlay a video source on top of the input.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "x", @@ -27836,6 +29717,12 @@ "name": "owdenoise", "type": "V->V", "description": "Denoise using wavelets.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "depth", @@ -27885,6 +29772,12 @@ "name": "pad", "type": "V->V", "description": "Pad the input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "width", @@ -27976,6 +29869,12 @@ "name": "palettegen", "type": "V->V", "description": "Find the optimal palette for a given stream.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "max_colors", @@ -28031,6 +29930,13 @@ "name": "paletteuse", "type": "VV->V", "description": "Use a palette to downsample an input video stream.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "dither", @@ -28128,6 +30034,12 @@ "name": "perms", "type": "V->V", "description": "Set permissions for the output video frame.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -28175,6 +30087,12 @@ "name": "perspective", "type": "V->V", "description": "Correct the perspective of video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "x0", @@ -28302,6 +30220,12 @@ "name": "phase", "type": "V->V", "description": "Phase shift fields.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -28357,6 +30281,12 @@ "name": "photosensitivity", "type": "V->V", "description": "Filter out photosensitive epilepsy seizure-inducing flashes.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "frames", @@ -28413,7 +30343,13 @@ "meta": "...", "name": "pixdesctest", "type": "V->V", - "description": "Test pixel format definitions." + "description": "Test pixel format definitions.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ] }, { "id": 315, @@ -28421,6 +30357,12 @@ "name": "pixelize", "type": "V->V", "description": "Pixelize video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "width", @@ -28522,6 +30464,12 @@ "name": "pixscope", "type": "V->V", "description": "Pixel data analysis.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "x", @@ -28587,6 +30535,12 @@ "name": "pp", "type": "V->V", "description": "Filter video using libpostproc.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "subfilters", @@ -28604,6 +30558,12 @@ "name": "pp7", "type": "V->V", "description": "Apply Postprocessing 7 filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "qp", @@ -28643,6 +30603,12 @@ "name": "premultiply", "type": "N->V", "description": "PreMultiply first stream with first plane of second stream.", + "inputs": [ + "n" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -28668,6 +30634,12 @@ "name": "prewitt", "type": "V->V", "description": "Apply prewitt operator.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -28701,6 +30673,12 @@ "name": "pseudocolor", "type": "V->V", "description": "Make pseudocolored video frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "c0", @@ -28914,6 +30892,13 @@ "name": "psnr", "type": "VV->V", "description": "Calculate the PSNR between two video streams.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "stats_file", @@ -28955,6 +30940,12 @@ "name": "pullup", "type": "V->V", "description": "Pullup from field sequence to frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "jl", @@ -29026,6 +31017,12 @@ "name": "qp", "type": "V->V", "description": "Change video quantization parameters.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "qp", @@ -29043,6 +31040,12 @@ "name": "random", "type": "V->V", "description": "Return random frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "frames", @@ -29068,6 +31071,12 @@ "name": "readeia608", "type": "V->V", "description": "Read EIA-608 Closed Caption codes from input video and write them to frame metadata.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "scan_min", @@ -29117,6 +31126,12 @@ "name": "readvitc", "type": "V->V", "description": "Read vertical interval timecode and write it to frame metadata.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "scan_max", @@ -29150,6 +31165,12 @@ "name": "realtime", "type": "V->V", "description": "Slow down filtering to match realtime.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "limit", @@ -29175,6 +31196,14 @@ "name": "remap", "type": "VVV->V", "description": "Remap pixels.", + "inputs": [ + "v", + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "format", @@ -29210,6 +31239,12 @@ "name": "removegrain", "type": "V->V", "description": "Remove grain.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "m0", @@ -29251,6 +31286,12 @@ "name": "removelogo", "type": "V->V", "description": "Remove a TV logo based on a mask image.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "filename", @@ -29275,14 +31316,26 @@ "meta": "...", "name": "repeatfields", "type": "V->V", - "description": "Hard repeat fields based on MPEG repeat field flag." + "description": "Hard repeat fields based on MPEG repeat field flag.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ] }, { "id": 333, "meta": "...", "name": "reverse", "type": "V->V", - "description": "Reverse a clip." + "description": "Reverse a clip.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ] }, { "id": 334, @@ -29290,6 +31343,12 @@ "name": "rgbashift", "type": "V->V", "description": "Shift RGBA.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "rh", @@ -29381,6 +31440,12 @@ "name": "roberts", "type": "V->V", "description": "Apply roberts cross operator.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -29414,6 +31479,12 @@ "name": "rotate", "type": "V->V", "description": "Rotate the input image.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "angle", @@ -29495,6 +31566,12 @@ "name": "sab", "type": "V->V", "description": "Apply shape adaptive blur.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "luma_radius", @@ -29600,6 +31677,12 @@ "name": "scale", "type": "V->V", "description": "Scale the input video size and/or convert the image format.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "w", @@ -29921,6 +32004,14 @@ "name": "scale2ref", "type": "VV->VV", "description": "Scale the input video size and/or convert the image format to the given reference.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v", + "v" + ], "params": [ { "name": "w", @@ -30242,6 +32333,12 @@ "name": "scdet", "type": "V->V", "description": "Detect video scene change", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "threshold", @@ -30283,6 +32380,12 @@ "name": "scharr", "type": "V->V", "description": "Apply scharr operator.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -30316,6 +32419,12 @@ "name": "scroll", "type": "V->V", "description": "Scroll input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "horizontal", @@ -30373,6 +32482,12 @@ "name": "segment", "type": "V->N", "description": "Segment video stream.", + "inputs": [ + "v" + ], + "outputs": [ + "n" + ], "params": [ { "name": "timestamps", @@ -30398,6 +32513,12 @@ "name": "select", "type": "V->N", "description": "Select video frames to pass in output.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "expr", @@ -30439,6 +32560,12 @@ "name": "selectivecolor", "type": "V->V", "description": "Apply CMYK adjustments to specific color ranges.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "correction_method", @@ -30546,6 +32673,12 @@ "name": "sendcmd", "type": "V->V", "description": "Send commands to filters.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "commands", @@ -30586,7 +32719,13 @@ "meta": "...", "name": "separatefields", "type": "V->V", - "description": "Split input video frames into fields." + "description": "Split input video frames into fields.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ] }, { "id": 348, @@ -30594,6 +32733,12 @@ "name": "setdar", "type": "V->V", "description": "Set the frame display aspect ratio.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "dar", @@ -30635,6 +32780,12 @@ "name": "setfield", "type": "V->V", "description": "Force field for the output video frame.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -30670,6 +32821,12 @@ "name": "setparams", "type": "V->V", "description": "Force field, or color property for the output video frame.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "field_mode", @@ -30969,6 +33126,12 @@ "name": "setpts", "type": "V->V", "description": "Set PTS for the output video frame.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "expr", @@ -30986,6 +33149,12 @@ "name": "setrange", "type": "V->V", "description": "Force color range for the output video frame.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "range", @@ -31041,6 +33210,12 @@ "name": "setsar", "type": "V->V", "description": "Set the pixel sample aspect ratio.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "sar", @@ -31082,6 +33257,12 @@ "name": "settb", "type": "V->V", "description": "Set timebase for the video output link.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "expr", @@ -31107,6 +33288,12 @@ "name": "shear", "type": "V->V", "description": "Shear transform the input image.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "shx", @@ -31166,6 +33353,12 @@ "name": "showinfo", "type": "V->V", "description": "Show textual information for each video frame.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "checksum", @@ -31183,6 +33376,12 @@ "name": "showpalette", "type": "V->V", "description": "Display frame palette.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "s", @@ -31200,6 +33399,12 @@ "name": "shuffleframes", "type": "V->V", "description": "Shuffle video frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mapping", @@ -31217,6 +33422,12 @@ "name": "shufflepixels", "type": "V->V", "description": "Shuffle video pixels.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "direction", @@ -31354,6 +33565,12 @@ "name": "shuffleplanes", "type": "V->V", "description": "Shuffle video planes.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "map0", @@ -31395,6 +33612,12 @@ "name": "sidedata", "type": "V->V", "description": "Manipulate video frame side data.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -31516,6 +33739,12 @@ "name": "signalstats", "type": "V->V", "description": "Generate statistics from video analysis.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "stat", @@ -31585,6 +33814,12 @@ "name": "signature", "type": "N->V", "description": "Calculate the MPEG-7 video signature", + "inputs": [ + "n" + ], + "outputs": [ + "v" + ], "params": [ { "name": "detectmode", @@ -31690,6 +33925,12 @@ "name": "siti", "type": "V->V", "description": "Calculate spatial information (SI) and temporal information (TI).", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "print_summary", @@ -31707,6 +33948,12 @@ "name": "smartblur", "type": "V->V", "description": "Blur the input video without impacting the outlines.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "luma_radius", @@ -31812,6 +34059,12 @@ "name": "sobel", "type": "V->V", "description": "Apply sobel operator.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -31845,6 +34098,13 @@ "name": "split", "type": "V->N", "description": "Pass on the input to N video outputs.", + "inputs": [ + "v" + ], + "outputs": [ + "v", + "v" + ], "params": [ { "name": "outputs", @@ -31862,6 +34122,12 @@ "name": "spp", "type": "V->V", "description": "Apply a simple post processing filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "quality", @@ -31913,6 +34179,12 @@ "name": "sr", "type": "V->V", "description": "Apply DNN-based image super resolution to the input.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "dnn_backend", @@ -31968,6 +34240,13 @@ "name": "ssim", "type": "VV->V", "description": "Calculate the SSIM between two video streams.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "stats_file", @@ -31993,6 +34272,12 @@ "name": "stereo3d", "type": "V->V", "description": "Convert video stereoscopic 3D view.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "in", @@ -32242,6 +34527,13 @@ "name": "streamselect", "type": "N->N", "description": "Select video streams", + "inputs": [ + "n", + "n" + ], + "outputs": [ + "n" + ], "params": [ { "name": "inputs", @@ -32267,6 +34559,12 @@ "name": "subtitles", "type": "V->V", "description": "Render text subtitles onto input video using the libass library.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "filename", @@ -32347,7 +34645,13 @@ "meta": ".S.", "name": "super2xsai", "type": "V->V", - "description": "Scale the input by 2x using the Super2xSaI pixel art algorithm." + "description": "Scale the input by 2x using the Super2xSaI pixel art algorithm.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ] }, { "id": 375, @@ -32355,6 +34659,12 @@ "name": "swaprect", "type": "V->V", "description": "Swap 2 rectangular objects in video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "w", @@ -32412,6 +34722,12 @@ "name": "swapuv", "type": "V->V", "description": "Swap U and V components.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [] }, { @@ -32420,6 +34736,12 @@ "name": "tblend", "type": "V->V", "description": "Blend successive frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "c0_mode", @@ -33399,6 +35721,12 @@ "name": "telecine", "type": "V->V", "description": "Apply a telecine pattern.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "first_field", @@ -33442,6 +35770,12 @@ "name": "thistogram", "type": "V->V", "description": "Compute and draw a temporal histogram.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "width", @@ -33641,6 +35975,15 @@ "name": "threshold", "type": "VVVV->V", "description": "Threshold first video stream using other video streams.", + "inputs": [ + "v", + "v", + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -33658,6 +36001,12 @@ "name": "thumbnail", "type": "V->V", "description": "Select the most representative frame in a given sequence of consecutive frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "n", @@ -33697,6 +36046,12 @@ "name": "tile", "type": "V->V", "description": "Tile several successive frames together.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "layout", @@ -33762,6 +36117,12 @@ "name": "tinterlace", "type": "V->V", "description": "Perform temporal field interlacing.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -33813,6 +36174,12 @@ "name": "tlut2", "type": "V->V", "description": "Compute and apply a lookup table from two successive frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "c0", @@ -33854,6 +36221,12 @@ "name": "tmedian", "type": "V->V", "description": "Pick median pixels from successive frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "radius", @@ -33887,6 +36260,12 @@ "name": "tmidequalizer", "type": "V->V", "description": "Apply Temporal Midway Equalization.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "radius", @@ -33920,6 +36299,12 @@ "name": "tmix", "type": "V->V", "description": "Mix successive video frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "frames", @@ -33961,6 +36346,12 @@ "name": "tonemap", "type": "V->V", "description": "Conversion to/from different dynamic ranges.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "tonemap", @@ -34032,6 +36423,12 @@ "name": "tpad", "type": "V->V", "description": "Temporarily pad video frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "start", @@ -34117,6 +36514,12 @@ "name": "transpose", "type": "V->V", "description": "Transpose input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "dir", @@ -34174,6 +36577,12 @@ "name": "trim", "type": "V->V", "description": "Pick one continuous section from the input, drop the rest.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "start", @@ -34263,6 +36672,12 @@ "name": "unpremultiply", "type": "N->V", "description": "UnPreMultiply first stream with first plane of second stream.", + "inputs": [ + "n" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -34288,6 +36703,12 @@ "name": "unsharp", "type": "V->V", "description": "Sharpen or blur the input video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "luma_msize_x", @@ -34441,6 +36862,12 @@ "name": "untile", "type": "V->V", "description": "Untile a frame into a sequence of frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "layout", @@ -34458,6 +36885,12 @@ "name": "v360", "type": "V->V", "description": "Convert 360 projection of video.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "input", @@ -35081,6 +37514,12 @@ "name": "vaguedenoiser", "type": "V->V", "description": "Apply a Wavelet based Denoiser.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "threshold", @@ -35162,6 +37601,13 @@ "name": "varblur", "type": "VV->V", "description": "Apply Variable Blur filter.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "min_r", @@ -35195,6 +37641,12 @@ "name": "vectorscope", "type": "V->V", "description": "Video vectorscope.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -35600,6 +38052,12 @@ "name": "vflip", "type": "V->V", "description": "Flip the input video vertically.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [] }, { @@ -35607,7 +38065,13 @@ "meta": "...", "name": "vfrdet", "type": "V->V", - "description": "Variable frame rate detect filter." + "description": "Variable frame rate detect filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ] }, { "id": 401, @@ -35615,6 +38079,12 @@ "name": "vibrance", "type": "V->V", "description": "Boost or alter saturation.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "intensity", @@ -35688,6 +38158,13 @@ "name": "vif", "type": "VV->V", "description": "Calculate the VIF between two video streams.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [] }, { @@ -35696,6 +38173,12 @@ "name": "vignette", "type": "V->V", "description": "Make or reverse a vignette effect.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "angle", @@ -35789,6 +38272,12 @@ "name": "vmafmotion", "type": "V->V", "description": "Calculate the VMAF Motion score.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "stats_file", @@ -35806,6 +38295,13 @@ "name": "vstack", "type": "N->V", "description": "Stack video inputs vertically.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "inputs", @@ -35831,6 +38327,12 @@ "name": "w3fdif", "type": "V->V", "description": "Apply Martin Weston three field deinterlace.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "filter", @@ -35916,6 +38418,12 @@ "name": "waveform", "type": "V->V", "description": "Video waveform monitor.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -36421,6 +38929,12 @@ "name": "weave", "type": "V->V", "description": "Weave input video fields into frames.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "first_field", @@ -36456,6 +38970,12 @@ "name": "xbr", "type": "V->V", "description": "Scale the input using xBR algorithm.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "n", @@ -36473,6 +38993,13 @@ "name": "xcorrelate", "type": "VV->V", "description": "Cross-correlate first video stream with second video stream.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "planes", @@ -36508,6 +39035,13 @@ "name": "xfade", "type": "VV->V", "description": "Cross fade one video with another video.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "transition", @@ -36739,6 +39273,14 @@ "name": "xmedian", "type": "N->V", "description": "Pick median pixels from several video inputs.", + "inputs": [ + "v", + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "inputs", @@ -36772,6 +39314,13 @@ "name": "xstack", "type": "N->V", "description": "Stack video inputs into custom layout.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "inputs", @@ -36821,6 +39370,12 @@ "name": "yadif", "type": "V->V", "description": "Deinterlace the input image.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -36896,6 +39451,12 @@ "name": "yaepblur", "type": "V->V", "description": "Yet another edge preserving blur filter.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "radius", @@ -36953,6 +39514,12 @@ "name": "zoompan", "type": "V->V", "description": "Apply Zoom & Pan effect.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ], "params": [ { "name": "zoom", @@ -37018,6 +39585,12 @@ "name": "allrgb", "type": "|->V", "description": "Generate all RGB colors.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "rate", @@ -37067,6 +39640,12 @@ "name": "allyuv", "type": "|->V", "description": "Generate all yuv colors.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "rate", @@ -37116,6 +39695,12 @@ "name": "cellauto", "type": "|->V", "description": "Create pattern generated by an elementary cellular automaton.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "filename", @@ -37261,6 +39846,12 @@ "name": "color", "type": "|->V", "description": "Provide an uniformly colored input.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "color", @@ -37342,6 +39933,12 @@ "name": "colorchart", "type": "|->V", "description": "Generate color checker chart.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "rate", @@ -37417,6 +40014,12 @@ "name": "colorspectrum", "type": "|->V", "description": "Generate colors spectrum.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -37504,6 +40107,12 @@ "name": "gradients", "type": "|->V", "description": "Draw a gradients.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -37741,6 +40350,12 @@ "name": "haldclutsrc", "type": "|->V", "description": "Provide an identity Hald CLUT.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "level", @@ -37798,6 +40413,12 @@ "name": "life", "type": "|->V", "description": "Create life.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "filename", @@ -37935,6 +40556,12 @@ "name": "mandelbrot", "type": "|->V", "description": "Render a Mandelbrot fractal.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -38108,6 +40735,12 @@ "name": "mptestsrc", "type": "|->V", "description": "Generate various test pattern.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "rate", @@ -38273,6 +40906,12 @@ "name": "nullsrc", "type": "|->V", "description": "Null video source, return unprocessed video frames.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -38338,6 +40977,12 @@ "name": "pal75bars", "type": "|->V", "description": "Generate PAL 75% color bars.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -38403,6 +41048,12 @@ "name": "pal100bars", "type": "|->V", "description": "Generate PAL 100% color bars.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -38468,6 +41119,12 @@ "name": "rgbtestsrc", "type": "|->V", "description": "Generate RGB test pattern.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -38549,6 +41206,12 @@ "name": "sierpinski", "type": "|->V", "description": "Render a Sierpinski fractal.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -38624,6 +41287,12 @@ "name": "smptebars", "type": "|->V", "description": "Generate SMPTE color bars.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -38689,6 +41358,12 @@ "name": "smptehdbars", "type": "|->V", "description": "Generate SMPTE HD color bars.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -38754,6 +41429,12 @@ "name": "testsrc", "type": "|->V", "description": "Generate test pattern.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -38835,6 +41516,12 @@ "name": "testsrc2", "type": "|->V", "description": "Generate another test pattern.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -38908,6 +41595,12 @@ "name": "yuvtestsrc", "type": "|->V", "description": "Generate YUV test pattern.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -38972,7 +41665,13 @@ "meta": "...", "name": "nullsink", "type": "V->|", - "description": "Do absolutely nothing with the input video." + "description": "Do absolutely nothing with the input video.", + "inputs": [ + "v" + ], + "outputs": [ + "|" + ] }, { "id": 439, @@ -38980,6 +41679,12 @@ "name": "abitscope", "type": "A->V", "description": "Convert input audio to audio bit scope video output.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "rate", @@ -39065,6 +41770,12 @@ "name": "adrawgraph", "type": "A->V", "description": "Draw a graph using input audio metadata.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "m1", @@ -39246,6 +41957,12 @@ "name": "agraphmonitor", "type": "A->V", "description": "Show various filtergraph stats.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -39487,6 +42204,12 @@ "name": "ahistogram", "type": "A->V", "description": "Convert input audio to histogram video output.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "dmode", @@ -39646,6 +42369,12 @@ "name": "aphasemeter", "type": "A->N", "description": "Convert input audio to phase meter video output.", + "inputs": [ + "a" + ], + "outputs": [ + "n" + ], "params": [ { "name": "rate", @@ -39783,6 +42512,12 @@ "name": "avectorscope", "type": "A->V", "description": "Convert input audio to vectorscope video output.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "mode", @@ -40022,6 +42757,12 @@ "name": "concat", "type": "N->N", "description": "Concatenate audio and video streams.", + "inputs": [ + "n" + ], + "outputs": [ + "n" + ], "params": [ { "name": "n", @@ -40063,6 +42804,12 @@ "name": "showcqt", "type": "A->V", "description": "Convert input audio to a CQT (Constant/Clamped Q Transform) spectrum video output.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -40382,6 +43129,12 @@ "name": "showfreqs", "type": "A->V", "description": "Convert input audio to a frequencies video output.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -40679,6 +43432,12 @@ "name": "showspatial", "type": "A->V", "description": "Convert input audio to a spatial video output.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -40826,6 +43585,12 @@ "name": "showspectrum", "type": "A->V", "description": "Convert input audio to a spectrum video output.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -41247,6 +44012,12 @@ "name": "showspectrumpic", "type": "A->V", "description": "Convert input audio to a spectrum video output single picture.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -41600,6 +44371,12 @@ "name": "showvolume", "type": "A->V", "description": "Convert input audio volume to video output.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "rate", @@ -41767,6 +44544,12 @@ "name": "showwaves", "type": "A->V", "description": "Convert input audio to a video output.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -41902,6 +44685,12 @@ "name": "showwavespic", "type": "A->V", "description": "Convert input audio to a video output single picture.", + "inputs": [ + "a" + ], + "outputs": [ + "v" + ], "params": [ { "name": "size", @@ -42005,6 +44794,13 @@ "name": "spectrumsynth", "type": "VV->A", "description": "Convert input spectrum videos to audio output.", + "inputs": [ + "v", + "v" + ], + "outputs": [ + "a" + ], "params": [ { "name": "sample_rate", @@ -42198,6 +44994,13 @@ "name": "avsynctest", "type": "|->AV", "description": "Generate an Audio Video Sync Test.", + "inputs": [ + "|" + ], + "outputs": [ + "a", + "v" + ], "params": [ { "name": "size", @@ -42359,6 +45162,12 @@ "name": "amovie", "type": "|->N", "description": "Read audio from a movie source.", + "inputs": [ + "|" + ], + "outputs": [ + "n" + ], "params": [ { "name": "filename", @@ -42472,6 +45281,12 @@ "name": "movie", "type": "|->N", "description": "Read from a movie source.", + "inputs": [ + "|" + ], + "outputs": [ + "n" + ], "params": [ { "name": "filename", @@ -42584,14 +45399,26 @@ "meta": "...", "name": "afifo", "type": "A->A", - "description": "Buffer input frames and send them when they are requested." + "description": "Buffer input frames and send them when they are requested.", + "inputs": [ + "a" + ], + "outputs": [ + "a" + ] }, { "id": 459, "meta": "...", "name": "fifo", "type": "V->V", - "description": "Buffer input images and send them when they are requested." + "description": "Buffer input images and send them when they are requested.", + "inputs": [ + "v" + ], + "outputs": [ + "v" + ] }, { "id": 460, @@ -42599,6 +45426,12 @@ "name": "abuffer", "type": "|->A", "description": "Buffer audio frames, and make them accessible to the filterchain.", + "inputs": [ + "|" + ], + "outputs": [ + "a" + ], "params": [ { "name": "time_base", @@ -42648,6 +45481,12 @@ "name": "buffer", "type": "|->V", "description": "Buffer video frames, and make them accessible to the filterchain.", + "inputs": [ + "|" + ], + "outputs": [ + "v" + ], "params": [ { "name": "width", @@ -42721,6 +45560,12 @@ "name": "abuffersink", "type": "A->|", "description": "Buffer audio frames, and make them available to the end of the filter graph.", + "inputs": [ + "a" + ], + "outputs": [ + "|" + ], "params": [ { "name": "sample_fmts", @@ -42778,6 +45623,12 @@ "name": "buffersink", "type": "V->|", "description": "Buffer video frames, and make them available to the end of the filter graph.", + "inputs": [ + "v" + ], + "outputs": [ + "|" + ], "params": [ { "name": "pix_fmts", diff --git a/src/stores.js b/src/stores.js index 1f6b035..9888134 100644 --- a/src/stores.js +++ b/src/stores.js @@ -244,9 +244,6 @@ export function addNode(_data, type) { } else if (type === "output") { ins = ["v", "a"]; } else if (type === "filter") { - const [_ins, _outs] = data.type.split("->"); - ins = _ins.toLowerCase().split(""); - outs = _outs.toLowerCase().split(""); if (data.params) { data.params = data.params.map((p) => { p.value = null; @@ -254,6 +251,8 @@ export function addNode(_data, type) { return p; }); } + ins = data.inputs; + outs = data.outputs; } data.nodeType = type; @@ -271,36 +270,62 @@ export function addNode(_data, type) { nodes.update((_nodes) => { _nodes.push(node); - const isAuto = get(auto); + _nodes = autoLayout(_nodes); - if (isAuto) { - const w = 120; - const h = 50; - const margin = 50; - let prev = null; + if (node.nodeType === "filter") { + selectedFilter.set(_nodes.length - 1); + } + return _nodes; + }); +} - for (let n of _nodes) { - if (n.nodeType === "input") { - n.position = { x: 0, y: prev ? prev.position.y + h + margin : 0 }; - prev = n; - } - } +function autoLayout(_nodes) { + const isAuto = get(auto); - for (let n of _nodes) { - if (n.nodeType === "filter") { - let _w = prev && prev.width ? prev.width : w; - n.position = { x: prev ? prev.position.x + _w + margin : 0, y: -50 }; - prev = n; - } - } + if (isAuto) { + const w = 120; + const h = 50; + const margin = 50; + let prev = null; - for (let n of _nodes) { - if (n.nodeType === "output") { - let _w = prev && prev.width ? prev.width : w; - n.position = { x: prev ? prev.position.x + _w + margin : 0, y: 0 }; - } + for (let n of _nodes) { + if (n.nodeType === "input") { + n.position = { x: 0, y: prev ? prev.position.y + h + margin : 0 }; + prev = n; } } + + for (let n of _nodes) { + if (n.nodeType === "filter") { + let _w = prev && prev.width ? prev.width : w; + n.position = { x: prev ? prev.position.x + _w + margin : 0, y: -50 }; + prev = n; + } + } + + for (let n of _nodes) { + if (n.nodeType === "output") { + let _w = prev && prev.width ? prev.width : w; + n.position = { x: prev ? prev.position.x + _w + margin : 0, y: 0 }; + } + } + } + return _nodes; +} + +export function copyNode(node) { + const oldId = node.id; + node = JSON.parse(JSON.stringify(node)); + node.id = uuidv4(); + + nodes.update((_nodes) => { + _nodes.push(node); + + const index = _nodes.findIndex((n) => n.id === oldId); + _nodes.splice(index, 1); + + _nodes = autoLayout(_nodes); + if (node.nodeType === "filter") { selectedFilter.set(_nodes.length - 1); }