From b71ea70f337544557cf89d1e79c8665201332ef8 Mon Sep 17 00:00:00 2001 From: Terry Jia Date: Thu, 20 Aug 2026 20:47:43 -0400 Subject: [PATCH] fix: copy cropped tensor slices so the uncropped storage can be freed --- comfy_api/latest/_input/video_types.py | 4 ++-- tests-unit/comfy_api_test/video_types_test.py | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/comfy_api/latest/_input/video_types.py b/comfy_api/latest/_input/video_types.py index 1f2a0b867..d2c92f124 100644 --- a/comfy_api/latest/_input/video_types.py +++ b/comfy_api/latest/_input/video_types.py @@ -91,11 +91,11 @@ class VideoInput(ABC): cx, cy, cw, ch = rect return VideoFromComponents( VideoComponents( - images=components.images[:, cy:cy + ch, cx:cx + cw, :], + images=components.images[:, cy:cy + ch, cx:cx + cw, :].clone(), audio=components.audio, frame_rate=components.frame_rate, metadata=components.metadata, - alpha=components.alpha[:, cy:cy + ch, cx:cx + cw] + alpha=components.alpha[:, cy:cy + ch, cx:cx + cw].clone() if components.alpha is not None else None, ), diff --git a/tests-unit/comfy_api_test/video_types_test.py b/tests-unit/comfy_api_test/video_types_test.py index d064d133d..73e58aa94 100644 --- a/tests-unit/comfy_api_test/video_types_test.py +++ b/tests-unit/comfy_api_test/video_types_test.py @@ -1348,3 +1348,19 @@ def test_cropped_decode_and_save_paths_select_same_pixels(tmp_path): assert save_column in (2, 3) assert decode_column == save_column + + +def test_as_cropped_components_releases_uncropped_storage(): + images = torch.rand(2, 8, 8, 3) + video = VideoFromComponents( + VideoComponents(images=images, frame_rate=Fraction(8)) + ) + + cropped = video.as_cropped(0, 0, 4, 4) + cropped_images = cropped.get_components().images + + assert tuple(cropped_images.shape[1:3]) == (4, 4) + assert ( + cropped_images.untyped_storage().data_ptr() + != images.untyped_storage().data_ptr() + )