Commit Graph
655 Commits
Author SHA1 Message Date
Austin Mroz e6d64e6255 Output as png 2025-10-30 19:43:04 -07:00
Austin Mroz daed1af7a4 Expose start time as format widget 2025-10-30 19:32:17 -07:00
Austin Mroz c1c8e3b7bb Add jank spectrograph output format 2025-10-30 19:21:19 -07:00
Austin Mroz 9eb204897c Fix SelectLatest
Fix a mistaken usage of this from a hasty prior pass on subgraph
compatibility.

Ensure options can't be uninitialized in SelectLatest
2025-10-12 22:17:01 -07:00
Austin Mroz 09b144e5c0 Skip preview update if all parameters unchanged 2025-10-08 10:37:05 -05:00
Austin Mroz 6923e3b392 Cleanup native sampling previews
Simpler than expected. It requires updating two locations, but the
update can be safely delayed until the new preview is displayed for
seamless transition.
2025-10-08 10:37:02 -05:00
neflow 08e8df15db Pass frame_rate to gifski -r. 2025-09-28 22:06:44 -07:00
Austin Mroz 0edce8ef7c Add safety check for existance to server endpoints 2025-09-17 18:19:01 -07:00
Austin Mroz 8450df1a8b Allow shift+tab to edit previous widget 2025-09-17 18:19:01 -07:00
Austin Mroz 1355e8c69f Support Animated latent previews on subgraph nodes
Code gets a little messy, but this should handle also handle a
hypothetical future with animated previews for concurrent execution,
while still properly cleaning up after itself once a workflow ceases
execution.

Swapping workflows still causes previews to cease display. I don't know
a clean solution for this.
2025-09-16 23:07:41 -07:00
Austin Mroz dabda5423a Add preview to LoadAudio nodes
Resolves #541
2025-09-07 20:11:47 -07:00
Austin Mroz 2372cebde1 Cleanup app.graph references for subgraph compat 2025-09-07 20:11:47 -07:00
Austin Mroz 8e4d79471b Disable serialization of animated preview widgets 2025-08-07 09:53:50 -05:00
AustinMroz f20b356f68 Merge version 1.7.3 2025-08-07 08:57:57 -05:00
Austin Mroz 7e9bea5336 Fix unclosed file handle
The query video endpoint failed to container after completion. This has
been fixed.

Resolves #526
2025-08-07 08:51:49 -05:00
Austin Mroz c017071cc3 Wan22 vae rate info, frontend fixes
Added rate information for the Wan22 vae. This is only used for the 5b
model and the only change is a slight reduction in the preview rate.

Fixed being unable to quickly update multiple frontend widget values
with tab.

Fixed an incorrect default modulus for which forced inconvenient
dimensions for the Load Image node.
2025-08-07 08:40:00 -05:00
Austin Mroz 9cdacf6363 Add test case for loading and saving of audio 2025-07-28 01:44:19 -05:00
Austin Mroz 330bce6c3c Fix misplaced gifski audio workaround
The audio input was changed to be discarded when outputting to the
gifski format since gifs do not support audio and other non-audio
supporting formats will silently ignore audio when it cannot be embedded.
This fix was mistakenly added outside the appropriate conditional block
and instead discarded all audio. This was not intended

Resolves #521
2025-07-28 01:22:38 -05:00
Austin Mroz f1c513a563 Fix node reference missed from refactor 2025-07-26 22:27:57 -05:00
AustinMroz 9c5407f2a8 Merge 1.7.0 2025-07-26 15:59:14 -05:00
Austin Mroz eb36470be4 Fix missed step multiplier adjustment
The step calculated from frame rate for start_time on load video ffmpeg
nodes has now been adjusted to not have an unneeded x10 multiplier

TODO: reconsider if this creates overly undesirable breakage if VHS
frontend code is not used.
2025-07-26 15:54:58 -05:00
Austin Mroz 9601d8792e Add bgra as known pixfmt with alpha
Quick workaround for improved compatibility with ffv1
2025-07-26 15:53:25 -05:00
Austin Mroz 97a57e38a8 Round tensors when converting to int
This has been long considered. Special thanks to Mel for providing
additional insight.
2025-07-26 15:49:56 -05:00
Austin Mroz 285568f530 Use libvpx-vp9 for main decode too
An extra pass was added to the ffmpeg_frame_generation code to properly
detect and handle alpha when loading vp9 videos. This early commit
allowed for correct detection, but then failed to apply the decoder to
the main pass, so no alpha was output. This has been fixed.
2025-07-26 15:38:20 -05:00
Austin Mroz be11f43838 Remove global vpx codec context
Since codec contexts have state, reusing them is dangerous.
2025-07-26 15:24:34 -05:00
Austin Mroz 253251fa5c Fix latent preview race cond, subgraphs interop
Since the subgraph utils aren't exposed from core, a small stub function
is just re implemented in VHS.

Execution state seems be robust enough to trust core to clear this
state, but it's initially set to 0 by VHS now to ensure the preview
display doesn't race the message that the node is being processed.

Unfortunately, the lack of ability to determine if a node is actually
running means swapping the active workflow once again breaks the display
of previews. I don't see a way to fix this without changes to core.

