From 309c94dec63e38036b25c3acc7edcd2085c5cee9 Mon Sep 17 00:00:00 2001
From: Michael Mikovsky <77305074+Astatin3@users.noreply.github.com>
Date: Wed, 30 Jul 2025 14:02:34 -0600
Subject: [PATCH] Initial commit
---
.gitattributes | 2 +
.gitignore | 14 +
Cargo.toml | 22 ++
LICENSE | 21 ++
README.md | 2 +
examples/cube.lua | 103 +++++++
examples/perlin.lua | 281 ++++++++++++++++++
examples/simple.lua | 43 +++
output.mp4 | Bin 0 -> 2443002 bytes
src/lua/color.rs | 64 ++++
src/lua/decoder.rs | 102 +++++++
src/lua/lua_env.rs | 29 ++
src/lua/mod.rs | 5 +
src/main.rs | 103 +++++++
src/main_old2.rs | 112 +++++++
src/renderer/mod.rs | 9 +
src/renderer/types/animation.rs | 113 +++++++
src/renderer/types/color.rs | 64 ++++
src/renderer/types/config.rs | 62 ++++
src/renderer/types/easing.rs | 80 +++++
src/renderer/types/elements/circle_element.rs | 97 ++++++
src/renderer/types/elements/line_element.rs | 67 +++++
src/renderer/types/elements/mod.rs | 40 +++
.../types/elements/rectangle_element.rs | 84 ++++++
src/renderer/types/mod.rs | 19 ++
src/renderer/types/point.rs | 59 ++++
src/renderer/types/scene.rs | 40 +++
src/renderer/types/size.rs | 54 ++++
src/renderer/types/task.rs | 10 +
src/renderer/video_encoder.rs | 136 +++++++++
src/renderer/video_renderer.rs | 247 +++++++++++++++
src/renderer2.rs | 1 +
32 files changed, 2085 insertions(+)
create mode 100644 .gitattributes
create mode 100644 .gitignore
create mode 100644 Cargo.toml
create mode 100644 LICENSE
create mode 100644 README.md
create mode 100644 examples/cube.lua
create mode 100644 examples/perlin.lua
create mode 100644 examples/simple.lua
create mode 100644 output.mp4
create mode 100644 src/lua/color.rs
create mode 100644 src/lua/decoder.rs
create mode 100644 src/lua/lua_env.rs
create mode 100644 src/lua/mod.rs
create mode 100644 src/main.rs
create mode 100644 src/main_old2.rs
create mode 100644 src/renderer/mod.rs
create mode 100644 src/renderer/types/animation.rs
create mode 100644 src/renderer/types/color.rs
create mode 100644 src/renderer/types/config.rs
create mode 100644 src/renderer/types/easing.rs
create mode 100644 src/renderer/types/elements/circle_element.rs
create mode 100644 src/renderer/types/elements/line_element.rs
create mode 100644 src/renderer/types/elements/mod.rs
create mode 100644 src/renderer/types/elements/rectangle_element.rs
create mode 100644 src/renderer/types/mod.rs
create mode 100644 src/renderer/types/point.rs
create mode 100644 src/renderer/types/scene.rs
create mode 100644 src/renderer/types/size.rs
create mode 100644 src/renderer/types/task.rs
create mode 100644 src/renderer/video_encoder.rs
create mode 100644 src/renderer/video_renderer.rs
create mode 100644 src/renderer2.rs
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..dfe0770
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6985cf1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+# Generated by Cargo
+# will have compiled files and executables
+debug/
+target/
+
+# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries
+# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html
+Cargo.lock
+
+# These are backup files generated by rustfmt
+**/*.rs.bk
+
+# MSVC Windows builds of rustc generate these, which store debugging information
+*.pdb
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644
index 0000000..2c02292
--- /dev/null
+++ b/Cargo.toml
@@ -0,0 +1,22 @@
+[package]
+name = "luavid"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
+mlua = { version = "0.11.1", features = ["lua54"] }
+ndarray = "0.16.1"
+nshare = { version = "0.10.0", default-features = false, features = [
+ "ndarray",
+ "image",
+] }
+# yuv = "0.8.6"
+# rustyline = "16.0.0"
+ab_glyph = "0.2.31"
+clap = { version = "4.5.41", features = ["derive"] }
+gstreamer = "0.24.0"
+gstreamer-app = "0.24.0"
+gstreamer-video = "0.24.0"
+image = "0.25.6"
+imageproc = "0.25.0"
+indicatif = "0.18.0"
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..30808e0
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2025 Michael Mikovsky
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..dec57c5
--- /dev/null
+++ b/README.md
@@ -0,0 +1,2 @@
+# luavid
+ Lua based video editing
diff --git a/examples/cube.lua b/examples/cube.lua
new file mode 100644
index 0000000..e678af2
--- /dev/null
+++ b/examples/cube.lua
@@ -0,0 +1,103 @@
+
+local screen_size = {1920, 1080};
+local scale = 300;
+
+local length_seconds = 10;
+local updates = 100;
+local spf = length_seconds / updates;
+
+config:set_size(screen_size[1], screen_size[2])
+config:set_background_color(Color(20, 20, 30))
+config:set_fps(60)
+config:set_num_layers(1)
+
+local cubeCorners = {
+ { -1.0, -1.0, -1.0 }, -- Point 0
+ { 1.0, -1.0, -1.0 }, -- Point 1
+ { -1.0, -1.0, 1.0 }, -- Point 2
+ { 1.0, -1.0, 1.0 }, -- Point 3
+ { -1.0, 1.0, -1.0 }, -- Point 4
+ { 1.0, 1.0, -1.0 }, -- Point 5
+ { -1.0, 1.0, 1.0 }, -- Point 6
+ { 1.0, 1.0, 1.0 } -- Point 7
+};
+
+local cubeLines = {
+ { 0, 1 },
+ { 0, 2 },
+ { 1, 3 },
+ { 2, 3 },
+ { 0, 4 },
+ { 1, 5 },
+ { 2, 6 },
+ { 3, 7 },
+ { 4, 5 },
+ { 4, 6 },
+ { 5, 7 },
+ { 6, 7 },
+};
+
+function rotatePoint(arr, rot)
+ local x = arr[1];
+ local y = arr[2];
+ local z = arr[3];
+
+ -- Rotate around x axis:
+ local y1 = (y * math.cos(rot[1])) - (z * math.sin(rot[1]));
+ local z1 = (z * math.cos(rot[1])) + (y * math.sin(rot[1]));
+
+ -- Rotate around y axis:
+ local x2 = (z1 * math.sin(rot[2])) + (x * math.cos(rot[2]));
+ local z2 = (z1 * math.cos(rot[2])) - (x * math.sin(rot[2]));
+
+ -- Rotate around z axis:
+ local x3 = (x2 * math.cos(rot[3])) - (y1 * math.sin(rot[3]));
+ local y3 = (x2 * math.sin(rot[3])) + (y1 * math.cos(rot[3]));
+
+ return { x3, y3, z2 };
+end
+
+function renderLine(pos, line)
+ local p1 = cubeCorners[line[1] + 1];
+ local p2 = cubeCorners[line[2] + 1];
+ local p1r = rotatePoint(p1, { pos[1], pos[2], pos[3] });
+ local p2r = rotatePoint(p2, { pos[1], pos[2], pos[3] });
+
+ local p1s = Point((scale * p1r[1]) + (screen_size[1] / 2), (scale * p1r[2]) + (screen_size[2]/ 2))
+ local p2s = Point((scale * p2r[1]) + (screen_size[1] / 2), (scale * p2r[2]) + (screen_size[2] / 2))
+
+ return Line(p1s, p2s, Color(255, 255, 255), 2.0)
+end
+
+layer(0)
+
+local speeds = { 0.2, 0.4, 0.6 }
+
+local pos = { math.pi / 2, math.pi / 3, math.pi / 4 }
+
+for i = 0, updates, 1 do
+ local nextpos = { pos[1] + speeds[1], pos[2] + speeds[2], pos[3] + speeds[3] };
+
+ for j, line in ipairs(cubeLines) do
+ animate(Animation(
+ renderLine(pos, line),
+ renderLine(nextpos, line),
+ spf, EaseInOut()
+ ))
+ end
+
+ pos = nextpos;
+
+ print(pos[1])
+
+ render(spf)
+end
+
+-- function Block(x, y, i)
+-- animate(Animation(
+-- Rect(pos, size, Color(clr_start, clr_start, clr_start)),
+-- Rect(pos, size, Color(clr_end, clr_end, clr_end)),
+-- 1.0,
+-- Linear()
+-- ))
+-- end
diff --git a/examples/perlin.lua b/examples/perlin.lua
new file mode 100644
index 0000000..82cb6b5
--- /dev/null
+++ b/examples/perlin.lua
@@ -0,0 +1,281 @@
+--[[
+ https://gist.github.com/kymckay/25758d37f8e3872e1636d90ad41fe2ed
+ Implemented as described here:
+ http://flafla2.github.io/2014/08/09/perlinnoise.html
+]] --
+
+bit32 = {};
+local N = 32;
+local P = 2 ^ N;
+
+bit32.bnot = function(x)
+ x = x % P;
+ return (P - 1) - x;
+end;
+
+bit32.band = function(x, y)
+ if (y == 255) then return x % 256; end
+ if (y == 65535) then return x % 65536; end
+ if (y == 4294967295) then return x % 4294967296; end
+ x, y = x % P, y % P;
+ local r = 0;
+ local p = 1;
+ for i = 1, N do
+ local a, b = x % 2, y % 2;
+ x, y = math.floor(x / 2), math.floor(y / 2);
+ if ((a + b) == 2) then r = r + p; end
+ p = 2 * p;
+ end
+ return r;
+end;
+
+bit32.bor = function(x, y)
+ if (y == 255) then return (x - (x % 256)) + 255; end
+ if (y == 65535) then return (x - (x % 65536)) + 65535; end
+ if (y == 4294967295) then return 4294967295; end
+ x, y = x % P, y % P;
+ local r = 0;
+ local p = 1;
+ for i = 1, N do
+ local a, b = x % 2, y % 2;
+ x, y = math.floor(x / 2), math.floor(y / 2);
+ if ((a + b) >= 1) then r = r + p; end
+ p = 2 * p;
+ end
+ return r;
+end;
+
+bit32.bxor = function(x, y)
+ x, y = x % P, y % P;
+ local r = 0;
+ local p = 1;
+ for i = 1, N do
+ local a, b = x % 2, y % 2;
+ x, y = math.floor(x / 2), math.floor(y / 2);
+ if ((a + b) == 1) then r = r + p; end
+ p = 2 * p;
+ end
+ return r;
+end;
+
+bit32.lshift = function(x, s_amount)
+ if (math.abs(s_amount) >= N) then return 0; end
+ x = x % P;
+ if (s_amount < 0) then
+ return math.floor(x * (2 ^ s_amount));
+ else
+ return (x * (2 ^ s_amount)) % P;
+ end
+end;
+
+bit32.rshift = function(x, s_amount)
+ if (math.abs(s_amount) >= N) then return 0; end
+ x = x % P;
+ if (s_amount > 0) then
+ return math.floor(x * (2 ^ -s_amount));
+ else
+ return (x * (2 ^ -s_amount)) % P;
+ end
+end;
+
+bit32.arshift = function(x, s_amount)
+ if (math.abs(s_amount) >= N) then return 0; end
+ x = x % P;
+ if (s_amount > 0) then
+ local add = 0;
+ if (x >= (P / 2)) then
+ add = P - (2 ^ (N - s_amount));
+ end
+ return math.floor(x * (2 ^ -s_amount)) + add;
+ else
+ return (x * (2 ^ -s_amount)) % P;
+ end
+end;
+
+bit32.extract = function(n, field, width)
+ width = width or 1;
+ return (n >> field) & ((1 << width) - 1);
+end;
+
+bit32.replace = function(n, v, field, width)
+ width = width or 1;
+ local mask = ((1 << width) - 1) << field;
+ return (n & ~mask) | ((v << field) & mask);
+end;
+
+bit32.btest = function(...)
+ return bit32.band(...) ~= 0;
+end;
+
+
+
+--[[
+ Implemented as described here:
+ http://flafla2.github.io/2014/08/09/perlinnoise.html
+]] --
+
+perlin = {}
+perlin.p = {}
+
+-- Hash lookup table as defined by Ken Perlin
+-- This is a randomly arranged array of all numbers from 0-255 inclusive
+local permutation = { 151, 160, 137, 91, 90, 15,
+ 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23,
+ 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33,
+ 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166,
+ 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244,
+ 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196,
+ 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123,
+ 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42,
+ 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9,
+ 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228,
+ 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107,
+ 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254,
+ 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180
+}
+
+-- p is used to hash unit cube coordinates to [0, 255]
+for i = 0, 255 do
+ -- Convert to 0 based index table
+ perlin.p[i] = permutation[i + 1]
+ -- Repeat the array to avoid buffer overflow in hash function
+ perlin.p[i + 256] = permutation[i + 1]
+end
+
+-- Return range: [-1, 1]
+function perlin:noise(x, y, z)
+ y = y or 0
+ z = z or 0
+
+ -- Calculate the "unit cube" that the point asked will be located in
+ local xi = bit32.band(math.floor(x), 255)
+ local yi = bit32.band(math.floor(y), 255)
+ local zi = bit32.band(math.floor(z), 255)
+
+ -- Next we calculate the location (from 0 to 1) in that cube
+ x = x - math.floor(x)
+ y = y - math.floor(y)
+ z = z - math.floor(z)
+
+ -- We also fade the location to smooth the result
+ local u = self.fade(x)
+ local v = self.fade(y)
+ local w = self.fade(z)
+
+ -- Hash all 8 unit cube coordinates surrounding input coordinate
+ local p = self.p
+ local A, AA, AB, AAA, ABA, AAB, ABB, B, BA, BB, BAA, BBA, BAB, BBB
+ A = p[xi] + yi
+ AA = p[A] + zi
+ AB = p[A + 1] + zi
+ AAA = p[AA]
+ ABA = p[AB]
+ AAB = p[AA + 1]
+ ABB = p[AB + 1]
+
+ B = p[xi + 1] + yi
+ BA = p[B] + zi
+ BB = p[B + 1] + zi
+ BAA = p[BA]
+ BBA = p[BB]
+ BAB = p[BA + 1]
+ BBB = p[BB + 1]
+
+ -- Take the weighted average between all 8 unit cube coordinates
+ return self.lerp(w,
+ self.lerp(v,
+ self.lerp(u,
+ self:grad(AAA, x, y, z),
+ self:grad(BAA, x - 1, y, z)
+ ),
+ self.lerp(u,
+ self:grad(ABA, x, y - 1, z),
+ self:grad(BBA, x - 1, y - 1, z)
+ )
+ ),
+ self.lerp(v,
+ self.lerp(u,
+ self:grad(AAB, x, y, z - 1), self:grad(BAB, x - 1, y, z - 1)
+ ),
+ self.lerp(u,
+ self:grad(ABB, x, y - 1, z - 1), self:grad(BBB, x - 1, y - 1, z - 1)
+ )
+ )
+ )
+end
+
+-- Gradient function finds dot product between pseudorandom gradient vector
+-- and the vector from input coordinate to a unit cube vertex
+perlin.dot_product = {
+ [0x0] = function(x, y, z) return x + y end,
+ [0x1] = function(x, y, z) return -x + y end,
+ [0x2] = function(x, y, z) return x - y end,
+ [0x3] = function(x, y, z) return -x - y end,
+ [0x4] = function(x, y, z) return x + z end,
+ [0x5] = function(x, y, z) return -x + z end,
+ [0x6] = function(x, y, z) return x - z end,
+ [0x7] = function(x, y, z) return -x - z end,
+ [0x8] = function(x, y, z) return y + z end,
+ [0x9] = function(x, y, z) return -y + z end,
+ [0xA] = function(x, y, z) return y - z end,
+ [0xB] = function(x, y, z) return -y - z end,
+ [0xC] = function(x, y, z) return y + x end,
+ [0xD] = function(x, y, z) return -y + z end,
+ [0xE] = function(x, y, z) return y - x end,
+ [0xF] = function(x, y, z) return -y - z end
+}
+function perlin:grad(hash, x, y, z)
+ return self.dot_product[bit32.band(hash, 0xF)](x, y, z)
+end
+
+-- Fade function is used to smooth final output
+function perlin.fade(t)
+ return t * t * t * (t * (t * 6 - 15) + 10)
+end
+
+function perlin.lerp(t, a, b)
+ return a + t * (b - a)
+end
+
+local iterations = 10;
+local length = 10;
+
+local screen_size = 800;
+local block_count = 10;
+
+local block_size = screen_size / block_count;
+
+config:set_size(screen_size, screen_size)
+config:set_background_color(Color(20, 20, 30))
+config:set_fps(60)
+config:set_num_layers(1)
+
+layer(0)
+
+function Block(x, y, i)
+ local pos = Point(x * block_size, y * block_size);
+ local size = Size(block_size, block_size);
+
+ local xi = 2 * (x / block_count) - 1;
+ local yi = 2 * (y / block_count) - 1;
+
+ local clr_start = perlin:noise(xi, yi, (i) / iterations);
+ local clr_end = perlin:noise(xi, yi, (i + 1) / iterations);
+ -- local clr_end = clr_start;
+
+ animate(Animation(
+ Rect(pos, size, Color(clr_start, clr_start, clr_start)),
+ Rect(pos, size, Color(clr_end, clr_end, clr_end)),
+ 1.0,
+ Linear()
+ ))
+end
+
+for i = 0, iterations do
+ for x = 0, block_count - 1 do
+ for y = 0, block_count - 1 do
+ Block(x, y, i)
+ end
+ end
+ render(1)
+end
diff --git a/examples/simple.lua b/examples/simple.lua
new file mode 100644
index 0000000..cf187f8
--- /dev/null
+++ b/examples/simple.lua
@@ -0,0 +1,43 @@
+config:set_size(1920, 1080)
+config:set_background_color(Color(20, 20, 30))
+config:set_fps(60)
+config:set_num_layers(5)
+
+layer(0)
+draw(Rect(Point(100, 100), Size(200, 150), Color(255, 100, 100, 255)))
+layer(1)
+draw(Circle(Point(400, 300), 50, Color(100, 255, 100, 255)))
+draw(Line(Point(50, 50), Point(750, 550), Color(255, 255, 100, 255), 5.0))
+render(5)
+layer(0)
+
+
+
+animate(Animation(
+ Rect(Point(100, 100), Size(200, 150), Color(255, 100, 100, 255), true, 0.0),
+ Rect(Point(500, 350), Size(100, 100), Color(100, 100, 255, 255), true, 0.0),
+ 3.0,
+ EaseInOut()
+))
+
+
+layer(2)
+
+
+animate(Animation(
+ CircleOutline(
+ Point(400.0, 300.0),
+ 50.0,
+ Color(100, 255, 100, 255),
+ 10.0
+ ),
+ CircleOutline(
+ Point(200.0, 150.0),
+ 100.0,
+ Color(255, 150, 50, 255),
+ 10.
+ ),
+ 3.0,
+ Bounce()
+))
+render(3.0)
diff --git a/output.mp4 b/output.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..884a64c1d018a0f87827ccd2a8856b6446939a76
GIT binary patch
literal 2443002
zcmYJZ19)W5(>6S@oosB|PByl+(Z;rIZEV}t#
~9g8ddk*Rb8j2
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