Commit Graph
626 Commits
Author SHA1 Message Date
Austin Mroz 7b9d78a108 Improved error handling, initial audio processing 2025-07-24 20:40:44 -05:00
Austin Mroz b087a62fb6 WIP progress error handling cleanup
Remove ocont from with block. This obscures actual causes
Errors from pyav_transcode get propogated up to await.

Ideal case is that connection errors get caught and swallowed, while any
others are passed. Care is required as invalid state can cause PyAV to
segfault, killing the entire ComfyUI instance

Instantiate libvpx-vp9 decoder as required, Since the decoder has
history, this ensures there's no interference across or between requests
2025-07-24 16:28:15 -05:00
Austin Mroz a99efd3897 Naming cleanup, funcitonal skip_first_frames
Some testing has been done at using BufferedWriter to limit overhead of
synchronization logic, but buffering over write size causes breakage
with PyAV calls. Might investigate time based batching in the future.
2025-07-24 15:13:46 -05:00
Austin Mroz a0d2723569 Proof of concept transcoding with PyAV
Despite the large amount of work invested for proper synchronization,
performance seems substantially worse than the prior ffmpeg
implementation
2025-07-24 01:25:41 -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
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
Austin Mroz 38fbe354b1 Update num_frames when pingpong is applied
Closes #467
2025-05-06 17:23:59 -05:00
Austin Mroz 001a508cb5 Allow drag drop on upload nodes.
Fix out of date IS_CHANGED methods for Load Audio nodes

fix incorrect parens in preview code. The string "0" is truthy.
2025-05-06 16:43:14 -05:00
Austin Mroz a7ce59e381 Fix Use Everywhere compatibility 2025-04-26 15:27:20 -05:00
AustinMroz 598e181e97 Merge 1.6.0 2025-04-18 13:54:22 -05:00
Austin Mroz 47fb44708d Fix missing list nesting 2025-04-18 13:46:18 -05:00
Austin Mroz 69ef6d4edc Merge pointer fix 2025-04-18 12:21:44 -05:00
filtered 7ed4f6c510 Remove deprecated litegraph param
Unnecessary parameter will be removed in a future release, and brough inline with all other CanvasPointer callbacks.
2025-04-18 21:30:59 +10:00
Austin Mroz 0c0288f9b5 Add duration option to Load Audio (Path)
Functionality already exists in Upload variant and backing util
function, so the change is negligible.

Also commit to minor version bump. Other concommitant changes also break
forwards compatibility, so it's a chance to roll multiple together even
if this bump doesn't accompany anything big or flashy.
2025-04-14 02:32:54 -05:00
Austin Mroz e49fed4585 Variable length format arguements. ProRes fixes
Co-authored-by: Kaur Kuut <strom@nevermore.ee>

A single item list is now mapped as a template string later flattened to a
variable number of arguments. This handles the case of both no and
multiple arguments

Apply required ProRes fixes from xStrom. While the delays were
unfortunate, these changes should handle any future edge cases and
retains support for older workflows using the numbered ProRes profiles

Closes #451
2025-04-13 02:26:26 -05:00
Austin Mroz 053e2beb1d Rework and expand video_format capabilities
Introduces two new dynamic arguments which do not generate new widgets
- ["string"]: string is evaluated as template string with kwargs for
  values. This allows an argument to reference multiple widgets and
  allows multiple arguments to reference a widget
- ["kwarg_key", {}]: This allows for verbose translating of a limited
  set of values.
  - Multiple dicts can be nested and reference different kwargs

Adds an extra_widgets field to video_formats for widgets do nothing
unless referenced by one of the two new argument types.

Pass has_alpha as a kwarg for reference with the new argument types
2025-04-10 00:58:39 -05:00
Austin Mroz 87f73c7dbb Fix misplaced parens
Resolves #460
2025-04-09 13:03:24 -05:00
Austin Mroz 136fc6abde Merge nvenc-av1, pixfmt, prepass fixes 2025-04-08 01:05:27 -05:00
Austin Mroz 82f62dcbf4 Support audio in unbatch node 2025-04-06 11:15:25 -05:00
Kaur Kuut a11bcf4a08 Use correct p010le pixel format with NVENC. 2025-04-06 15:49:15 +03:00
Kaur Kuut 17ad06aa25 Add NVENC AV1 format. 2025-04-06 15:25:09 +03:00
Kaur Kuut 4980590ac1 Fix pre_pass and inputs_main_pass args index. 2025-04-06 14:41:41 +03:00
Austin Mroz df55f01d1d Float rounding fixes
Backend preview code will now accept floats and convert or truncate as
needed.

Fix updateParameter callbacks using out of date, unbounded values
2025-04-05 04:11:07 -05:00
AustinMroz 7236c5dff0 Merge 1.5.17 2025-04-03 01:46:54 -05:00
Austin Mroz 2fb06b1634 Merge explicit Metadata, gifski fixes. 2025-04-03 01:45:21 -05:00
Kaur Kuut d1733bb518 Add explicit color space metadata for FFmpeg 4.2 output. 2025-04-03 00:30:23 +03:00
Kaur Kuut a0312ec4c2 Increase the quality of the YUV4MPEG2 pipe stream to Gifski. 2025-04-02 23:47:45 +03:00
Austin Mroz b9366c11bc Swap color range from full to pc, formats
Older ffmpeg versions don't include the full option for color_range.
Documentation indicates that pc resolves to the same value and has been
swapped to.

Resolves #445

The format fix for gifski was improperly applied to all outputs. It has
now been properly restricted.
2025-04-02 14:32:08 -05:00
AustinMroz ab96cf2608 Merge version 1.5.15 2025-04-02 11:47:31 -05:00
Austin Mroz f837d6ffdd Force gifski outputs to display as 'image/gif'
When preview data is sent to the fronted, a format field is sent back
to determine how it is displayed. Gifski and ffmpeg-gif formats use
video for the first term since they use the video_formats subsystem, but
this currently results in them being displayed in a <video> tag on the
frontend.

For now, any format using the gifski route has it's format hard coded to
be corrected to gif, but I'm considering a more thorough update in the
future which will use the video_formats subsystem for images as well and
provides a means for formats to them self specify output type.
2025-04-02 11:37:06 -05:00
Austin Mroz 20c4c5a40d Merge gifski resolution fix 2025-04-02 11:00:03 -05:00
Kaur Kuut ccbaf837ad Add support for high resolution gifski encodes. 2025-04-02 16:04:31 +03:00
Austin Mroz eeb794ab0d Merge colorspace, NVENC fixes. 2025-04-02 00:29:14 -05:00
Kaur Kuut d18ff47633 Remove broken rgba support from NVENC formats. 2025-04-02 00:46:12 +03:00
Kaur Kuut b34d3ba46b Add color space metadata to ffmpeg input. 2025-04-01 16:02:32 +03:00