While disappointing as a maintainer, the fix never being rolled out
means this isn't a loss of functionality to end users.
2025-07-26 12:20:14 -05:00
Austin Mroz f01332d42c Fix animated latent previews
Resolves #516

This functions so long as multiple nodes aren't providing latent
previews at once. I will need to take time to consider if such
functionality would even be desirable.

Does not resolve subgraphs. Graph traversal functions don't appear to be
exposed, so I'll most likely need to re-implement myself, but I need to
take the time to exhaustively verify first.
2025-07-26 01:38:31 -05:00
Austin Mroz 229642349b Merge FFV1 2025-07-25 01:18:00 -05:00
Austin Mroz 3b2fb5f518 Fix incorrect time base in query video 2025-07-24 22:45:24 -05:00
Austin Mroz a3d66b6736 Merge upload-progress 2025-07-24 21:59:59 -05:00
Austin Mroz 8b62aa458d Ignore audio for gifski output format.
Gifs do not support audio. Rather than crashing, VHS will now ignore any
audio input when outputting to the gifski format. Thanks Mel.
2025-07-24 20:44:21 -05:00
Austin Mroz 7a50ec7ec8 Use PyAV for querrying videos, Round frame est
Prior ffmpeg implementation provided insufficient precision for frame
estimation and was heavier than desired. Regexes are no longer used

Round frame_rate annotation to at most 2 digits
2025-07-23 02:54:49 -05:00
Austin Mroz f76436dcf2 Remove step multiplier, further timestamp fixes
The VHSINT and VHSFLOAT widget constructors failed to multiply the step
by 10. Since this step value is internal to VHS, this is instead fixed
by removing the x10 multiplier entirely from the logic

Integer seconds between 0 and 9 are now correctly padded in timestamps
2025-07-22 01:16:39 -05:00
Hoernchen f1698cbd92 add ffv1 support
FFV1 is a nice lossless format that allows recovering the original images for postprocessing. It is nowadays specified for MP4 containers as well, but ffmpeg support was only added in nov '24: https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/0b8c9cf5b490a0231949ab3c6d797462ae001730 so for now MKV is enough.
2025-07-21 23:03:36 +02:00
Austin Mroz 9e963ff5ed Add progress bar to uploads
Resolves #507
2025-07-13 20:59:47 -05:00
Austin Mroz 266f27aeba Support loading transparent VP9
Resolves #502
2025-07-13 20:03:35 -05:00
Austin Mroz dc98c8be65 Fix hashing nonexistant files, widget rounding
Some nodes "hash" (actually just mtime) input files to determine if
re-execution is needed. A check has been added to not attempt this
hashing if no file exists.

Fix an incorrect bounds check in the newer frontend widget code.
2025-06-22 17:16:31 -05:00
Austin Mroz 66e443b583 Add duration output to LoadAudio nodes.
Resolves #488

Commit to bumping minor version with next update as this change
introduces a new output.
2025-06-12 12:08:36 -05:00
Austin Mroz 66e95e9471 Marginal path display improvements 2025-06-03 15:43:02 -05:00
Austin Mroz 7b26c04c8a Apply Max/Min to VHSINT, initial value in VHSFLOAT 2025-06-03 14:17:35 -05:00
Austin Mroz d7c47abc5e Use 204 for most failed server requests
Previously, detailed response codes were used to indicate what went
wrong on a failed server request. However, this produces un catchable
error messages which are undesirable. Instead, these responses now use
204 to indicate that the request was successfully processed, but returned
no content.
2025-06-02 21:57:48 -05:00
Austin Mroz 688b796e58 Remove inheritance of VHS widgets from builtins
Resolves #484

Fix truncation of trailing 0 when displaying values
2025-06-02 21:24:03 -05:00
Austin Mroz a5946e88a2 More robust animated latent preview tracking 2025-05-23 11:17:49 -05:00
Austin Mroz a20beefa20 Rework widget display to properly measure text
Previously displaying values was a mix of naive guesswork and giving up.
This display process has been rewritten to produce output that is much
more likely to be usable even under tight width restraints.

As part of this, the ordering in which different widget components are
drawn has been reworked.
2025-05-23 01:09:31 -05:00
Austin Mroz 63bfea3d74 Clean up mouse interaction,
Also modifies angle of disable icon
2025-05-22 01:54:41 -05:00
Austin Mroz d5ba30a754 Stroke widget buttons manually
The buttons added to reset to either reset to default value, reset to a
disabled value, or indicate that one of these is currently selected,
displaying poorly depending on availability of system fonts. This is
resolved by stroking the shapes manually.
2025-05-21 17:09:22 -05:00
Austin Mroz 2ab65b9c4c Cleanup timestamp widget conversion code 2025-05-21 16:15:56 -05:00
Austin Mroz c953e12408 Cleanup optional arguments on Load Audio nodes
duration, start_time, and the equivalent seek_seconds are now all marked
as optional inputs and properly set to have default values.
2025-05-21 15:39:08 -05:00
Austin Mroz 6ec6007553 Test fixes.
Auto-close workflow if a test completes successfully.

Add pro-res test

Remove accidental absolute path from test
2025-05-13 12:55:42 -05:00
Austin Mroz 0d5b445a70 Fix connections to format widgets 2025-05-12 15:50:18 -05:00