Combines the VIDEO_EDIT trim/crop feature with the asset-based video
metadata approach from #15147/#15180. #15090 implemented the same
VIDEO_EDIT node feature (VideoTrim/VideoCrop/LoadVideo edit widget,
DynamicCombo codec, io.VideoEdit type) essentially identically to
#15147, so those files merged cleanly with no functional duplication.
Conflict resolution:
- comfy_api/latest/_input/video_types.py: trivial docstring-only
conflict on VideoInput.as_cropped(); kept the more descriptive
docstring from #15090, function body identical on both sides.
- server.py: reverted to master's version, dropping #15090's
competing `GET /video_metadata` endpoint (and the
resolve_view_media_path refactor that existed solely to support it).
That endpoint was #15090's alternative way of sourcing video
metadata for the frontend widget (live ffprobe via HTTP), which is
superseded here by #15147/#15180's asset system_metadata extraction
on ingest/scan. Nothing else in the tree referenced this route, so
dropping it is safe. No other unique, non-conflicting content from
#15090 was discarded.
Create Video gets a bit_depth option (8-bit/10-bit); the selected depth is carried by the video and applied when it gets encoded. Save Video and Video Slice now keep the source bit depth instead of always quantizing to 8-bit, so 10-bit videos stay 10-bit. 10-bit uses h264 with the yuv420p10le pixel format,so there's no new codec or container.
Signed-off-by: bigcat88 <bigcat88@icloud.com>
* CURVE node
* remove curve to sigmas node
* feat: add CurveInput ABC with MonotoneCubicCurve implementation (#12986)
CurveInput is an abstract base class so future curve representations
(bezier, LUT-based, analytical functions) can be added without breaking
downstream nodes that type-check against CurveInput.
MonotoneCubicCurve is the concrete implementation that:
- Mirrors frontend createMonotoneInterpolator (curveUtils.ts) exactly
- Pre-computes slopes as numpy arrays at construction time
- Provides vectorised interp_array() using numpy for batch evaluation
- interp() for single-value evaluation
- to_lut() for generating lookup tables
CurveEditor node wraps raw widget points in MonotoneCubicCurve.
* linear curve
* refactor: move CurveEditor to comfy_extras/nodes_curve.py with V3 schema
* feat: add HISTOGRAM type and histogram support to CurveEditor
* code improve
---------
Co-authored-by: Christian Byrne <cbyrne@comfy.org>
* ComfyAPI Core v0.0.2
* Respond to PR feedback
* Fix Python 3.9 errors
* Fix missing backward compatibility proxy
* Reorganize types a bit
The input types, input impls, and utility types are now all available in
the versioned API. See the change in `comfy_extras/nodes_video.py` for
an example of their usage.
* Remove the need for `--generate-api-stubs`
* Fix generated stubs differing by Python version
* Fix ruff formatting issues