diff --git a/client/ayon_core/pipeline/editorial.py b/client/ayon_core/pipeline/editorial.py index 933d1f1758..02986753b7 100644 --- a/client/ayon_core/pipeline/editorial.py +++ b/client/ayon_core/pipeline/editorial.py @@ -431,11 +431,11 @@ def get_media_range_with_retimes(otio_clip, handle_start, handle_end): if time_warp_nodes: # Naive approach: Resolve consecutive timewarp(s) on range, # then check if plate range has to be extended beyond source range. - frame_range = [media_in_trimmed] - in_frame = media_in_trimmed + time_scalar - while in_frame <= media_out_trimmed: - frame_range.append(in_frame) + in_frame = media_in_trimmed + frame_range = [in_frame] + for _ in range(otio_clip.source_range.duration.to_frames() - 1): in_frame += time_scalar + frame_range.append(in_frame) for tw_idx, tw in enumerate(time_warp_nodes): for idx, frame_number in enumerate(frame_range): @@ -457,11 +457,8 @@ def get_media_range_with_retimes(otio_clip, handle_start, handle_end): frame_range[idx] = frame_range[new_idx] # adjust range if needed - media_in_trimmed = min(media_in_trimmed, min(frame_range)) - media_in_trimmed = max(media_in_trimmed, media_in) - - media_out_trimmed = max(media_out_trimmed, max(frame_range)) - media_out_trimmed = min(media_out_trimmed, media_out) + media_in_trimmed = max(min(frame_range), media_in) + media_out_trimmed = min(max(frame_range), media_out) # adjust available handles if needed if (media_in_trimmed - media_in) < handle_start: diff --git a/tests/client/ayon_core/pipeline/editorial/test_media_range_with_retimes.py b/tests/client/ayon_core/pipeline/editorial/test_media_range_with_retimes.py index 9ff2a7fdb2..730e6b24cd 100644 --- a/tests/client/ayon_core/pipeline/editorial/test_media_range_with_retimes.py +++ b/tests/client/ayon_core/pipeline/editorial/test_media_range_with_retimes.py @@ -219,8 +219,8 @@ def test_movie_timewarp(): expected_data = { 'handleEnd': 10, 'handleStart': 0, - 'mediaIn': 948850, - 'mediaOut': 948860, + 'mediaIn': 948852, + 'mediaOut': 948858, 'speed': 1.0, 'versionData': {'handleEnd': 10, 'handleStart': 0, @@ -249,6 +249,7 @@ def test_movie_timewarp(): } } + import pdb ; pdb.set_trace() _check_expected_retimed_values( "qt_timewarp.json", expected_data, @@ -588,7 +589,7 @@ def test_img_sequence_2X_speed_timewarp(): timewarp to get from 948854 to 948874 """ expected_data = { - 'mediaIn': 948850, + 'mediaIn': 948854, 'mediaOut': 948874, 'handleStart': 0, 'handleEnd': 20,