changedInput schema / $defs / Animatable / anyOf
Previous value: -[
- {
- "type": "number"
- },
- {
- "properties": {
- "keyframes": {
- "description": "frame is relative to the clip start; ease from video://catalog/eases",
- "items": {
- "properties": {
- "ease": {
- "type": "string"
- },
- "frame": {
- "maximum": 100000000,
- "minimum": -1000000,
- "type": "integer"
- },
- "value": {
- "type": "number"
- }
- },
- "required": [
- "frame",
- "value"
- ],
- "type": "object"
- },
- "maxItems": 1000,
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "keyframes"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "type": "number"
+ },
+ {
+ "properties": {
+ "keyframes": {
+ "description": "frame is from the clip start; ease shapes the move from this keyframe to the next (default linear; hold waits, then jumps)",
+ "items": {
+ "properties": {
+ "ease": {
+ "enum": [
+ "linear",
+ "hold",
+ "smooth",
+ "sine_in",
+ "sine_out",
+ "sine_in_out",
+ "quad_in",
+ "quad_out",
+ "quad_in_out",
+ "cubic_in",
+ "cubic_out",
+ "cubic_in_out",
+ "quart_in",
+ "quart_out",
+ "quart_in_out",
+ "quint_in",
+ "quint_out",
+ "quint_in_out",
+ "expo_in",
+ "expo_out",
+ "expo_in_out",
+ "circ_in",
+ "circ_out",
+ "circ_in_out",
+ "back_in",
+ "back_out",
+ "back_in_out",
+ "elastic_in",
+ "elastic_out",
+ "elastic_in_out",
+ "bounce_in",
+ "bounce_out",
+ "bounce_in_out"
+ ],
+ "type": "string"
+ },
+ "frame": {
+ "maximum": 100000000,
+ "minimum": -1000000,
+ "type": "integer"
+ },
+ "value": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "frame",
+ "value"
+ ],
+ "type": "object"
+ },
+ "maxItems": 1000,
+ "minItems": 1,
+ "type": "array"
+ }
+ },
+ "required": [
+ "keyframes"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
changedInput schema / properties / crop / anyOf
Previous value: -[
- {
- "description": "Fractions of the picture hidden from each edge; the rest stays where it was",
- "properties": {
- "bottom": {
- "default": 0,
- "maximum": 0.99,
- "minimum": 0,
- "type": "number"
- },
- "left": {
- "default": 0,
- "maximum": 0.99,
- "minimum": 0,
- "type": "number"
- },
- "right": {
- "default": 0,
- "maximum": 0.99,
- "minimum": 0,
- "type": "number"
- },
- "top": {
- "default": 0,
- "maximum": 0.99,
- "minimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "description": "Hidden from each edge, in fractions of the clip's fitted frame (the sequence-shaped box with the picture fitted inside, bars included, as for masks); the rest stays where it was",
+ "properties": {
+ "bottom": {
+ "default": 0,
+ "maximum": 0.99,
+ "minimum": 0,
+ "type": "number"
+ },
+ "left": {
+ "default": 0,
+ "maximum": 0.99,
+ "minimum": 0,
+ "type": "number"
+ },
+ "right": {
+ "default": 0,
+ "maximum": 0.99,
+ "minimum": 0,
+ "type": "number"
+ },
+ "top": {
+ "default": 0,
+ "maximum": 0.99,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
changedInput schema / properties / fit / anyOf
Previous value: -[
- {
- "description": "contain: whole picture inside the frame, scaled up or down to touch its edges (default); cover: fill the frame, cropping; fill: stretch; none: its own pixels at sequence size, unscaled (a 300 px logo stays 300 px on a 1920 px sequence), for logos and graphics made to size",
- "enum": [
- "contain",
- "cover",
- "fill",
- "none"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "description": "contain: whole picture inside the frame, scaled up or down to touch its edges (default); cover: fill the frame, cropping what overflows equally on both sides (move x or y off 0.5 to show another part); fill: stretch; none: its own pixels at sequence size, unscaled (a 300 px logo stays 300 px on a 1920 px sequence), for logos and graphics made to size",
+ "enum": [
+ "contain",
+ "cover",
+ "fill",
+ "none"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+]
addedOutput schema / properties / placements
Added value: +{
+ "description": "Where each clip the edit moved, cropped, masked or animated shows, sequence pixels",
+ "items": {
+ "properties": {
+ "clip_id": {
+ "type": "string"
+ },
+ "complete": {
+ "description": "true: values move in straight lines between entries; false: evenly sampled",
+ "type": "boolean"
+ },
+ "frames": {
+ "items": {
+ "properties": {
+ "frame": {
+ "description": "From the clip start",
+ "type": "number"
+ },
+ "opacity": {
+ "type": "number"
+ },
+ "picture": {
+ "description": "The whole picture, before crop and mask and rotation",
+ "properties": {
+ "h": {
+ "type": "number"
+ },
+ "w": {
+ "type": "number"
+ },
+ "x": {
+ "type": "number"
+ },
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h"
+ ],
+ "type": "object"
+ },
+ "rotation": {
+ "type": "number"
+ },
+ "source": {
+ "anyOf": [
+ {
+ "properties": {
+ "h": {
+ "type": "number"
+ },
+ "w": {
+ "type": "number"
+ },
+ "x": {
+ "type": "number"
+ },
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The part of the source that shows, source pixels"
+ },
+ "visible": {
+ "anyOf": [
+ {
+ "properties": {
+ "h": {
+ "type": "number"
+ },
+ "w": {
+ "type": "number"
+ },
+ "x": {
+ "type": "number"
+ },
+ "y": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "x",
+ "y",
+ "w",
+ "h"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "What it shows: crop and mask applied, rotated, inside the frame; null: nothing"
+ }
+ },
+ "required": [
+ "frame",
+ "picture",
+ "rotation",
+ "opacity",
+ "visible",
+ "source"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "clip_id",
+ "frames",
+ "complete"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}