- Remove legacy_tasks.py, hybrid_state.py, render.py - Remove old task modules (analyze, execute, execute_sexp, orchestrate) - Add streaming interpreter from test repo - Add sexp_effects with primitives and video effects - Add streaming Celery task with CID-based asset resolution - Support both CID and friendly name references for assets - Add .dockerignore to prevent local clones from conflicting Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
32 lines
1.0 KiB
Common Lisp
32 lines
1.0 KiB
Common Lisp
;; Blend effect - combines two video frames
|
|
;; Streaming-compatible: frame is background, overlay is second frame
|
|
;; Usage: (blend background overlay :opacity 0.5 :mode "alpha")
|
|
;;
|
|
;; Params:
|
|
;; mode - blend mode (add, multiply, screen, overlay, difference, lighten, darken, alpha)
|
|
;; opacity - blend amount (0-1)
|
|
|
|
(require-primitives "image" "blending" "core")
|
|
|
|
(define-effect blend
|
|
:params (
|
|
(overlay :type frame :default nil)
|
|
(mode :type string :default "alpha")
|
|
(opacity :type float :default 0.5)
|
|
)
|
|
(if (core:is-nil overlay)
|
|
frame
|
|
(let [a frame
|
|
b overlay
|
|
a-h (image:height a)
|
|
a-w (image:width a)
|
|
b-h (image:height b)
|
|
b-w (image:width b)
|
|
;; Resize b to match a if needed
|
|
b-sized (if (and (= a-w b-w) (= a-h b-h))
|
|
b
|
|
(image:resize b a-w a-h "linear"))]
|
|
(if (= mode "alpha")
|
|
(blending:blend-images a b-sized opacity)
|
|
(blending:blend-images a (blending:blend-mode a b-sized mode) opacity)))))
|