aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatarLarge Libravatar memdmp <memdmpestrogenzone>2025-08-01 03:45:13 +0200
committerLibravatarLarge Libravatar memdmp <memdmpestrogenzone>2025-08-01 03:45:13 +0200
commita205c294695272ceffb2087a5375097c02ec873f (patch)
treed944ac111ac1cfed2ed5bb172435b86f4132024b /src
parentcae2e0a33b028ba0ec3a599b4a6b0e25b25357ee (diff)
downloadvideotool-a205c294695272ceffb2087a5375097c02ec873f.tar.gz
videotool-a205c294695272ceffb2087a5375097c02ec873f.tar.bz2
videotool-a205c294695272ceffb2087a5375097c02ec873f.tar.lz
videotool-a205c294695272ceffb2087a5375097c02ec873f.zip

feat: more things

Diffstat (limited to 'src')
-rw-r--r--src/lib/Player/Player.svelte6
-rw-r--r--src/lib/Renderer/Renderer.svelte13
2 files changed, 16 insertions, 3 deletions
diff --git a/src/lib/Player/Player.svelte b/src/lib/Player/Player.svelte
index 5981162..cc438f5 100644
--- a/src/lib/Player/Player.svelte
+++ b/src/lib/Player/Player.svelte
@@ -90,6 +90,7 @@
if (f > frameCount) {
f = frameCount;
playbackRelativeTo = 0;
+ playbackFrameOffset = 0;
playing = false;
}
frame = f;
@@ -110,7 +111,10 @@
$effect(() => {
if (playing) {
startPlaying();
- } else playbackRelativeTo = 0;
+ } else {
+ playbackRelativeTo = 0;
+ playbackFrameOffset = 0;
+ }
});
let loadedFrameTimestamp = false;
onMount(() => {
diff --git a/src/lib/Renderer/Renderer.svelte b/src/lib/Renderer/Renderer.svelte
index 1100e35..e848312 100644
--- a/src/lib/Renderer/Renderer.svelte
+++ b/src/lib/Renderer/Renderer.svelte
@@ -45,7 +45,7 @@
const video = new VideoImplementation(c);
video['_isInit'] = true;
await video.init({
- isPreview: true
+ isPreview: false
});
video['_isInit'] = false;
frameCount = video.length;
@@ -121,7 +121,16 @@
);
message = 'Disposing ffmpeg state';
await ffmpeg.deleteFile('output.' + format);
- location.href = videoUrl;
+ // TODO: save dialog with preview
+ const el = document.createElement('a');
+ el.download = `output.${format}`;
+ el.href = videoUrl;
+ el.textContent = '-';
+ document.body.appendChild(el);
+ el.click();
+ setTimeout(() => {
+ el.remove();
+ }, 10);
};
$effect(() => {
if (canvas && VideoImplementation) start();