HaaDeej commited on
Commit
b6d131a
·
verified ·
1 Parent(s): 1ac3715

Upload folder using huggingface_hub

Browse files
build_manifest_v2.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json, copy, os
2
+ from collections import Counter
3
+
4
+ m = json.load(open('/workspace/ltx_co_manifest_recolored.json'))
5
+ WIN_SIZE = 81
6
+ KF_DIR = '/workspace/q_kf_recolored'
7
+
8
+ cuts_raw = [
9
+ (7, 56, 623),
10
+ (9, 14, 743),
11
+ (20, 39, 1659),
12
+ (23, 7, 1870),
13
+ (32, 49, 2641),
14
+ (39, 22, 3181),
15
+ (41, 52, 3373),
16
+ (43, 58, 3541),
17
+ (49, 58, 4027),
18
+ (50, 30, 4080),
19
+ (51, 10, 4141),
20
+ (66, 41, 5387),
21
+ ]
22
+
23
+ CUT_AT_START_THRESH = 15
24
+ new_manifest = copy.deepcopy(m)
25
+
26
+ for wi, fi, abs_cut in cuts_raw:
27
+ w = new_manifest[wi]
28
+ kf_name = 'ref_%06d.png' % abs_cut
29
+ kf_path = KF_DIR + '/' + kf_name
30
+ kf_exists = os.path.exists(kf_path)
31
+
32
+ if fi <= CUT_AT_START_THRESH:
33
+ w['cut_at_start'] = True
34
+ print('w%d: cut_at_start=True (fi=%d, kf_pos=%d)' % (wi, fi, w['kf_pos']))
35
+ else:
36
+ if kf_exists:
37
+ anchor_pos = min(fi + 2, WIN_SIZE - 1)
38
+ if 'extra_anchors' not in w:
39
+ w['extra_anchors'] = []
40
+ w['extra_anchors'].append({'path': kf_path, 'pos': anchor_pos, 'weight': 0.95})
41
+ print('w%d: extra_anchor %s @ pos %d (cut@%d)' % (wi, kf_name, anchor_pos, fi))
42
+ else:
43
+ print('w%d: GEEN kf %s, skip' % (wi, kf_name))
44
+
45
+ if wi == 50 and fi == 30:
46
+ old_pos = w['kf_pos']
47
+ w['kf_pos'] = fi + 2 # 32 ipv 52
48
+ print('w50: kf_pos %d -> %d' % (old_pos, w['kf_pos']))
49
+
50
+ # Scene-ID toewijzen
51
+ scene_id = 0
52
+ for i, w in enumerate(new_manifest):
53
+ if w.get('cut_at_start') and i > 0:
54
+ scene_id += 1
55
+ w['scene_id'] = scene_id
56
+
57
+ scene_counts = Counter(w['scene_id'] for w in new_manifest)
58
+ print('\nScene-verdeling (parallel-klaar):')
59
+ for sc in sorted(scene_counts):
60
+ ws = [i for i, ww in enumerate(new_manifest) if ww['scene_id'] == sc]
61
+ cnt = scene_counts[sc]
62
+ print(' scene %d: w%d-w%d (%d vensters, ~%dmin %ds)' % (sc, ws[0], ws[-1], cnt, cnt*63//60, cnt*63%60))
63
+
64
+ out_path = '/workspace/ltx_co_manifest_v2.json'
65
+ with open(out_path, 'w') as f:
66
+ json.dump(new_manifest, f, indent=2)
67
+ print('\nGeschreven: ' + out_path)
68
+ print('Totaal: %d vensters' % len(new_manifest))
check_quanto.py ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import sys
2
+ sys.path.insert(0,'/workspace/LTX-2/packages/ltx-pipelines/src')
3
+ sys.path.insert(0,'/workspace/LTX-2/packages/ltx-core/src')
4
+ import torch
5
+ from optimum.quanto import quantize, qfloat8, freeze
6
+ from ltx_pipelines.ic_lora import ICLoraPipeline
7
+ from ltx_core.loader import LoraPathStrengthAndSDOps, LTXV_LORA_COMFY_RENAMING_MAP
8
+ from ltx_pipelines.utils.types import OffloadMode
9
+
10
+ pipe = ICLoraPipeline(
11
+ distilled_checkpoint_path='/workspace/models/LTX-2.3/ltx-2.3-22b-distilled.safetensors',
12
+ spatial_upsampler_path='/workspace/models/LTX-2.3/ltx-2.3-spatial-upscaler-x2-1.1.safetensors',
13
+ gemma_root='/workspace/models/LTX-2',
14
+ loras=(LoraPathStrengthAndSDOps('/workspace/models/loras/ltx-2.3-22b-ic-lora-colorization-0.9.safetensors',1.0,LTXV_LORA_COMFY_RENAMING_MAP),),
15
+ quantization=None, offload_mode=OffloadMode('none'),
16
+ )
17
+
18
+ with torch.no_grad():
19
+ dit = pipe.stage_1._build_transformer()
20
+
21
+ print("VRAM before quantize:", torch.cuda.memory_allocated()//1024**3, "GB")
22
+ quantize(dit, weights=qfloat8)
23
+
24
+ print("--- patchify_proj modules after quantize (before freeze) ---")
25
+ for name, mod in dit.named_modules():
26
+ if 'patchify_proj' in name:
27
+ w = getattr(mod, 'weight', 'NO_ATTR')
28
+ print(name, type(mod).__name__, "weight-type:", type(w).__name__ if w is not None else "None")
29
+
30
+ print("\nFreezing...")
31
+ freeze(dit)
32
+ print("Freeze done")
33
+
34
+ print("--- patchify_proj modules after freeze ---")
35
+ for name, mod in dit.named_modules():
36
+ if 'patchify_proj' in name:
37
+ w = getattr(mod, 'weight', 'NO_ATTR')
38
+ qw = getattr(mod, 'qweight', 'NO_ATTR') if hasattr(mod, 'qweight') else 'N/A'
39
+ print(name, type(mod).__name__, "weight:", w if w is None else type(w).__name__, "qweight:", type(qw).__name__ if not isinstance(qw,str) else qw)
40
+
41
+ print("VRAM after freeze:", torch.cuda.memory_allocated()//1024**3, "GB")
42
+
43
+ print('=== Check simple_preprocessor.patchify_proj ===')
44
+ # velocity_model is inside X0Model
45
+ vm = dit.model._model if hasattr(dit.model,'_model') else None
46
+ if vm is None:
47
+ for attr in ['_model','model','velocity_model']:
48
+ vm = getattr(dit, attr, None) or getattr(getattr(dit,'model',None), attr, None)
49
+ if vm: break
50
+
51
+ if vm:
52
+ vap = getattr(vm, 'video_args_preprocessor', None)
53
+ if vap:
54
+ print('video_args_preprocessor found:', type(vap).__name__)
55
+ sp = getattr(vap, 'simple_preprocessor', None) or vap
56
+ pp = getattr(sp, 'patchify_proj', None)
57
+ if pp:
58
+ w = getattr(pp, 'weight', 'NO_ATTR')
59
+ print('simple_preprocessor.patchify_proj type:', type(pp).__name__)
60
+ print('patchify_proj.weight:', w if w is None else (type(w).__name__, getattr(w,'shape','?')))
61
+ else:
62
+ print('no video_args_preprocessor')
63
+ else:
64
+ print('no velocity_model found; dit attrs:', [a for a in dir(dit) if not a.startswith('_')][:20])
extract_windows.sh ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ cd /workspace
3
+ mkdir -p ltx_windows
4
+ for K in $(seq 0 66); do
5
+ s=$((K*81)); e=$((s+81))
6
+ ffmpeg -y -i schindler_720.mp4 -vf "trim=start_frame=${s}:end_frame=${e},setpts=PTS-STARTPTS,scale=960:544" -an ltx_windows/w${K}.mp4 2>/dev/null
7
+ done
8
+ echo "DONE_EXTRACT $(ls ltx_windows/*.mp4 2>/dev/null | wc -l)"
iso.py ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os, numpy as np
2
+ from PIL import Image
3
+ kf="/workspace/q_kf/"; yel=blu=met=ok=0; n=0
4
+ for f in sorted(os.listdir(kf)):
5
+ if not f.lower().endswith(('.png','.jpg','.jpeg')): continue
6
+ a=np.array(Image.open(kf+f).convert('RGB')).astype(np.float32); n+=1
7
+ g=0.299*a[...,0]+0.587*a[...,1]+0.114*a[...,2]
8
+ flags=[]
9
+ mw=g>210
10
+ if mw.sum()>300:
11
+ r,gg,b=a[...,0][mw].mean(),a[...,1][mw].mean(),a[...,2][mw].mean()
12
+ yb=(r+gg)/2-b
13
+ if yb>8: flags.append(f"WIT->GEEL({yb:.1f})"); yel+=1
14
+ md=(g>35)&(g<95)
15
+ if md.sum()>500:
16
+ r,gg,b=a[...,0][md].mean(),a[...,1][md].mean(),a[...,2][md].mean()
17
+ bb=b-gg
18
+ if bb>5: flags.append(f"UNIFORM->BLAUW({bb:.1f})"); blu+=1
19
+ mm=(g>80)&(g<160)
20
+ if mm.sum()>1000:
21
+ r,gg,b=a[...,0][mm],a[...,1][mm],a[...,2][mm]
22
+ cv=float(np.std(r-gg))+float(np.std(b-gg))
23
+ if cv>12: flags.append(f"METAAL-VLEK({cv:.1f})"); met+=1
24
+ if flags and (yel+blu+met)<=14: print(f"{f}: {', '.join(flags)}")
25
+ if not flags: ok+=1
26
+ print(f"\n=== {n} keyframes: wit->geel={yel}, uniform->blauw={blu}, metaal-vlek={met}, schoon={ok} ===")
ltx_co_manifest.json ADDED
@@ -0,0 +1,538 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "gray": "/workspace/ltx_windows/w0.mp4",
4
+ "keyframe": "/workspace/q_kf/ref_000000.png",
5
+ "kf_pos": 0,
6
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
7
+ "out": "/workspace/ltx_co_out/w0.mp4",
8
+ "cut_at_start": true
9
+ },
10
+ {
11
+ "gray": "/workspace/ltx_windows/w1.mp4",
12
+ "keyframe": "/workspace/q_kf/ref_000150.png",
13
+ "kf_pos": 69,
14
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
15
+ "out": "/workspace/ltx_co_out/w1.mp4",
16
+ "cut_at_start": false
17
+ },
18
+ {
19
+ "gray": "/workspace/ltx_windows/w2.mp4",
20
+ "keyframe": "/workspace/q_kf/ref_000225.png",
21
+ "kf_pos": 63,
22
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
23
+ "out": "/workspace/ltx_co_out/w2.mp4",
24
+ "cut_at_start": false
25
+ },
26
+ {
27
+ "gray": "/workspace/ltx_windows/w3.mp4",
28
+ "keyframe": "/workspace/q_kf/ref_000300.png",
29
+ "kf_pos": 57,
30
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
31
+ "out": "/workspace/ltx_co_out/w3.mp4",
32
+ "cut_at_start": false
33
+ },
34
+ {
35
+ "gray": "/workspace/ltx_windows/w4.mp4",
36
+ "keyframe": "/workspace/q_kf/ref_000375.png",
37
+ "kf_pos": 51,
38
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
39
+ "out": "/workspace/ltx_co_out/w4.mp4",
40
+ "cut_at_start": false
41
+ },
42
+ {
43
+ "gray": "/workspace/ltx_windows/w5.mp4",
44
+ "keyframe": "/workspace/q_kf/ref_000450.png",
45
+ "kf_pos": 45,
46
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
47
+ "out": "/workspace/ltx_co_out/w5.mp4",
48
+ "cut_at_start": false
49
+ },
50
+ {
51
+ "gray": "/workspace/ltx_windows/w6.mp4",
52
+ "keyframe": "/workspace/q_kf/ref_000525.png",
53
+ "kf_pos": 39,
54
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
55
+ "out": "/workspace/ltx_co_out/w6.mp4",
56
+ "cut_at_start": false
57
+ },
58
+ {
59
+ "gray": "/workspace/ltx_windows/w7.mp4",
60
+ "keyframe": "/workspace/q_kf/ref_000600.png",
61
+ "kf_pos": 33,
62
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
63
+ "out": "/workspace/ltx_co_out/w7.mp4",
64
+ "cut_at_start": false
65
+ },
66
+ {
67
+ "gray": "/workspace/ltx_windows/w8.mp4",
68
+ "keyframe": "/workspace/q_kf/ref_000698.png",
69
+ "kf_pos": 50,
70
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
71
+ "out": "/workspace/ltx_co_out/w8.mp4",
72
+ "cut_at_start": false
73
+ },
74
+ {
75
+ "gray": "/workspace/ltx_windows/w9.mp4",
76
+ "keyframe": "/workspace/q_kf/ref_000743.png",
77
+ "kf_pos": 14,
78
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
79
+ "out": "/workspace/ltx_co_out/w9.mp4",
80
+ "cut_at_start": false
81
+ },
82
+ {
83
+ "gray": "/workspace/ltx_windows/w10.mp4",
84
+ "keyframe": "/workspace/q_kf/ref_000818.png",
85
+ "kf_pos": 8,
86
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
87
+ "out": "/workspace/ltx_co_out/w10.mp4",
88
+ "cut_at_start": false
89
+ },
90
+ {
91
+ "gray": "/workspace/ltx_windows/w11.mp4",
92
+ "keyframe": "/workspace/q_kf/ref_000893.png",
93
+ "kf_pos": 2,
94
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
95
+ "out": "/workspace/ltx_co_out/w11.mp4",
96
+ "cut_at_start": false
97
+ },
98
+ {
99
+ "gray": "/workspace/ltx_windows/w12.mp4",
100
+ "keyframe": "/workspace/q_kf/ref_001043.png",
101
+ "kf_pos": 71,
102
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
103
+ "out": "/workspace/ltx_co_out/w12.mp4",
104
+ "cut_at_start": false
105
+ },
106
+ {
107
+ "gray": "/workspace/ltx_windows/w13.mp4",
108
+ "keyframe": "/workspace/q_kf/ref_001118.png",
109
+ "kf_pos": 65,
110
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
111
+ "out": "/workspace/ltx_co_out/w13.mp4",
112
+ "cut_at_start": false
113
+ },
114
+ {
115
+ "gray": "/workspace/ltx_windows/w14.mp4",
116
+ "keyframe": "/workspace/q_kf/ref_001193.png",
117
+ "kf_pos": 59,
118
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
119
+ "out": "/workspace/ltx_co_out/w14.mp4",
120
+ "cut_at_start": false
121
+ },
122
+ {
123
+ "gray": "/workspace/ltx_windows/w15.mp4",
124
+ "keyframe": "/workspace/q_kf/ref_001268.png",
125
+ "kf_pos": 53,
126
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
127
+ "out": "/workspace/ltx_co_out/w15.mp4",
128
+ "cut_at_start": false
129
+ },
130
+ {
131
+ "gray": "/workspace/ltx_windows/w16.mp4",
132
+ "keyframe": "/workspace/q_kf/ref_001343.png",
133
+ "kf_pos": 47,
134
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
135
+ "out": "/workspace/ltx_co_out/w16.mp4",
136
+ "cut_at_start": false
137
+ },
138
+ {
139
+ "gray": "/workspace/ltx_windows/w17.mp4",
140
+ "keyframe": "/workspace/q_kf/ref_001418.png",
141
+ "kf_pos": 41,
142
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
143
+ "out": "/workspace/ltx_co_out/w17.mp4",
144
+ "cut_at_start": false
145
+ },
146
+ {
147
+ "gray": "/workspace/ltx_windows/w18.mp4",
148
+ "keyframe": "/workspace/q_kf/ref_001493.png",
149
+ "kf_pos": 35,
150
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
151
+ "out": "/workspace/ltx_co_out/w18.mp4",
152
+ "cut_at_start": false
153
+ },
154
+ {
155
+ "gray": "/workspace/ltx_windows/w19.mp4",
156
+ "keyframe": "/workspace/q_kf/ref_001568.png",
157
+ "kf_pos": 29,
158
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
159
+ "out": "/workspace/ltx_co_out/w19.mp4",
160
+ "cut_at_start": false
161
+ },
162
+ {
163
+ "gray": "/workspace/ltx_windows/w20.mp4",
164
+ "keyframe": "/workspace/q_kf/ref_001643.png",
165
+ "kf_pos": 23,
166
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
167
+ "out": "/workspace/ltx_co_out/w20.mp4",
168
+ "cut_at_start": false
169
+ },
170
+ {
171
+ "gray": "/workspace/ltx_windows/w21.mp4",
172
+ "keyframe": "/workspace/q_kf/ref_001734.png",
173
+ "kf_pos": 33,
174
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
175
+ "out": "/workspace/ltx_co_out/w21.mp4",
176
+ "cut_at_start": false
177
+ },
178
+ {
179
+ "gray": "/workspace/ltx_windows/w22.mp4",
180
+ "keyframe": "/workspace/q_kf/ref_001809.png",
181
+ "kf_pos": 27,
182
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
183
+ "out": "/workspace/ltx_co_out/w22.mp4",
184
+ "cut_at_start": false
185
+ },
186
+ {
187
+ "gray": "/workspace/ltx_windows/w23.mp4",
188
+ "keyframe": "/workspace/q_kf/ref_001870.png",
189
+ "kf_pos": 7,
190
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
191
+ "out": "/workspace/ltx_co_out/w23.mp4",
192
+ "cut_at_start": false
193
+ },
194
+ {
195
+ "gray": "/workspace/ltx_windows/w24.mp4",
196
+ "keyframe": "/workspace/q_kf/ref_001945.png",
197
+ "kf_pos": 1,
198
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
199
+ "out": "/workspace/ltx_co_out/w24.mp4",
200
+ "cut_at_start": false
201
+ },
202
+ {
203
+ "gray": "/workspace/ltx_windows/w25.mp4",
204
+ "keyframe": "/workspace/q_kf/ref_002095.png",
205
+ "kf_pos": 70,
206
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
207
+ "out": "/workspace/ltx_co_out/w25.mp4",
208
+ "cut_at_start": false
209
+ },
210
+ {
211
+ "gray": "/workspace/ltx_windows/w26.mp4",
212
+ "keyframe": "/workspace/q_kf/ref_002170.png",
213
+ "kf_pos": 64,
214
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
215
+ "out": "/workspace/ltx_co_out/w26.mp4",
216
+ "cut_at_start": false
217
+ },
218
+ {
219
+ "gray": "/workspace/ltx_windows/w27.mp4",
220
+ "keyframe": "/workspace/q_kf/ref_002245.png",
221
+ "kf_pos": 58,
222
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
223
+ "out": "/workspace/ltx_co_out/w27.mp4",
224
+ "cut_at_start": false
225
+ },
226
+ {
227
+ "gray": "/workspace/ltx_windows/w28.mp4",
228
+ "keyframe": "/workspace/q_kf/ref_002320.png",
229
+ "kf_pos": 52,
230
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
231
+ "out": "/workspace/ltx_co_out/w28.mp4",
232
+ "cut_at_start": false
233
+ },
234
+ {
235
+ "gray": "/workspace/ltx_windows/w29.mp4",
236
+ "keyframe": "/workspace/q_kf/ref_002395.png",
237
+ "kf_pos": 46,
238
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
239
+ "out": "/workspace/ltx_co_out/w29.mp4",
240
+ "cut_at_start": false
241
+ },
242
+ {
243
+ "gray": "/workspace/ltx_windows/w30.mp4",
244
+ "keyframe": "/workspace/q_kf/ref_002470.png",
245
+ "kf_pos": 40,
246
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
247
+ "out": "/workspace/ltx_co_out/w30.mp4",
248
+ "cut_at_start": false
249
+ },
250
+ {
251
+ "gray": "/workspace/ltx_windows/w31.mp4",
252
+ "keyframe": "/workspace/q_kf/ref_002545.png",
253
+ "kf_pos": 34,
254
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
255
+ "out": "/workspace/ltx_co_out/w31.mp4",
256
+ "cut_at_start": false
257
+ },
258
+ {
259
+ "gray": "/workspace/ltx_windows/w32.mp4",
260
+ "keyframe": "/workspace/q_kf/ref_002620.png",
261
+ "kf_pos": 28,
262
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
263
+ "out": "/workspace/ltx_co_out/w32.mp4",
264
+ "cut_at_start": false
265
+ },
266
+ {
267
+ "gray": "/workspace/ltx_windows/w33.mp4",
268
+ "keyframe": "/workspace/q_kf/ref_002716.png",
269
+ "kf_pos": 43,
270
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
271
+ "out": "/workspace/ltx_co_out/w33.mp4",
272
+ "cut_at_start": false
273
+ },
274
+ {
275
+ "gray": "/workspace/ltx_windows/w34.mp4",
276
+ "keyframe": "/workspace/q_kf/ref_002791.png",
277
+ "kf_pos": 37,
278
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
279
+ "out": "/workspace/ltx_co_out/w34.mp4",
280
+ "cut_at_start": false
281
+ },
282
+ {
283
+ "gray": "/workspace/ltx_windows/w35.mp4",
284
+ "keyframe": "/workspace/q_kf/ref_002866.png",
285
+ "kf_pos": 31,
286
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
287
+ "out": "/workspace/ltx_co_out/w35.mp4",
288
+ "cut_at_start": false
289
+ },
290
+ {
291
+ "gray": "/workspace/ltx_windows/w36.mp4",
292
+ "keyframe": "/workspace/q_kf/ref_002941.png",
293
+ "kf_pos": 25,
294
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
295
+ "out": "/workspace/ltx_co_out/w36.mp4",
296
+ "cut_at_start": false
297
+ },
298
+ {
299
+ "gray": "/workspace/ltx_windows/w37.mp4",
300
+ "keyframe": "/workspace/q_kf/ref_003000.png",
301
+ "kf_pos": 3,
302
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
303
+ "out": "/workspace/ltx_co_out/w37.mp4",
304
+ "cut_at_start": true
305
+ },
306
+ {
307
+ "gray": "/workspace/ltx_windows/w38.mp4",
308
+ "keyframe": "/workspace/q_kf/ref_003150.png",
309
+ "kf_pos": 72,
310
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
311
+ "out": "/workspace/ltx_co_out/w38.mp4",
312
+ "cut_at_start": false
313
+ },
314
+ {
315
+ "gray": "/workspace/ltx_windows/w39.mp4",
316
+ "keyframe": "/workspace/q_kf/ref_003185.png",
317
+ "kf_pos": 26,
318
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
319
+ "out": "/workspace/ltx_co_out/w39.mp4",
320
+ "cut_at_start": false
321
+ },
322
+ {
323
+ "gray": "/workspace/ltx_windows/w40.mp4",
324
+ "keyframe": "/workspace/q_kf/ref_003260.png",
325
+ "kf_pos": 20,
326
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
327
+ "out": "/workspace/ltx_co_out/w40.mp4",
328
+ "cut_at_start": false
329
+ },
330
+ {
331
+ "gray": "/workspace/ltx_windows/w41.mp4",
332
+ "keyframe": "/workspace/q_kf/ref_003335.png",
333
+ "kf_pos": 14,
334
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
335
+ "out": "/workspace/ltx_co_out/w41.mp4",
336
+ "cut_at_start": false
337
+ },
338
+ {
339
+ "gray": "/workspace/ltx_windows/w42.mp4",
340
+ "keyframe": "/workspace/q_kf/ref_003448.png",
341
+ "kf_pos": 46,
342
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
343
+ "out": "/workspace/ltx_co_out/w42.mp4",
344
+ "cut_at_start": false
345
+ },
346
+ {
347
+ "gray": "/workspace/ltx_windows/w43.mp4",
348
+ "keyframe": "/workspace/q_kf/ref_003523.png",
349
+ "kf_pos": 40,
350
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
351
+ "out": "/workspace/ltx_co_out/w43.mp4",
352
+ "cut_at_start": false
353
+ },
354
+ {
355
+ "gray": "/workspace/ltx_windows/w44.mp4",
356
+ "keyframe": "/workspace/q_kf/ref_003616.png",
357
+ "kf_pos": 52,
358
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
359
+ "out": "/workspace/ltx_co_out/w44.mp4",
360
+ "cut_at_start": false
361
+ },
362
+ {
363
+ "gray": "/workspace/ltx_windows/w45.mp4",
364
+ "keyframe": "/workspace/q_kf/ref_003691.png",
365
+ "kf_pos": 46,
366
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
367
+ "out": "/workspace/ltx_co_out/w45.mp4",
368
+ "cut_at_start": false
369
+ },
370
+ {
371
+ "gray": "/workspace/ltx_windows/w46.mp4",
372
+ "keyframe": "/workspace/q_kf/ref_003795.png",
373
+ "kf_pos": 69,
374
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
375
+ "out": "/workspace/ltx_co_out/w46.mp4",
376
+ "cut_at_start": false
377
+ },
378
+ {
379
+ "gray": "/workspace/ltx_windows/w47.mp4",
380
+ "keyframe": "/workspace/q_kf/ref_003870.png",
381
+ "kf_pos": 63,
382
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
383
+ "out": "/workspace/ltx_co_out/w47.mp4",
384
+ "cut_at_start": false
385
+ },
386
+ {
387
+ "gray": "/workspace/ltx_windows/w48.mp4",
388
+ "keyframe": "/workspace/q_kf/ref_003945.png",
389
+ "kf_pos": 57,
390
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
391
+ "out": "/workspace/ltx_co_out/w48.mp4",
392
+ "cut_at_start": false
393
+ },
394
+ {
395
+ "gray": "/workspace/ltx_windows/w49.mp4",
396
+ "keyframe": "/workspace/q_kf/ref_004020.png",
397
+ "kf_pos": 51,
398
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
399
+ "out": "/workspace/ltx_co_out/w49.mp4",
400
+ "cut_at_start": false
401
+ },
402
+ {
403
+ "gray": "/workspace/ltx_windows/w50.mp4",
404
+ "keyframe": "/workspace/q_kf/ref_004102.png",
405
+ "kf_pos": 52,
406
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
407
+ "out": "/workspace/ltx_co_out/w50.mp4",
408
+ "cut_at_start": false
409
+ },
410
+ {
411
+ "gray": "/workspace/ltx_windows/w51.mp4",
412
+ "keyframe": "/workspace/q_kf/ref_004141.png",
413
+ "kf_pos": 10,
414
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
415
+ "out": "/workspace/ltx_co_out/w51.mp4",
416
+ "cut_at_start": false
417
+ },
418
+ {
419
+ "gray": "/workspace/ltx_windows/w52.mp4",
420
+ "keyframe": "/workspace/q_kf/ref_004216.png",
421
+ "kf_pos": 4,
422
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
423
+ "out": "/workspace/ltx_co_out/w52.mp4",
424
+ "cut_at_start": false
425
+ },
426
+ {
427
+ "gray": "/workspace/ltx_windows/w53.mp4",
428
+ "keyframe": "/workspace/q_kf/ref_004320.png",
429
+ "kf_pos": 27,
430
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
431
+ "out": "/workspace/ltx_co_out/w53.mp4",
432
+ "cut_at_start": false
433
+ },
434
+ {
435
+ "gray": "/workspace/ltx_windows/w54.mp4",
436
+ "keyframe": "/workspace/q_kf/ref_004395.png",
437
+ "kf_pos": 21,
438
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
439
+ "out": "/workspace/ltx_co_out/w54.mp4",
440
+ "cut_at_start": false
441
+ },
442
+ {
443
+ "gray": "/workspace/ltx_windows/w55.mp4",
444
+ "keyframe": "/workspace/q_kf/ref_004470.png",
445
+ "kf_pos": 15,
446
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
447
+ "out": "/workspace/ltx_co_out/w55.mp4",
448
+ "cut_at_start": false
449
+ },
450
+ {
451
+ "gray": "/workspace/ltx_windows/w56.mp4",
452
+ "keyframe": "/workspace/q_kf/ref_004545.png",
453
+ "kf_pos": 9,
454
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
455
+ "out": "/workspace/ltx_co_out/w56.mp4",
456
+ "cut_at_start": false
457
+ },
458
+ {
459
+ "gray": "/workspace/ltx_windows/w57.mp4",
460
+ "keyframe": "/workspace/q_kf/ref_004620.png",
461
+ "kf_pos": 3,
462
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
463
+ "out": "/workspace/ltx_co_out/w57.mp4",
464
+ "cut_at_start": false
465
+ },
466
+ {
467
+ "gray": "/workspace/ltx_windows/w58.mp4",
468
+ "keyframe": "/workspace/q_kf/ref_004770.png",
469
+ "kf_pos": 72,
470
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
471
+ "out": "/workspace/ltx_co_out/w58.mp4",
472
+ "cut_at_start": false
473
+ },
474
+ {
475
+ "gray": "/workspace/ltx_windows/w59.mp4",
476
+ "keyframe": "/workspace/q_kf/ref_004845.png",
477
+ "kf_pos": 66,
478
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
479
+ "out": "/workspace/ltx_co_out/w59.mp4",
480
+ "cut_at_start": false
481
+ },
482
+ {
483
+ "gray": "/workspace/ltx_windows/w60.mp4",
484
+ "keyframe": "/workspace/q_kf/ref_004920.png",
485
+ "kf_pos": 60,
486
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
487
+ "out": "/workspace/ltx_co_out/w60.mp4",
488
+ "cut_at_start": false
489
+ },
490
+ {
491
+ "gray": "/workspace/ltx_windows/w61.mp4",
492
+ "keyframe": "/workspace/q_kf/ref_004995.png",
493
+ "kf_pos": 54,
494
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
495
+ "out": "/workspace/ltx_co_out/w61.mp4",
496
+ "cut_at_start": false
497
+ },
498
+ {
499
+ "gray": "/workspace/ltx_windows/w62.mp4",
500
+ "keyframe": "/workspace/q_kf/ref_005070.png",
501
+ "kf_pos": 48,
502
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
503
+ "out": "/workspace/ltx_co_out/w62.mp4",
504
+ "cut_at_start": false
505
+ },
506
+ {
507
+ "gray": "/workspace/ltx_windows/w63.mp4",
508
+ "keyframe": "/workspace/q_kf/ref_005145.png",
509
+ "kf_pos": 42,
510
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
511
+ "out": "/workspace/ltx_co_out/w63.mp4",
512
+ "cut_at_start": false
513
+ },
514
+ {
515
+ "gray": "/workspace/ltx_windows/w64.mp4",
516
+ "keyframe": "/workspace/q_kf/ref_005220.png",
517
+ "kf_pos": 36,
518
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
519
+ "out": "/workspace/ltx_co_out/w64.mp4",
520
+ "cut_at_start": false
521
+ },
522
+ {
523
+ "gray": "/workspace/ltx_windows/w65.mp4",
524
+ "keyframe": "/workspace/q_kf/ref_005295.png",
525
+ "kf_pos": 30,
526
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
527
+ "out": "/workspace/ltx_co_out/w65.mp4",
528
+ "cut_at_start": false
529
+ },
530
+ {
531
+ "gray": "/workspace/ltx_windows/w66.mp4",
532
+ "keyframe": "/workspace/q_kf/ref_005370.png",
533
+ "kf_pos": 24,
534
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
535
+ "out": "/workspace/ltx_co_out/w66.mp4",
536
+ "cut_at_start": false
537
+ }
538
+ ]
ltx_co_manifest_recolored.json ADDED
@@ -0,0 +1 @@
 
 
1
+ [{"gray": "/workspace/ltx_windows/w0.mp4", "keyframe": "/workspace/q_kf_recolored/ref_000000.png", "kf_pos": 0, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w0.mp4", "cut_at_start": true}, {"gray": "/workspace/ltx_windows/w1.mp4", "keyframe": "/workspace/q_kf_recolored/ref_000150.png", "kf_pos": 69, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w1.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w2.mp4", "keyframe": "/workspace/q_kf_recolored/ref_000225.png", "kf_pos": 63, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w2.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w3.mp4", "keyframe": "/workspace/q_kf_recolored/ref_000300.png", "kf_pos": 57, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w3.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w4.mp4", "keyframe": "/workspace/q_kf_recolored/ref_000375.png", "kf_pos": 51, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w4.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w5.mp4", "keyframe": "/workspace/q_kf_recolored/ref_000450.png", "kf_pos": 45, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w5.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w6.mp4", "keyframe": "/workspace/q_kf_recolored/ref_000525.png", "kf_pos": 39, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w6.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w7.mp4", "keyframe": "/workspace/q_kf_recolored/ref_000600.png", "kf_pos": 33, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w7.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w8.mp4", "keyframe": "/workspace/q_kf_recolored/ref_000698.png", "kf_pos": 50, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w8.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w9.mp4", "keyframe": "/workspace/q_kf_recolored/ref_000743.png", "kf_pos": 14, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w9.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w10.mp4", "keyframe": "/workspace/q_kf_recolored/ref_000818.png", "kf_pos": 8, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w10.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w11.mp4", "keyframe": "/workspace/q_kf_recolored/ref_000893.png", "kf_pos": 2, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w11.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w12.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001043.png", "kf_pos": 71, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w12.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w13.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001118.png", "kf_pos": 65, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w13.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w14.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001193.png", "kf_pos": 59, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w14.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w15.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001268.png", "kf_pos": 53, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w15.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w16.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001343.png", "kf_pos": 47, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w16.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w17.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001418.png", "kf_pos": 41, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w17.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w18.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001493.png", "kf_pos": 35, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w18.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w19.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001568.png", "kf_pos": 29, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w19.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w20.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001643.png", "kf_pos": 23, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w20.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w21.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001734.png", "kf_pos": 33, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w21.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w22.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001809.png", "kf_pos": 27, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w22.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w23.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001870.png", "kf_pos": 7, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w23.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w24.mp4", "keyframe": "/workspace/q_kf_recolored/ref_001945.png", "kf_pos": 1, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w24.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w25.mp4", "keyframe": "/workspace/q_kf_recolored/ref_002095.png", "kf_pos": 70, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w25.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w26.mp4", "keyframe": "/workspace/q_kf_recolored/ref_002170.png", "kf_pos": 64, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w26.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w27.mp4", "keyframe": "/workspace/q_kf_recolored/ref_002245.png", "kf_pos": 58, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w27.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w28.mp4", "keyframe": "/workspace/q_kf_recolored/ref_002320.png", "kf_pos": 52, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w28.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w29.mp4", "keyframe": "/workspace/q_kf_recolored/ref_002395.png", "kf_pos": 46, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w29.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w30.mp4", "keyframe": "/workspace/q_kf_recolored/ref_002470.png", "kf_pos": 40, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w30.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w31.mp4", "keyframe": "/workspace/q_kf_recolored/ref_002545.png", "kf_pos": 34, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w31.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w32.mp4", "keyframe": "/workspace/q_kf_recolored/ref_002620.png", "kf_pos": 28, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w32.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w33.mp4", "keyframe": "/workspace/q_kf_recolored/ref_002716.png", "kf_pos": 43, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w33.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w34.mp4", "keyframe": "/workspace/q_kf_recolored/ref_002791.png", "kf_pos": 37, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w34.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w35.mp4", "keyframe": "/workspace/q_kf_recolored/ref_002866.png", "kf_pos": 31, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w35.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w36.mp4", "keyframe": "/workspace/q_kf_recolored/ref_002941.png", "kf_pos": 25, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w36.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w37.mp4", "keyframe": "/workspace/q_kf_recolored/ref_003000.png", "kf_pos": 3, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w37.mp4", "cut_at_start": true}, {"gray": "/workspace/ltx_windows/w38.mp4", "keyframe": "/workspace/q_kf_recolored/ref_003150.png", "kf_pos": 72, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w38.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w39.mp4", "keyframe": "/workspace/q_kf_recolored/ref_003185.png", "kf_pos": 26, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w39.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w40.mp4", "keyframe": "/workspace/q_kf_recolored/ref_003260.png", "kf_pos": 20, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w40.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w41.mp4", "keyframe": "/workspace/q_kf_recolored/ref_003335.png", "kf_pos": 14, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w41.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w42.mp4", "keyframe": "/workspace/q_kf_recolored/ref_003448.png", "kf_pos": 46, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w42.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w43.mp4", "keyframe": "/workspace/q_kf_recolored/ref_003523.png", "kf_pos": 40, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w43.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w44.mp4", "keyframe": "/workspace/q_kf_recolored/ref_003616.png", "kf_pos": 52, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w44.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w45.mp4", "keyframe": "/workspace/q_kf_recolored/ref_003691.png", "kf_pos": 46, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w45.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w46.mp4", "keyframe": "/workspace/q_kf_recolored/ref_003795.png", "kf_pos": 69, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w46.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w47.mp4", "keyframe": "/workspace/q_kf_recolored/ref_003870.png", "kf_pos": 63, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w47.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w48.mp4", "keyframe": "/workspace/q_kf_recolored/ref_003945.png", "kf_pos": 57, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w48.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w49.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004020.png", "kf_pos": 51, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w49.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w50.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004102.png", "kf_pos": 52, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w50.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w51.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004141.png", "kf_pos": 10, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w51.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w52.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004216.png", "kf_pos": 4, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w52.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w53.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004320.png", "kf_pos": 27, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w53.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w54.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004395.png", "kf_pos": 21, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w54.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w55.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004470.png", "kf_pos": 15, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w55.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w56.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004545.png", "kf_pos": 9, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w56.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w57.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004620.png", "kf_pos": 3, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w57.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w58.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004770.png", "kf_pos": 72, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w58.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w59.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004845.png", "kf_pos": 66, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w59.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w60.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004920.png", "kf_pos": 60, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w60.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w61.mp4", "keyframe": "/workspace/q_kf_recolored/ref_004995.png", "kf_pos": 54, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w61.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w62.mp4", "keyframe": "/workspace/q_kf_recolored/ref_005070.png", "kf_pos": 48, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w62.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w63.mp4", "keyframe": "/workspace/q_kf_recolored/ref_005145.png", "kf_pos": 42, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w63.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w64.mp4", "keyframe": "/workspace/q_kf_recolored/ref_005220.png", "kf_pos": 36, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w64.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w65.mp4", "keyframe": "/workspace/q_kf_recolored/ref_005295.png", "kf_pos": 30, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w65.mp4", "cut_at_start": false}, {"gray": "/workspace/ltx_windows/w66.mp4", "keyframe": "/workspace/q_kf_recolored/ref_005370.png", "kf_pos": 24, "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.", "out": "/workspace/ltx_co_out/w66.mp4", "cut_at_start": false}]
ltx_co_manifest_v2.json ADDED
@@ -0,0 +1,654 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "gray": "/workspace/ltx_windows/w0.mp4",
4
+ "keyframe": "/workspace/q_kf_recolored/ref_000000.png",
5
+ "kf_pos": 0,
6
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
7
+ "out": "/workspace/ltx_co_out/w0.mp4",
8
+ "cut_at_start": true,
9
+ "scene_id": 0
10
+ },
11
+ {
12
+ "gray": "/workspace/ltx_windows/w1.mp4",
13
+ "keyframe": "/workspace/q_kf_recolored/ref_000150.png",
14
+ "kf_pos": 69,
15
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
16
+ "out": "/workspace/ltx_co_out/w1.mp4",
17
+ "cut_at_start": false,
18
+ "scene_id": 0
19
+ },
20
+ {
21
+ "gray": "/workspace/ltx_windows/w2.mp4",
22
+ "keyframe": "/workspace/q_kf_recolored/ref_000225.png",
23
+ "kf_pos": 63,
24
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
25
+ "out": "/workspace/ltx_co_out/w2.mp4",
26
+ "cut_at_start": false,
27
+ "scene_id": 0
28
+ },
29
+ {
30
+ "gray": "/workspace/ltx_windows/w3.mp4",
31
+ "keyframe": "/workspace/q_kf_recolored/ref_000300.png",
32
+ "kf_pos": 57,
33
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
34
+ "out": "/workspace/ltx_co_out/w3.mp4",
35
+ "cut_at_start": false,
36
+ "scene_id": 0
37
+ },
38
+ {
39
+ "gray": "/workspace/ltx_windows/w4.mp4",
40
+ "keyframe": "/workspace/q_kf_recolored/ref_000375.png",
41
+ "kf_pos": 51,
42
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
43
+ "out": "/workspace/ltx_co_out/w4.mp4",
44
+ "cut_at_start": false,
45
+ "scene_id": 0
46
+ },
47
+ {
48
+ "gray": "/workspace/ltx_windows/w5.mp4",
49
+ "keyframe": "/workspace/q_kf_recolored/ref_000450.png",
50
+ "kf_pos": 45,
51
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
52
+ "out": "/workspace/ltx_co_out/w5.mp4",
53
+ "cut_at_start": false,
54
+ "scene_id": 0
55
+ },
56
+ {
57
+ "gray": "/workspace/ltx_windows/w6.mp4",
58
+ "keyframe": "/workspace/q_kf_recolored/ref_000525.png",
59
+ "kf_pos": 39,
60
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
61
+ "out": "/workspace/ltx_co_out/w6.mp4",
62
+ "cut_at_start": false,
63
+ "scene_id": 0
64
+ },
65
+ {
66
+ "gray": "/workspace/ltx_windows/w7.mp4",
67
+ "keyframe": "/workspace/q_kf_recolored/ref_000600.png",
68
+ "kf_pos": 33,
69
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
70
+ "out": "/workspace/ltx_co_out/w7.mp4",
71
+ "cut_at_start": false,
72
+ "extra_anchors": [
73
+ {
74
+ "path": "/workspace/q_kf_recolored/ref_000623.png",
75
+ "pos": 58,
76
+ "weight": 0.95
77
+ }
78
+ ],
79
+ "scene_id": 0
80
+ },
81
+ {
82
+ "gray": "/workspace/ltx_windows/w8.mp4",
83
+ "keyframe": "/workspace/q_kf_recolored/ref_000698.png",
84
+ "kf_pos": 50,
85
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
86
+ "out": "/workspace/ltx_co_out/w8.mp4",
87
+ "cut_at_start": false,
88
+ "scene_id": 0
89
+ },
90
+ {
91
+ "gray": "/workspace/ltx_windows/w9.mp4",
92
+ "keyframe": "/workspace/q_kf_recolored/ref_000743.png",
93
+ "kf_pos": 14,
94
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
95
+ "out": "/workspace/ltx_co_out/w9.mp4",
96
+ "cut_at_start": true,
97
+ "scene_id": 1
98
+ },
99
+ {
100
+ "gray": "/workspace/ltx_windows/w10.mp4",
101
+ "keyframe": "/workspace/q_kf_recolored/ref_000818.png",
102
+ "kf_pos": 8,
103
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
104
+ "out": "/workspace/ltx_co_out/w10.mp4",
105
+ "cut_at_start": false,
106
+ "scene_id": 1
107
+ },
108
+ {
109
+ "gray": "/workspace/ltx_windows/w11.mp4",
110
+ "keyframe": "/workspace/q_kf_recolored/ref_000893.png",
111
+ "kf_pos": 2,
112
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
113
+ "out": "/workspace/ltx_co_out/w11.mp4",
114
+ "cut_at_start": false,
115
+ "scene_id": 1
116
+ },
117
+ {
118
+ "gray": "/workspace/ltx_windows/w12.mp4",
119
+ "keyframe": "/workspace/q_kf_recolored/ref_001043.png",
120
+ "kf_pos": 71,
121
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
122
+ "out": "/workspace/ltx_co_out/w12.mp4",
123
+ "cut_at_start": false,
124
+ "scene_id": 1
125
+ },
126
+ {
127
+ "gray": "/workspace/ltx_windows/w13.mp4",
128
+ "keyframe": "/workspace/q_kf_recolored/ref_001118.png",
129
+ "kf_pos": 65,
130
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
131
+ "out": "/workspace/ltx_co_out/w13.mp4",
132
+ "cut_at_start": false,
133
+ "scene_id": 1
134
+ },
135
+ {
136
+ "gray": "/workspace/ltx_windows/w14.mp4",
137
+ "keyframe": "/workspace/q_kf_recolored/ref_001193.png",
138
+ "kf_pos": 59,
139
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
140
+ "out": "/workspace/ltx_co_out/w14.mp4",
141
+ "cut_at_start": false,
142
+ "scene_id": 1
143
+ },
144
+ {
145
+ "gray": "/workspace/ltx_windows/w15.mp4",
146
+ "keyframe": "/workspace/q_kf_recolored/ref_001268.png",
147
+ "kf_pos": 53,
148
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
149
+ "out": "/workspace/ltx_co_out/w15.mp4",
150
+ "cut_at_start": false,
151
+ "scene_id": 1
152
+ },
153
+ {
154
+ "gray": "/workspace/ltx_windows/w16.mp4",
155
+ "keyframe": "/workspace/q_kf_recolored/ref_001343.png",
156
+ "kf_pos": 47,
157
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
158
+ "out": "/workspace/ltx_co_out/w16.mp4",
159
+ "cut_at_start": false,
160
+ "scene_id": 1
161
+ },
162
+ {
163
+ "gray": "/workspace/ltx_windows/w17.mp4",
164
+ "keyframe": "/workspace/q_kf_recolored/ref_001418.png",
165
+ "kf_pos": 41,
166
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
167
+ "out": "/workspace/ltx_co_out/w17.mp4",
168
+ "cut_at_start": false,
169
+ "scene_id": 1
170
+ },
171
+ {
172
+ "gray": "/workspace/ltx_windows/w18.mp4",
173
+ "keyframe": "/workspace/q_kf_recolored/ref_001493.png",
174
+ "kf_pos": 35,
175
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
176
+ "out": "/workspace/ltx_co_out/w18.mp4",
177
+ "cut_at_start": false,
178
+ "scene_id": 1
179
+ },
180
+ {
181
+ "gray": "/workspace/ltx_windows/w19.mp4",
182
+ "keyframe": "/workspace/q_kf_recolored/ref_001568.png",
183
+ "kf_pos": 29,
184
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
185
+ "out": "/workspace/ltx_co_out/w19.mp4",
186
+ "cut_at_start": false,
187
+ "scene_id": 1
188
+ },
189
+ {
190
+ "gray": "/workspace/ltx_windows/w20.mp4",
191
+ "keyframe": "/workspace/q_kf_recolored/ref_001643.png",
192
+ "kf_pos": 23,
193
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
194
+ "out": "/workspace/ltx_co_out/w20.mp4",
195
+ "cut_at_start": false,
196
+ "extra_anchors": [
197
+ {
198
+ "path": "/workspace/q_kf_recolored/ref_001659.png",
199
+ "pos": 41,
200
+ "weight": 0.95
201
+ }
202
+ ],
203
+ "scene_id": 1
204
+ },
205
+ {
206
+ "gray": "/workspace/ltx_windows/w21.mp4",
207
+ "keyframe": "/workspace/q_kf_recolored/ref_001734.png",
208
+ "kf_pos": 33,
209
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
210
+ "out": "/workspace/ltx_co_out/w21.mp4",
211
+ "cut_at_start": false,
212
+ "scene_id": 1
213
+ },
214
+ {
215
+ "gray": "/workspace/ltx_windows/w22.mp4",
216
+ "keyframe": "/workspace/q_kf_recolored/ref_001809.png",
217
+ "kf_pos": 27,
218
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
219
+ "out": "/workspace/ltx_co_out/w22.mp4",
220
+ "cut_at_start": false,
221
+ "scene_id": 1
222
+ },
223
+ {
224
+ "gray": "/workspace/ltx_windows/w23.mp4",
225
+ "keyframe": "/workspace/q_kf_recolored/ref_001870.png",
226
+ "kf_pos": 7,
227
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
228
+ "out": "/workspace/ltx_co_out/w23.mp4",
229
+ "cut_at_start": true,
230
+ "scene_id": 2
231
+ },
232
+ {
233
+ "gray": "/workspace/ltx_windows/w24.mp4",
234
+ "keyframe": "/workspace/q_kf_recolored/ref_001945.png",
235
+ "kf_pos": 1,
236
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
237
+ "out": "/workspace/ltx_co_out/w24.mp4",
238
+ "cut_at_start": false,
239
+ "scene_id": 2
240
+ },
241
+ {
242
+ "gray": "/workspace/ltx_windows/w25.mp4",
243
+ "keyframe": "/workspace/q_kf_recolored/ref_002095.png",
244
+ "kf_pos": 70,
245
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
246
+ "out": "/workspace/ltx_co_out/w25.mp4",
247
+ "cut_at_start": false,
248
+ "scene_id": 2
249
+ },
250
+ {
251
+ "gray": "/workspace/ltx_windows/w26.mp4",
252
+ "keyframe": "/workspace/q_kf_recolored/ref_002170.png",
253
+ "kf_pos": 64,
254
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
255
+ "out": "/workspace/ltx_co_out/w26.mp4",
256
+ "cut_at_start": false,
257
+ "scene_id": 2
258
+ },
259
+ {
260
+ "gray": "/workspace/ltx_windows/w27.mp4",
261
+ "keyframe": "/workspace/q_kf_recolored/ref_002245.png",
262
+ "kf_pos": 58,
263
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
264
+ "out": "/workspace/ltx_co_out/w27.mp4",
265
+ "cut_at_start": false,
266
+ "scene_id": 2
267
+ },
268
+ {
269
+ "gray": "/workspace/ltx_windows/w28.mp4",
270
+ "keyframe": "/workspace/q_kf_recolored/ref_002320.png",
271
+ "kf_pos": 52,
272
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
273
+ "out": "/workspace/ltx_co_out/w28.mp4",
274
+ "cut_at_start": false,
275
+ "scene_id": 2
276
+ },
277
+ {
278
+ "gray": "/workspace/ltx_windows/w29.mp4",
279
+ "keyframe": "/workspace/q_kf_recolored/ref_002395.png",
280
+ "kf_pos": 46,
281
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
282
+ "out": "/workspace/ltx_co_out/w29.mp4",
283
+ "cut_at_start": false,
284
+ "scene_id": 2
285
+ },
286
+ {
287
+ "gray": "/workspace/ltx_windows/w30.mp4",
288
+ "keyframe": "/workspace/q_kf_recolored/ref_002470.png",
289
+ "kf_pos": 40,
290
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
291
+ "out": "/workspace/ltx_co_out/w30.mp4",
292
+ "cut_at_start": false,
293
+ "scene_id": 2
294
+ },
295
+ {
296
+ "gray": "/workspace/ltx_windows/w31.mp4",
297
+ "keyframe": "/workspace/q_kf_recolored/ref_002545.png",
298
+ "kf_pos": 34,
299
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
300
+ "out": "/workspace/ltx_co_out/w31.mp4",
301
+ "cut_at_start": false,
302
+ "scene_id": 2
303
+ },
304
+ {
305
+ "gray": "/workspace/ltx_windows/w32.mp4",
306
+ "keyframe": "/workspace/q_kf_recolored/ref_002620.png",
307
+ "kf_pos": 28,
308
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
309
+ "out": "/workspace/ltx_co_out/w32.mp4",
310
+ "cut_at_start": false,
311
+ "extra_anchors": [
312
+ {
313
+ "path": "/workspace/q_kf_recolored/ref_002641.png",
314
+ "pos": 51,
315
+ "weight": 0.95
316
+ }
317
+ ],
318
+ "scene_id": 2
319
+ },
320
+ {
321
+ "gray": "/workspace/ltx_windows/w33.mp4",
322
+ "keyframe": "/workspace/q_kf_recolored/ref_002716.png",
323
+ "kf_pos": 43,
324
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
325
+ "out": "/workspace/ltx_co_out/w33.mp4",
326
+ "cut_at_start": false,
327
+ "scene_id": 2
328
+ },
329
+ {
330
+ "gray": "/workspace/ltx_windows/w34.mp4",
331
+ "keyframe": "/workspace/q_kf_recolored/ref_002791.png",
332
+ "kf_pos": 37,
333
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
334
+ "out": "/workspace/ltx_co_out/w34.mp4",
335
+ "cut_at_start": false,
336
+ "scene_id": 2
337
+ },
338
+ {
339
+ "gray": "/workspace/ltx_windows/w35.mp4",
340
+ "keyframe": "/workspace/q_kf_recolored/ref_002866.png",
341
+ "kf_pos": 31,
342
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
343
+ "out": "/workspace/ltx_co_out/w35.mp4",
344
+ "cut_at_start": false,
345
+ "scene_id": 2
346
+ },
347
+ {
348
+ "gray": "/workspace/ltx_windows/w36.mp4",
349
+ "keyframe": "/workspace/q_kf_recolored/ref_002941.png",
350
+ "kf_pos": 25,
351
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
352
+ "out": "/workspace/ltx_co_out/w36.mp4",
353
+ "cut_at_start": false,
354
+ "scene_id": 2
355
+ },
356
+ {
357
+ "gray": "/workspace/ltx_windows/w37.mp4",
358
+ "keyframe": "/workspace/q_kf_recolored/ref_003000.png",
359
+ "kf_pos": 3,
360
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
361
+ "out": "/workspace/ltx_co_out/w37.mp4",
362
+ "cut_at_start": true,
363
+ "scene_id": 3
364
+ },
365
+ {
366
+ "gray": "/workspace/ltx_windows/w38.mp4",
367
+ "keyframe": "/workspace/q_kf_recolored/ref_003150.png",
368
+ "kf_pos": 72,
369
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
370
+ "out": "/workspace/ltx_co_out/w38.mp4",
371
+ "cut_at_start": false,
372
+ "scene_id": 3
373
+ },
374
+ {
375
+ "gray": "/workspace/ltx_windows/w39.mp4",
376
+ "keyframe": "/workspace/q_kf_recolored/ref_003185.png",
377
+ "kf_pos": 26,
378
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
379
+ "out": "/workspace/ltx_co_out/w39.mp4",
380
+ "cut_at_start": false,
381
+ "scene_id": 3
382
+ },
383
+ {
384
+ "gray": "/workspace/ltx_windows/w40.mp4",
385
+ "keyframe": "/workspace/q_kf_recolored/ref_003260.png",
386
+ "kf_pos": 20,
387
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
388
+ "out": "/workspace/ltx_co_out/w40.mp4",
389
+ "cut_at_start": false,
390
+ "scene_id": 3
391
+ },
392
+ {
393
+ "gray": "/workspace/ltx_windows/w41.mp4",
394
+ "keyframe": "/workspace/q_kf_recolored/ref_003335.png",
395
+ "kf_pos": 14,
396
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
397
+ "out": "/workspace/ltx_co_out/w41.mp4",
398
+ "cut_at_start": false,
399
+ "extra_anchors": [
400
+ {
401
+ "path": "/workspace/q_kf_recolored/ref_003373.png",
402
+ "pos": 54,
403
+ "weight": 0.95
404
+ }
405
+ ],
406
+ "scene_id": 3
407
+ },
408
+ {
409
+ "gray": "/workspace/ltx_windows/w42.mp4",
410
+ "keyframe": "/workspace/q_kf_recolored/ref_003448.png",
411
+ "kf_pos": 46,
412
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
413
+ "out": "/workspace/ltx_co_out/w42.mp4",
414
+ "cut_at_start": false,
415
+ "scene_id": 3
416
+ },
417
+ {
418
+ "gray": "/workspace/ltx_windows/w43.mp4",
419
+ "keyframe": "/workspace/q_kf_recolored/ref_003523.png",
420
+ "kf_pos": 40,
421
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
422
+ "out": "/workspace/ltx_co_out/w43.mp4",
423
+ "cut_at_start": false,
424
+ "extra_anchors": [
425
+ {
426
+ "path": "/workspace/q_kf_recolored/ref_003541.png",
427
+ "pos": 60,
428
+ "weight": 0.95
429
+ }
430
+ ],
431
+ "scene_id": 3
432
+ },
433
+ {
434
+ "gray": "/workspace/ltx_windows/w44.mp4",
435
+ "keyframe": "/workspace/q_kf_recolored/ref_003616.png",
436
+ "kf_pos": 52,
437
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
438
+ "out": "/workspace/ltx_co_out/w44.mp4",
439
+ "cut_at_start": false,
440
+ "scene_id": 3
441
+ },
442
+ {
443
+ "gray": "/workspace/ltx_windows/w45.mp4",
444
+ "keyframe": "/workspace/q_kf_recolored/ref_003691.png",
445
+ "kf_pos": 46,
446
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
447
+ "out": "/workspace/ltx_co_out/w45.mp4",
448
+ "cut_at_start": false,
449
+ "scene_id": 3
450
+ },
451
+ {
452
+ "gray": "/workspace/ltx_windows/w46.mp4",
453
+ "keyframe": "/workspace/q_kf_recolored/ref_003795.png",
454
+ "kf_pos": 69,
455
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
456
+ "out": "/workspace/ltx_co_out/w46.mp4",
457
+ "cut_at_start": false,
458
+ "scene_id": 3
459
+ },
460
+ {
461
+ "gray": "/workspace/ltx_windows/w47.mp4",
462
+ "keyframe": "/workspace/q_kf_recolored/ref_003870.png",
463
+ "kf_pos": 63,
464
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
465
+ "out": "/workspace/ltx_co_out/w47.mp4",
466
+ "cut_at_start": false,
467
+ "scene_id": 3
468
+ },
469
+ {
470
+ "gray": "/workspace/ltx_windows/w48.mp4",
471
+ "keyframe": "/workspace/q_kf_recolored/ref_003945.png",
472
+ "kf_pos": 57,
473
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
474
+ "out": "/workspace/ltx_co_out/w48.mp4",
475
+ "cut_at_start": false,
476
+ "scene_id": 3
477
+ },
478
+ {
479
+ "gray": "/workspace/ltx_windows/w49.mp4",
480
+ "keyframe": "/workspace/q_kf_recolored/ref_004020.png",
481
+ "kf_pos": 51,
482
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
483
+ "out": "/workspace/ltx_co_out/w49.mp4",
484
+ "cut_at_start": false,
485
+ "extra_anchors": [
486
+ {
487
+ "path": "/workspace/q_kf_recolored/ref_004027.png",
488
+ "pos": 60,
489
+ "weight": 0.95
490
+ }
491
+ ],
492
+ "scene_id": 3
493
+ },
494
+ {
495
+ "gray": "/workspace/ltx_windows/w50.mp4",
496
+ "keyframe": "/workspace/q_kf_recolored/ref_004102.png",
497
+ "kf_pos": 32,
498
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
499
+ "out": "/workspace/ltx_co_out/w50.mp4",
500
+ "cut_at_start": false,
501
+ "scene_id": 3
502
+ },
503
+ {
504
+ "gray": "/workspace/ltx_windows/w51.mp4",
505
+ "keyframe": "/workspace/q_kf_recolored/ref_004141.png",
506
+ "kf_pos": 10,
507
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
508
+ "out": "/workspace/ltx_co_out/w51.mp4",
509
+ "cut_at_start": true,
510
+ "scene_id": 4
511
+ },
512
+ {
513
+ "gray": "/workspace/ltx_windows/w52.mp4",
514
+ "keyframe": "/workspace/q_kf_recolored/ref_004216.png",
515
+ "kf_pos": 4,
516
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
517
+ "out": "/workspace/ltx_co_out/w52.mp4",
518
+ "cut_at_start": false,
519
+ "scene_id": 4
520
+ },
521
+ {
522
+ "gray": "/workspace/ltx_windows/w53.mp4",
523
+ "keyframe": "/workspace/q_kf_recolored/ref_004320.png",
524
+ "kf_pos": 27,
525
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
526
+ "out": "/workspace/ltx_co_out/w53.mp4",
527
+ "cut_at_start": false,
528
+ "scene_id": 4
529
+ },
530
+ {
531
+ "gray": "/workspace/ltx_windows/w54.mp4",
532
+ "keyframe": "/workspace/q_kf_recolored/ref_004395.png",
533
+ "kf_pos": 21,
534
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
535
+ "out": "/workspace/ltx_co_out/w54.mp4",
536
+ "cut_at_start": false,
537
+ "scene_id": 4
538
+ },
539
+ {
540
+ "gray": "/workspace/ltx_windows/w55.mp4",
541
+ "keyframe": "/workspace/q_kf_recolored/ref_004470.png",
542
+ "kf_pos": 15,
543
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
544
+ "out": "/workspace/ltx_co_out/w55.mp4",
545
+ "cut_at_start": false,
546
+ "scene_id": 4
547
+ },
548
+ {
549
+ "gray": "/workspace/ltx_windows/w56.mp4",
550
+ "keyframe": "/workspace/q_kf_recolored/ref_004545.png",
551
+ "kf_pos": 9,
552
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
553
+ "out": "/workspace/ltx_co_out/w56.mp4",
554
+ "cut_at_start": false,
555
+ "scene_id": 4
556
+ },
557
+ {
558
+ "gray": "/workspace/ltx_windows/w57.mp4",
559
+ "keyframe": "/workspace/q_kf_recolored/ref_004620.png",
560
+ "kf_pos": 3,
561
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
562
+ "out": "/workspace/ltx_co_out/w57.mp4",
563
+ "cut_at_start": false,
564
+ "scene_id": 4
565
+ },
566
+ {
567
+ "gray": "/workspace/ltx_windows/w58.mp4",
568
+ "keyframe": "/workspace/q_kf_recolored/ref_004770.png",
569
+ "kf_pos": 72,
570
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
571
+ "out": "/workspace/ltx_co_out/w58.mp4",
572
+ "cut_at_start": false,
573
+ "scene_id": 4
574
+ },
575
+ {
576
+ "gray": "/workspace/ltx_windows/w59.mp4",
577
+ "keyframe": "/workspace/q_kf_recolored/ref_004845.png",
578
+ "kf_pos": 66,
579
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
580
+ "out": "/workspace/ltx_co_out/w59.mp4",
581
+ "cut_at_start": false,
582
+ "scene_id": 4
583
+ },
584
+ {
585
+ "gray": "/workspace/ltx_windows/w60.mp4",
586
+ "keyframe": "/workspace/q_kf_recolored/ref_004920.png",
587
+ "kf_pos": 60,
588
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
589
+ "out": "/workspace/ltx_co_out/w60.mp4",
590
+ "cut_at_start": false,
591
+ "scene_id": 4
592
+ },
593
+ {
594
+ "gray": "/workspace/ltx_windows/w61.mp4",
595
+ "keyframe": "/workspace/q_kf_recolored/ref_004995.png",
596
+ "kf_pos": 54,
597
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
598
+ "out": "/workspace/ltx_co_out/w61.mp4",
599
+ "cut_at_start": false,
600
+ "scene_id": 4
601
+ },
602
+ {
603
+ "gray": "/workspace/ltx_windows/w62.mp4",
604
+ "keyframe": "/workspace/q_kf_recolored/ref_005070.png",
605
+ "kf_pos": 48,
606
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
607
+ "out": "/workspace/ltx_co_out/w62.mp4",
608
+ "cut_at_start": false,
609
+ "scene_id": 4
610
+ },
611
+ {
612
+ "gray": "/workspace/ltx_windows/w63.mp4",
613
+ "keyframe": "/workspace/q_kf_recolored/ref_005145.png",
614
+ "kf_pos": 42,
615
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
616
+ "out": "/workspace/ltx_co_out/w63.mp4",
617
+ "cut_at_start": false,
618
+ "scene_id": 4
619
+ },
620
+ {
621
+ "gray": "/workspace/ltx_windows/w64.mp4",
622
+ "keyframe": "/workspace/q_kf_recolored/ref_005220.png",
623
+ "kf_pos": 36,
624
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
625
+ "out": "/workspace/ltx_co_out/w64.mp4",
626
+ "cut_at_start": false,
627
+ "scene_id": 4
628
+ },
629
+ {
630
+ "gray": "/workspace/ltx_windows/w65.mp4",
631
+ "keyframe": "/workspace/q_kf_recolored/ref_005295.png",
632
+ "kf_pos": 30,
633
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
634
+ "out": "/workspace/ltx_co_out/w65.mp4",
635
+ "cut_at_start": false,
636
+ "scene_id": 4
637
+ },
638
+ {
639
+ "gray": "/workspace/ltx_windows/w66.mp4",
640
+ "keyframe": "/workspace/q_kf_recolored/ref_005370.png",
641
+ "kf_pos": 24,
642
+ "prompt": "1940s period film scene, natural realistic period-accurate colour, feldgrau grey-green uniforms, warm natural skin, grey-taupe suit, muted believable period palette, out-of-focus foreground neutral grey; only the colour changes, do not add, remove, move or alter anything.",
643
+ "out": "/workspace/ltx_co_out/w66.mp4",
644
+ "cut_at_start": false,
645
+ "extra_anchors": [
646
+ {
647
+ "path": "/workspace/q_kf_recolored/ref_005387.png",
648
+ "pos": 43,
649
+ "weight": 0.95
650
+ }
651
+ ],
652
+ "scene_id": 4
653
+ }
654
+ ]
ltx_driver.py ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """ltx_driver.py — LTX-2.3-22b-distilled IC-LoRA colorization, LOAD-ONCE + temporeel naadloos.
3
+ STRUCTURELE FIX voor venster-naden (ml-engineer + ac64 consult, 28 jun 2026):
4
+ - Carry-over: laatste N frames van venster K -> conditioning op frame_idx 0..N-1 van venster K+1
5
+ (via ic_lora ImageConditioningInput op willekeurige frame_idx) -> venster start vanuit vorig eind -> naadloos.
6
+ - Optioneel globaal anker-keyframe in elk venster (palet globaal pinnen).
7
+ - Optioneel 8-frame cosine-crossfade bij stitch voor rest-gladheid.
8
+ - Model laadt 1x (i.p.v. 67x in ltx_full_loop.sh) -> ~55min i.p.v. ~102min.
9
+
10
+ COMPUTE OPTIMALISATIES (A100-SXM4-80GB, 28 jun 2026):
11
+ - flash-attn 2: DIFFUSERS_ATTN_BACKEND=flash -> LTX dispatch_attention_fn gebruikt flash-attn 2.
12
+ Op Ampere (sm80) is dit de snelste attentie-backend. SageAttention NIET gebruiken op A100
13
+ (SM90-FP8 variant is Hopper-only; FP16 variant geeft geen winst boven flash-attn 2).
14
+ - TF32: torch.backends.cuda.matmul.allow_tf32=True (default op PyTorch>=1.7 maar hier expliciet).
15
+ - CFG-skip: guidance_scale=1.0 (distilled model heeft guidance ingebakken). Als de pipeline
16
+ met guidance_scale>1 draait, doet het 2 DiT-forwards per stap = 2x de compute. Met 1.0: 1 forward.
17
+ DIAGNOSE EERST: .venv/bin/python -m ltx_pipelines.ic_lora --help | grep -i guid
18
+ - torch.compile: mode='reduce-overhead', dynamic=False (vaste shapes 81f/960x544). Alleen DiT,
19
+ niet VAE/Gemma. Eerste compile ~3-4 min, amortiseert over 67 vensters.
20
+ max-autotune NIET gebruiken op 80GB (OOM-risico met 46GB model).
21
+
22
+ LET OP: de ltx_pipelines.ic_lora API-class-naam kan per repo-versie verschillen.
23
+ Valideer op de instance: `python -c "import ltx_pipelines.ic_lora as m; print(dir(m))"`.
24
+ Native import faalt -> subprocess-fallback (correct, minder efficient; compile dan niet actief).
25
+
26
+ Manifest (JSON): [{"gray":"wK.mp4","keyframe":"ref_X.png","kf_pos":40,"prompt":"...","out":"wK.mp4","cut_at_start":false}, ...]
27
+ Run: DIFFUSERS_ATTN_BACKEND=flash python ltx_driver.py manifest.json \
28
+ --ck ... --lora ... --gemma ... --num-frames 81 --width 960 --height 544 --steps 8 \
29
+ --guidance-scale 1.0 --compile --carry-over 2 --crossfade 8 --stitch-out full_seamless.mp4 --fps 30
30
+ """
31
+ # EERST: flash-attn backend instellen VOOR elke diffusers/ltx import
32
+ import os
33
+ _attn_backend = os.environ.get('DIFFUSERS_ATTN_BACKEND', 'flash')
34
+ os.environ['DIFFUSERS_ATTN_BACKEND'] = _attn_backend
35
+
36
+ import sys, json, time, argparse, tempfile, subprocess, shutil
37
+ from pathlib import Path
38
+
39
+ import torch
40
+ # TF32: op A100 versnelt matmul ~1.5x bij bf16. Standaard aan in PyTorch>=1.7 maar hier expliciet.
41
+ torch.backends.cuda.matmul.allow_tf32 = True
42
+ torch.backends.cudnn.allow_tf32 = True
43
+
44
+ def parse_args():
45
+ p = argparse.ArgumentParser()
46
+ p.add_argument('manifest'); p.add_argument('--ck', required=True); p.add_argument('--lora', required=True)
47
+ p.add_argument('--gemma', required=True); p.add_argument('--num-frames', type=int, default=81)
48
+ p.add_argument('--width', type=int, default=960); p.add_argument('--height', type=int, default=544)
49
+ p.add_argument('--steps', type=int, default=8); p.add_argument('--seed', type=int, default=42)
50
+ p.add_argument('--lora-scale', type=float, default=1.0); p.add_argument('--carry-over', type=int, default=2)
51
+ p.add_argument('--crossfade', type=int, default=8); p.add_argument('--carry-weight-base', type=float, default=0.85)
52
+ p.add_argument('--carry-weight-decay', type=float, default=0.20); p.add_argument('--global-anchor', default=None)
53
+ p.add_argument('--skip-stage2', action='store_true', default=True); p.add_argument('--prompt', default=None)
54
+ p.add_argument('--stitch-out', default=None); p.add_argument('--fps', type=int, default=30)
55
+ # A100 compute opts:
56
+ p.add_argument('--guidance-scale', type=float, default=1.0,
57
+ help='CFG guidance. 1.0=single DiT forward/stap (distilled). >1 = 2 forwards = 2x trager.')
58
+ p.add_argument('--compile', action='store_true', default=False,
59
+ help='torch.compile de DiT (reduce-overhead, dynamic=False). Eerste venster ~3-4 min trager.')
60
+ p.add_argument('--compile-mode', default='reduce-overhead',
61
+ help='torch.compile mode. reduce-overhead=veilig op 80GB. max-autotune=OOM-risico.')
62
+ return p.parse_args()
63
+
64
+ def _apply_compile(pipe, mode):
65
+ """Compileer de DiT-transformer. Niet de VAE of text encoder (wisselende shapes / 1x gebruik)."""
66
+ # Zoek het DiT-object: common attributen in ltx_pipelines en diffusers
67
+ dit = None
68
+ for attr in ('transformer', 'dit', 'model', 'unet'):
69
+ if hasattr(pipe, attr):
70
+ candidate = getattr(pipe, attr)
71
+ if callable(getattr(candidate, 'forward', None)):
72
+ dit = candidate; break
73
+ if dit is None:
74
+ print("[DRIVER] compile: DiT niet gevonden in pipeline — compile overgeslagen", flush=True); return
75
+ print(f"[DRIVER] compile: torch.compile({attr}, mode='{mode}', dynamic=False) ...", flush=True)
76
+ t0 = time.time()
77
+ setattr(pipe, attr, torch.compile(dit, mode=mode, dynamic=False))
78
+ print(f"[DRIVER] compile klaar ({round(time.time()-t0)}s) — eerste venster triggert kernel-compilatie", flush=True)
79
+
80
+ def _check_cfg(pipe, a):
81
+ """Diagnose: print de effectieve guidance_scale zodat CFG-skip verifieerbaar is."""
82
+ gs = getattr(pipe, '_guidance_scale', None) or getattr(pipe, 'guidance_scale', None) or a.guidance_scale
83
+ n_forwards = 2 if float(gs) > 1.0 else 1
84
+ print(f"[DRIVER] CFG: guidance_scale={gs} -> {n_forwards} DiT forward(s)/stap "
85
+ f"(bij 8 steps: {8*n_forwards} forwards/venster)", flush=True)
86
+ if n_forwards == 2:
87
+ print("[DRIVER] WAARSCHUWING: guidance_scale>1 gedetecteerd. Gebruik --guidance-scale 1.0 "
88
+ "of voeg '--guidance-scale 1.0' toe aan CLI voor 2x speedup.", flush=True)
89
+
90
+ def load_pipeline(a):
91
+ # Rapporteer welke attentie-backend actief is
92
+ print(f"[DRIVER] DIFFUSERS_ATTN_BACKEND={os.environ.get('DIFFUSERS_ATTN_BACKEND','native')}", flush=True)
93
+ try:
94
+ from ltx_pipelines.ic_lora.inference import ICLoRAInference
95
+ pipe = ICLoRAInference(distilled_checkpoint_path=a.ck, lora_path=a.lora, lora_scale=a.lora_scale,
96
+ gemma_root=a.gemma, skip_stage2=a.skip_stage2)
97
+ print("[DRIVER] native ICLoRAInference geladen", flush=True)
98
+ _check_cfg(pipe, a)
99
+ if a.compile:
100
+ _apply_compile(pipe, a.compile_mode)
101
+ return pipe, 'native'
102
+ except (ImportError, AttributeError) as e:
103
+ print(f"[DRIVER] native import faalt ({e}) -> subprocess-fallback "
104
+ f"(compile niet actief in subprocess-mode)", flush=True)
105
+ return None, 'subprocess'
106
+
107
+ def run_native(pipe, w, conds, a):
108
+ # guidance_scale=1.0 = single forward per stap (CFG-skip voor distilled model)
109
+ kwargs = dict(prompt=w.get('prompt', a.prompt or ''), video_conditioning_path=w['gray'],
110
+ video_conditioning_weight=1.0, image_conditioning=conds, num_frames=a.num_frames,
111
+ width=a.width, height=a.height, seed=a.seed, num_inference_steps=a.steps,
112
+ output_path=w['out'])
113
+ # Pas guidance_scale toe als de pipeline het accepteert
114
+ try:
115
+ pipe.run(guidance_scale=a.guidance_scale, **kwargs)
116
+ except TypeError:
117
+ # Oudere API zonder guidance_scale parameter
118
+ pipe.run(**kwargs)
119
+
120
+ def run_subprocess(w, conds, a):
121
+ cmd = [sys.executable, '-m', 'ltx_pipelines.ic_lora', '--distilled-checkpoint-path', a.ck,
122
+ '--lora', a.lora, str(a.lora_scale), '--gemma-root', a.gemma,
123
+ '--video-conditioning', w['gray'], '1.0', '--num-frames', str(a.num_frames),
124
+ '--width', str(a.width), '--height', str(a.height), '--seed', str(a.seed),
125
+ '--frame-rate', str(a.fps), '--output-path', w['out'], '--prompt', w.get('prompt', a.prompt or '')]
126
+ if a.skip_stage2: cmd.append('--skip-stage-2')
127
+ # CFG-skip: probe of de CLI --guidance-scale accepteert (eenmalig) en voeg toe
128
+ if a.guidance_scale <= 1.0:
129
+ cmd += ['--guidance-scale', str(a.guidance_scale)]
130
+ for (path, pos, wt) in conds: cmd += ['--image', path, str(pos), str(wt)]
131
+ # Geef flash-attn backend door aan subprocess via env
132
+ env = os.environ.copy()
133
+ env['DIFFUSERS_ATTN_BACKEND'] = os.environ.get('DIFFUSERS_ATTN_BACKEND', 'flash')
134
+ result = subprocess.run(cmd, env=env)
135
+ if result.returncode != 0:
136
+ # Als --guidance-scale niet herkend: opnieuw zonder die flag
137
+ cmd2 = [c for c in cmd if c not in ['--guidance-scale', str(a.guidance_scale)]]
138
+ subprocess.run(cmd2, env=env, check=True)
139
+
140
+ def last_frames(video, n, td):
141
+ pr = subprocess.run(['ffprobe','-v','quiet','-select_streams','v:0','-count_packets',
142
+ '-show_entries','stream=nb_read_packets','-of','csv=p=0',video], capture_output=True, text=True)
143
+ try: total = int(pr.stdout.strip())
144
+ except Exception: total = 81
145
+ out = []
146
+ for i in range(n):
147
+ fi = total - n + i; png = os.path.join(td, f'carry_{i:03d}.png')
148
+ subprocess.run(['ffmpeg','-y','-i',video,'-vf',f'select=eq(n\\,{fi})','-vsync','0','-frames:v','1',png],capture_output=True)
149
+ if os.path.exists(png): out.append(png)
150
+ return out
151
+
152
+ def stitch(paths, xf, fps, out):
153
+ if xf == 0 or len(paths) == 1:
154
+ lst = tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=False)
155
+ for p in paths: lst.write(f"file '{p}'\n")
156
+ lst.close(); subprocess.run(['ffmpeg','-y','-f','concat','-safe','0','-i',lst.name,'-c','copy',out],check=True); os.unlink(lst.name); return
157
+ dur = 81/fps; xfd = xf/fps; inputs = []
158
+ for p in paths: inputs += ['-i', p]
159
+ parts = []; cur = '[0:v]'
160
+ for k in range(1, len(paths)):
161
+ off = max(0, k*dur - k*xfd); nl = f'[v{k}]' if k < len(paths)-1 else ''
162
+ parts.append(f"{cur}[{k}:v]xfade=transition=fade:duration={xfd:.4f}:offset={off:.4f}{nl}"); cur = nl
163
+ subprocess.run(['ffmpeg','-y']+inputs+['-filter_complex','; '.join(parts),'-fps_mode','vfr',out],check=True)
164
+
165
+ def main():
166
+ a = parse_args(); manifest = json.load(open(a.manifest)); td = tempfile.mkdtemp(prefix='ltx_co_')
167
+ print(f"[DRIVER] {len(manifest)} vensters, carry-over={a.carry_over}, crossfade={a.crossfade}", flush=True)
168
+ t0 = time.time(); pipe, mode = load_pipeline(a); print(f"[DRIVER] load {round(time.time()-t0)}s mode={mode}", flush=True)
169
+ rendered = []; prev = None
170
+ for idx, w in enumerate(manifest):
171
+ tw = time.time(); conds = []
172
+ if prev and not w.get('cut_at_start', False):
173
+ cn = min(a.carry_over, len(prev))
174
+ for ci, cf in enumerate(prev[-cn:]):
175
+ conds.append((cf, cn-1-ci, max(0.3, a.carry_weight_base - ci*a.carry_weight_decay)))
176
+ if a.global_anchor and (not prev or w.get('cut_at_start')): conds.append((a.global_anchor, 0, 0.4))
177
+ conds.append((w['keyframe'], w.get('kf_pos', a.num_frames//2), 1.0))
178
+ print(f"[DRIVER] venster {idx+1}/{len(manifest)} {Path(w['out']).name} ({len(conds)} conds)", flush=True)
179
+ (run_native if mode=='native' else (lambda p,ww,c,aa: run_subprocess(ww,c,aa)))(pipe, w, conds, a) if mode=='native' else run_subprocess(w, conds, a)
180
+ if a.carry_over > 0: prev = last_frames(w['out'], a.carry_over, td)
181
+ rendered.append(w['out']); print(f"[DRIVER] venster {idx+1} klaar ({round(time.time()-tw)}s)", flush=True)
182
+ if a.stitch_out: print(f"[DRIVER] stitch -> {a.stitch_out}", flush=True); stitch(rendered, a.crossfade, a.fps, a.stitch_out)
183
+ shutil.rmtree(td, ignore_errors=True); print("[DRIVER] ALL_DONE", flush=True)
184
+
185
+ if __name__ == '__main__':
186
+ main()
ltx_loadonce.py ADDED
@@ -0,0 +1,422 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """ltx_loadonce.py v3 -- LOAD-ONCE + PROMPT-CACHE + FP8-CAST + carry-over (28 jun 2026).
3
+
4
+ OOM-HISTORY (A100 80GB, 79.25GB usable):
5
+ v1: Gemma 46GB + DiT bf16 43GB gelijktijdig = 89GB -> OOM.
6
+ v2 (gemma-free): DiT bf16 43GB permanent + VAE-residu 44GB = 87GB -> OOM bij venster 2.
7
+ v3 (dit): DiT fp8 ~22GB + VAE-residu ~44GB + activaties ~12GB = ~78GB -> past.
8
+
9
+ ARCHITECTUUR:
10
+ 1. Pipeline aanmaken met QuantizationKind.FP8_CAST.to_policy(CK):
11
+ DiffusionStage._build_transformer() past fp8-cast toe -> DiT ~22GB (was 43GB).
12
+ 2. Prompt EENMALIG encoderen, Gemma 46GB volledig vrijgeven.
13
+ 3. DiT FP8 EENMALIG bouwen, permanent op GPU houden (geen CPU-swap).
14
+ 4. _transformer_ctx patch: geeft pre-built fp8 DiT terug, geen rebuild per venster.
15
+ 5. Carry-over: laatste 2 frames van vorig venster als conditioning voor temporele naad.
16
+
17
+ VRAM-BUDGET:
18
+ DiT fp8: ~22GB (permanent op GPU)
19
+ Gemma: 0GB (vrijgegeven na cache-encode)
20
+ VAE-residu: ~44GB (VideoDecoder.to("meta") bug, maar accumuleert niet)
21
+ Activaties: ~12GB (DiT forward, 8 denoising stappen)
22
+ TOTAAL PIEK: ~78GB < 79.25GB usable -- past.
23
+
24
+ Gebruik:
25
+ PYTORCH_ALLOC_CONF=expandable_segments:True DIFFUSERS_ATTN_BACKEND=flash \
26
+ .venv/bin/python ltx_loadonce.py manifest.json [--compile] [--limit 3]
27
+ """
28
+
29
+ # expandable_segments VOOR torch-import (env-var wordt gelezen bij CUDA-init)
30
+ # NB: PYTORCH_CUDA_ALLOC_CONF is deprecated in PyTorch>=2.5, gebruik PYTORCH_ALLOC_CONF
31
+ import os
32
+ os.environ.setdefault('PYTORCH_ALLOC_CONF', 'expandable_segments:True')
33
+ os.environ.setdefault('PYTORCH_CUDA_ALLOC_CONF', 'expandable_segments:True') # compat
34
+ os.environ.setdefault('DIFFUSERS_ATTN_BACKEND', 'flash')
35
+
36
+ import gc, json, time, sys, argparse, subprocess
37
+ import torch
38
+ torch.backends.cuda.matmul.allow_tf32 = True
39
+ torch.backends.cudnn.allow_tf32 = True
40
+
41
+ from ltx_pipelines.ic_lora import ICLoraPipeline
42
+ from ltx_pipelines.utils.args import ImageConditioningInput
43
+ from ltx_core.loader import LoraPathStrengthAndSDOps, LTXV_LORA_COMFY_RENAMING_MAP
44
+ from ltx_core.model.transformer.compiling import CompilationConfig
45
+ from ltx_core.model.video_vae import TilingConfig, get_video_chunks_number
46
+ from ltx_pipelines.utils.media_io import encode_video
47
+ from ltx_pipelines.utils.types import OffloadMode
48
+
49
+ # ─── ARGS ────────────────────────────────────────────────────────────────────
50
+ ap = argparse.ArgumentParser()
51
+ ap.add_argument('manifest')
52
+ ap.add_argument('--compile', action='store_true')
53
+ ap.add_argument('--limit', type=int, default=0, help='Test: render max N vensters')
54
+ ap.add_argument('--carry', type=int, default=2)
55
+ ap.add_argument('--offload', default='none')
56
+ a = ap.parse_args()
57
+
58
+ CK = '/workspace/models/LTX-2.3/ltx-2.3-22b-distilled.safetensors'
59
+ UP = '/workspace/models/LTX-2.3/ltx-2.3-spatial-upscaler-x2-1.1.safetensors'
60
+ LORA = '/workspace/models/loras/ltx-2.3-22b-ic-lora-colorization-0.9.safetensors'
61
+ GEMMA = '/workspace/models/LTX-2'
62
+
63
+ manifest = json.load(open(a.manifest))
64
+ n_total = len(manifest)
65
+ if a.limit:
66
+ manifest = manifest[:a.limit]
67
+ print(f"[DRIVER] TEST-MODE: {len(manifest)}/{n_total} vensters", flush=True)
68
+
69
+ prompts_set = set(w['prompt'] for w in manifest)
70
+ print(f"[DRIVER] Unieke prompts in manifest: {len(prompts_set)}", flush=True)
71
+ if len(prompts_set) > 1:
72
+ print("[DRIVER] WAARSCHUWING: meerdere unieke prompts -- cache gebruikt prompt[0]", flush=True)
73
+ SHARED_PROMPT = manifest[0]['prompt']
74
+
75
+ # ─── PIPELINE LADEN ──────────────────────────────────────────────────────────
76
+ t0 = time.time()
77
+ pipe = ICLoraPipeline(
78
+ distilled_checkpoint_path=CK,
79
+ spatial_upsampler_path=UP,
80
+ gemma_root=GEMMA,
81
+ loras=(LoraPathStrengthAndSDOps(LORA, 1.0, LTXV_LORA_COMFY_RENAMING_MAP),),
82
+ quantization=None, # fp8 via optimum.quanto NA build (native fp8-cast = H100-only, niet A100)
83
+ compilation_config=CompilationConfig(mode='reduce-overhead', dynamic=False) if a.compile else None,
84
+ offload_mode=OffloadMode(a.offload),
85
+ )
86
+ tiling = TilingConfig.default()
87
+ print(f"[DRIVER] Pipeline geladen ({round(time.time()-t0)}s, compile={a.compile})", flush=True)
88
+
89
+ # ─── VOLGORDE IS KRITIEK: GEMMA EERST, DAN DiT ──────────────────────────────
90
+ # Gemma = 46GB, DiT = 35GB. Gelijktijdig = 81GB > 80GB = OOM.
91
+ # Correct: 1) Gemma laden/encoderen/VRIJGEVEN (46GB -> 0GB)
92
+ # 2) DiT EENMALIG laden + permanent houden (35GB)
93
+ # Peak: max(46GB, 35GB + 17GB activatie) = 52GB -- past ruim in 80GB.
94
+
95
+ # ─── STAP 1: PROMPT-CACHE (Gemma 46GB tijdelijk, dan vrijgeven) ──────────────
96
+ print(f"[CACHE] Prompt encoding 1x voor {len(manifest)} vensters...", flush=True)
97
+ t_enc = time.time()
98
+ # no_grad (niet inference_mode): inference_mode-tensors in VAE conv3d geven
99
+ # "Inference tensors do not track version counter" vanwege in-place ops in CausalConv3d.
100
+ # no_grad is voldoende om gradienten uit te schakelen zonder version-counter-problemen.
101
+ with torch.no_grad():
102
+ _ctx_list = pipe.prompt_encoder(
103
+ [SHARED_PROMPT],
104
+ enhance_first_prompt=False,
105
+ enhance_prompt_seed=42,
106
+ )
107
+ cached_ctx = _ctx_list[0]
108
+ vram_after_enc = torch.cuda.memory_allocated() // 1024**3
109
+ print(f"[CACHE] Encoding klaar ({round(time.time()-t_enc)}s), VRAM={vram_after_enc}GB", flush=True)
110
+
111
+ # Gemma volledig vrijgeven: del Builder-referentie zodat Python GC kan opruimen
112
+ del pipe.prompt_encoder
113
+ gc.collect()
114
+ torch.cuda.empty_cache()
115
+ vram_freed = torch.cuda.memory_allocated() // 1024**3
116
+ print(f"[CACHE] Gemma freed: {vram_after_enc}GB -> {vram_freed}GB VRAM allocated", flush=True)
117
+
118
+ # Lambda-stub: ICLoraPipeline.__call__ doet (ctx_p,) = self.prompt_encoder([prompt], ...)
119
+ # Onze lambda accepteert dezelfde args en retourneert direct de gecachte embedding.
120
+ pipe.prompt_encoder = lambda prompts, **kw: [cached_ctx]
121
+ print("[CACHE] prompt_encoder = cache-lambda actief (0 GPU-gebruik per venster)", flush=True)
122
+
123
+ # Start memory history recording VROEG zodat allocaties traceerbaar zijn
124
+ torch.cuda.memory._record_memory_history(max_entries=500000)
125
+ print("[SNAP] memory history recording gestart", flush=True)
126
+
127
+ # ─── PATCH: gpu_model MONITOR ─────────────────────────────────────────────
128
+ # Meten WANNEER en HOEVEEL gpu_model.__exit__ vrijmaakt (VAE decoder lifecycle).
129
+ import ltx_pipelines.utils.gpu_model as _gm_module
130
+ import ltx_pipelines.utils.helpers as _helpers_module
131
+ from contextlib import contextmanager as _cm
132
+
133
+ _orig_gpu_model = _gm_module.gpu_model
134
+ _orig_cleanup = _helpers_module.cleanup_memory
135
+
136
+ def _patched_cleanup():
137
+ v0 = torch.cuda.memory_allocated() // 1024**3
138
+ _orig_cleanup()
139
+ v1 = torch.cuda.memory_allocated() // 1024**3
140
+ print(f"[DIAG-cleanup] {v0}GB -> {v1}GB", flush=True)
141
+
142
+ _helpers_module.cleanup_memory = _patched_cleanup
143
+
144
+ @_cm
145
+ def _patched_gpu_model(model):
146
+ try:
147
+ yield model
148
+ finally:
149
+ v0 = torch.cuda.memory_allocated() // 1024**3
150
+ torch.cuda.synchronize()
151
+ model.to("meta")
152
+ v1 = torch.cuda.memory_allocated() // 1024**3
153
+ print(f"[DIAG-gpu_model] {type(model).__name__} to(meta): {v0}GB -> {v1}GB", flush=True)
154
+ _patched_cleanup()
155
+
156
+ _gm_module.gpu_model = _patched_gpu_model
157
+ # Patch also in blocks.py (VideoDecoder uses it from there)
158
+ import ltx_pipelines.utils.blocks as _blocks_module
159
+ _blocks_module.gpu_model = _patched_gpu_model
160
+ print("[DIAG] gpu_model + cleanup_memory gepatcht voor VRAM-monitoring", flush=True)
161
+
162
+ # ─── STAP 2: DiT LADEN + FP8 QUANTISATIE (optimum.quanto) ───────────────────
163
+ # Native LTX fp8-cast gebruikt Triton-kernel fp8e4nv = H100-only, niet op A100.
164
+ # Oplossing: optimum.quanto qfloat8 = pure Python fp8-opslag (float8_e4m3fn), werkt
165
+ # overal. Gewichten worden in fp8 opgeslagen (~22GB), upcast naar bf16 voor compute.
166
+ #
167
+ # VRAM-budget (A100 80GB = 79.25GB usable):
168
+ # DiT bf16 build: 43GB (tijdelijk, tijdens quantize)
169
+ # DiT fp8 na quant: ~22GB (permanent op GPU, geen CPU-swap nodig)
170
+ # Quantize piek: 43+22=65GB (beide tegelijk, maar bf16 vrijgegeven na freeze)
171
+ # VAE-decode residu: ~44GB (niet opgeheven door to("meta"), accumuleert niet)
172
+ # DiT-forward piek: +12GB activaties
173
+ # STABIEL PIEK: 22+44+12 = 78GB < 79.25GB -- past.
174
+ from contextlib import contextmanager
175
+ from optimum.quanto import quantize as _quanto_quantize, qfloat8 as _qf8, freeze as _quanto_freeze
176
+
177
+ print("[LOADONCE] DiT laden (bf16, 1x)...", flush=True)
178
+ t_dit = time.time()
179
+ with torch.no_grad():
180
+ _pre_built_dit = pipe.stage_1._build_transformer()
181
+ vram_bf16 = torch.cuda.memory_allocated() // 1024**3
182
+ print(f"[LOADONCE] DiT bf16 geladen ({round(time.time()-t_dit)}s), VRAM={vram_bf16}GB", flush=True)
183
+
184
+ print("[LOADONCE] optimum.quanto fp8 quantisatie...", flush=True)
185
+ t_q = time.time()
186
+ # VOOR quantize: registreer id(originele_nn_linear) -> vm_module_attrnaam
187
+ # zodat we na quantize de stale referenties CORRECT kunnen herverbinden.
188
+ # Probleem: video_preprocessor.patchify_proj en audio_preprocessor.patchify_proj
189
+ # heten BEIDEN 'patchify_proj' maar zijn vm.patchify_proj vs vm.audio_patchify_proj.
190
+ # Naam-gebaseerde lookup werkt niet; ID-gebaseerde lookup wel.
191
+ _vm = _pre_built_dit.velocity_model
192
+ _linear_id_to_vmattr = {}
193
+ for _attr in dir(_vm):
194
+ if not _attr.startswith('_'):
195
+ _obj = getattr(_vm, _attr, None)
196
+ if isinstance(_obj, torch.nn.Linear):
197
+ _linear_id_to_vmattr[id(_obj)] = _attr
198
+
199
+ _quanto_quantize(_pre_built_dit, weights=_qf8)
200
+
201
+ # NA quantize: vm._modules['patchify_proj'] = QLinear (nieuw), originele nn.Linear.weight=None.
202
+ # TransformerArgsPreprocessors (geen nn.Module) houden stale originele Linear.
203
+ # Fix via ID-mapping: stale.id -> vmattr -> vm.{vmattr} (=QLinear)
204
+ def _fix_stale_by_id(obj, vm, id_map, depth=0):
205
+ if depth > 6: return
206
+ for k, v in list(getattr(obj, '__dict__', {}).items()):
207
+ if isinstance(v, torch.nn.Linear) and getattr(v, 'weight', True) is None:
208
+ vmattr = id_map.get(id(v))
209
+ if vmattr:
210
+ replacement = getattr(vm, vmattr, None)
211
+ if replacement is not None:
212
+ setattr(obj, k, replacement)
213
+ print(f"[FIX] {type(obj).__name__}.{k} -> vm.{vmattr} ({type(replacement).__name__})", flush=True)
214
+ elif not isinstance(v, (torch.nn.Module, torch.Tensor)) and hasattr(v, '__dict__'):
215
+ _fix_stale_by_id(v, vm, id_map, depth+1)
216
+
217
+ for _preprocessor in [_vm.video_args_preprocessor, getattr(_vm, 'audio_args_preprocessor', None)]:
218
+ if _preprocessor is not None:
219
+ _fix_stale_by_id(_preprocessor, _vm, _linear_id_to_vmattr)
220
+
221
+ _quanto_freeze(_pre_built_dit)
222
+ torch.cuda.empty_cache()
223
+ gc.collect()
224
+ vram_dit = torch.cuda.memory_allocated() // 1024**3
225
+ print(f"[LOADONCE] DiT fp8 klaar ({round(time.time()-t_q)}s), VRAM={vram_dit}GB "
226
+ f"(-{vram_bf16-vram_dit}GB tov bf16)", flush=True)
227
+ print(f"[LOADONCE] VRAM-budget: {vram_dit}GB DiT + 44GB VAE-residu + 12GB act = ~{vram_dit+56}GB < 79.25GB", flush=True)
228
+
229
+ @contextmanager
230
+ def _permanent_transformer_ctx(**kwargs):
231
+ """FP8 DiT permanent op GPU -- geen CPU-swap (to("cpu") hangt bij quanto-modellen).
232
+ Budget: DiT_fp8(~17GB) + VAE-residu(~44GB) = ~61GB base.
233
+ DiT-forward piek: +16GB activaties = ~77GB < 80GB OK.
234
+ VAE-decode piek (window 2+): 17+44+17=78GB -- net onder 79.25GB grens.
235
+ """
236
+ yield _pre_built_dit # DiT fp8 forward (8 denoising stappen)
237
+ # Na DiT forward: activatie-tensors vrijgeven
238
+ gc.collect()
239
+ torch.cuda.empty_cache()
240
+ print(f"[LOADONCE] Post-DiT: VRAM={torch.cuda.memory_allocated()//1024**3}GB", flush=True)
241
+
242
+ # Patch stage_1. stage_2 niet aangesproken bij skip_stage_2=True maar patch als voorzorg.
243
+ pipe.stage_1._transformer_ctx = _permanent_transformer_ctx
244
+ pipe.stage_2._transformer_ctx = _permanent_transformer_ctx
245
+ print("[LOADONCE] _transformer_ctx gepatcht", flush=True)
246
+
247
+ # ─── PATCH: tiled VAE encode voor image_conditioner ──────────────────────────
248
+ # ICLoraPipeline._create_conditionings roept append_ic_lora_reference_video_conditionings
249
+ # aan met tiling_config=None -> grote Conv3d allocatie (17GB) bij hoge resolutie.
250
+ # Met DiT_fp8(17GB) + VAE-residu(45GB) = 62GB base: 17.25GB vrij < 17GB benodigde alloc.
251
+ # Fix: patch de functie om TilingConfig.default() (768px tiles) door te geven.
252
+ # Peak per tile: (768/960)^2 * 17GB ≈ 11GB, 62+11=73GB < 79.25GB -> past.
253
+ import ltx_pipelines.iclora_utils as _icu_mod
254
+ import ltx_pipelines.ic_lora as _ic_lora_mod
255
+
256
+ _orig_append_ic = _icu_mod.append_ic_lora_reference_video_conditionings
257
+
258
+ # 512px spatial tiles: (512/768)^2 * 13.62GB ≈ 6GB per tile, past ruim in 17GB vrij.
259
+ from ltx_core.model.video_vae.tiling import SpatialTilingConfig as _STC, TemporalTilingConfig as _TTC
260
+ _ENCODE_TILING = TilingConfig(
261
+ spatial_config=_STC(tile_size_in_pixels=512, tile_overlap_in_pixels=32),
262
+ temporal_config=_TTC(tile_size_in_frames=80, tile_overlap_in_frames=24),
263
+ )
264
+
265
+ def _tiled_append_ic(*args, tiling_config=None, **kwargs):
266
+ """Forceer tiled VAE encode (512px tiles) om OOM bij grote Conv3d te voorkomen."""
267
+ return _orig_append_ic(*args, tiling_config=_ENCODE_TILING, **kwargs)
268
+
269
+ _icu_mod.append_ic_lora_reference_video_conditionings = _tiled_append_ic
270
+ _ic_lora_mod.append_ic_lora_reference_video_conditionings = _tiled_append_ic
271
+ print("[LOADONCE] Tiled VAE encode gepatcht (768px tiles) -- render-loop start", flush=True)
272
+
273
+ # ─── CARRY-OVER HELPER ───────────────────────────────────────────────────────
274
+ os.makedirs('/tmp/carry', exist_ok=True)
275
+
276
+ def last_frames(video_path, n):
277
+ r = subprocess.run(
278
+ ['ffprobe', '-v', 'quiet', '-select_streams', 'v:0', '-count_packets',
279
+ '-show_entries', 'stream=nb_read_packets', '-of', 'csv=p=0', video_path],
280
+ capture_output=True, text=True
281
+ )
282
+ try:
283
+ total = int(r.stdout.strip())
284
+ except Exception:
285
+ total = 81
286
+ frames = []
287
+ for ci in range(n):
288
+ frame_idx = total - 1 - ci # ci=0 = laatste frame -> positie 0 in volgend venster
289
+ png = f'/tmp/carry/c{ci}.png'
290
+ subprocess.run(
291
+ ['ffmpeg', '-y', '-i', video_path,
292
+ '-vf', f'select=eq(n\\,{frame_idx})', '-vsync', '0', '-frames:v', '1', png],
293
+ capture_output=True
294
+ )
295
+ if os.path.exists(png):
296
+ frames.append((png, ci))
297
+ return frames
298
+
299
+ # ─── RENDER LOOP ─────────────────────────────────────────────────────────────
300
+ prev_out = None
301
+ t_total = time.time()
302
+
303
+ for i, w in enumerate(manifest):
304
+ tw = time.time()
305
+ imgs = []
306
+
307
+ # Carry-over: laatste N gekleurde frames van vorig venster als conditioning pos 0..N-1
308
+ if prev_out and not w.get('cut_at_start', False):
309
+ co_frames = last_frames(prev_out, a.carry)
310
+ for (cf_path, ci) in co_frames:
311
+ weight = round(0.85 - ci * 0.20, 2)
312
+ imgs.append(ImageConditioningInput(path=cf_path, frame_idx=ci, strength=weight))
313
+
314
+ # Keyframe-conditioning van dit venster
315
+ imgs.append(ImageConditioningInput(
316
+ path=w['keyframe'],
317
+ frame_idx=w.get('kf_pos', 40),
318
+ strength=1.0
319
+ ))
320
+
321
+ vram_pre = torch.cuda.memory_allocated() // 1024**3
322
+ print(f"[{i+1}/{len(manifest)}] {os.path.basename(w['out'])} "
323
+ f"({len(imgs)} conds, VRAM={vram_pre}GB) ...", flush=True)
324
+
325
+ os.makedirs(os.path.dirname(w['out']), exist_ok=True)
326
+ # Geef eventueel gereserveerde (maar ongebruikte) CUDA-blokken vrij vóór VAE-encode
327
+ torch.cuda.empty_cache()
328
+ _vram_pre_pipe = torch.cuda.memory_allocated() // 1024**3
329
+ print(f"[PIPE] start VRAM={_vram_pre_pipe}GB", flush=True)
330
+ with torch.no_grad():
331
+ video, audio = pipe(
332
+ prompt=w['prompt'], # lambda negeert dit, cached_ctx wordt gebruikt
333
+ seed=42,
334
+ height=1088,
335
+ width=1920,
336
+ num_frames=81,
337
+ frame_rate=24,
338
+ images=imgs,
339
+ video_conditioning=[(w['gray'], 1.0)],
340
+ tiling_config=tiling,
341
+ conditioning_attention_strength=1.0,
342
+ skip_stage_2=True,
343
+ conditioning_attention_mask=None,
344
+ )
345
+
346
+ _vram_post_pipe = torch.cuda.memory_allocated() // 1024**3
347
+ print(f"[PIPE] eind VRAM={_vram_post_pipe}GB (voor encode_video)", flush=True)
348
+
349
+ # Window 1: snapshot wordt genomen na encode_video (recording al actief)
350
+
351
+ encode_video(
352
+ video=video,
353
+ fps=24,
354
+ audio=audio,
355
+ output_path=w['out'],
356
+ video_chunks_number=get_video_chunks_number(81, tiling),
357
+ )
358
+ _vram_post_enc = torch.cuda.memory_allocated() // 1024**3
359
+ print(f"[PIPE] na encode_video VRAM={_vram_post_enc}GB", flush=True)
360
+ prev_out = w['out']
361
+ elapsed = round(time.time() - tw)
362
+
363
+ # Diagnostiek: Zoek grote GPU-tensors voor del
364
+ _vram_before_del = torch.cuda.memory_allocated() // 1024**3
365
+ print(f"[DEBUG] VRAM voor del: {_vram_before_del}GB", flush=True)
366
+
367
+ del video, audio
368
+ gc.collect()
369
+ torch.cuda.empty_cache()
370
+ torch.cuda.synchronize()
371
+ _vram_post = torch.cuda.memory_allocated() // 1024**3
372
+ print(f"[DEBUG] VRAM post-cleanup: {_vram_post}GB", flush=True)
373
+
374
+ # Window 1: snapshot analyseren (ALL states, ALL sizes)
375
+ if i == 0:
376
+ try:
377
+ _snap = torch.cuda.memory._snapshot()
378
+ torch.cuda.memory._record_memory_history(enabled=None)
379
+
380
+ # Verzamel ALLE actieve blokken (active_allocated + active_pending_free)
381
+ _state_totals = {}
382
+ _all_active = []
383
+ for _seg in _snap.get('segments', []):
384
+ for _blk in _seg.get('blocks', []):
385
+ _st = _blk.get('state', 'unknown')
386
+ _sz = _blk.get('size', 0)
387
+ _state_totals[_st] = _state_totals.get(_st, 0) + _sz
388
+ if _st in ('active_allocated', 'active_pending_free') and _sz > 10 * 1024**2:
389
+ _frames = _blk.get('frames', [])
390
+ _trace = ' -> '.join(
391
+ f"{_f.get('name','?')}({os.path.basename(_f.get('filename','?'))}:{_f.get('line','?')})"
392
+ for _f in _frames[-8:]
393
+ ) if _frames else 'NO_TRACE'
394
+ _all_active.append((_sz / 1024**3, _st, _trace))
395
+
396
+ # Per-state summary
397
+ print(f"[SNAP] Block states totalen:", flush=True)
398
+ for _st, _stb in sorted(_state_totals.items(), key=lambda x: -x[1]):
399
+ print(f"[SNAP] {_st}: {_stb/1024**3:.2f}GB", flush=True)
400
+
401
+ # Top actieve blokken
402
+ _all_active.sort(reverse=True)
403
+ print(f"[SNAP] Top 40 actieve blokken (>10MB):", flush=True)
404
+ _seen_gb = 0
405
+ for _gb, _st, _tr in _all_active[:40]:
406
+ _seen_gb += _gb
407
+ print(f"[SNAP] {_gb:.3f}GB [{_st}] | {_tr}", flush=True)
408
+ print(f"[SNAP] Top-40 totaal: {_seen_gb:.1f}GB | memory_allocated={_vram_post}GB", flush=True)
409
+ except Exception as _se:
410
+ print(f"[SNAP] snapshot fout: {_se}", flush=True)
411
+ try:
412
+ torch.cuda.memory._record_memory_history(enabled=None)
413
+ except Exception:
414
+ pass
415
+
416
+ vram_post = _vram_post
417
+ print(f"[{i+1}/{len(manifest)}] KLAAR {elapsed}s | VRAM_post={vram_post}GB", flush=True)
418
+
419
+ total_min = round((time.time() - t_total) / 60, 1)
420
+ per_v = round(total_min * 60 / max(len(manifest), 1))
421
+ print(f"[DRIVER] LOADONCE_DONE -- {len(manifest)} vensters in {total_min} min "
422
+ f"({per_v}s/venster gemiddeld)", flush=True)
ltx_loadonce_fp8.py ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """ltx_loadonce.py — LOAD-ONCE + torch.compile LTX-22b carry-over render (taak #6).
3
+ Echte ICLoraPipeline-API (geen subprocess-reload). Model 1x laden + compile 1x (geamortiseerd).
4
+ Carry-over: laatste N frames vorig venster -> ImageConditioningInput op pos 0..N-1.
5
+ Run: .venv/bin/python ltx_loadonce.py manifest.json [--compile] [--limit N]
6
+ """
7
+ import json, time, os, sys, argparse, subprocess
8
+ import torch
9
+ torch.backends.cuda.matmul.allow_tf32 = True
10
+ torch.backends.cudnn.allow_tf32 = True
11
+ from ltx_pipelines.ic_lora import ICLoraPipeline
12
+ from ltx_pipelines.utils.args import ImageConditioningInput
13
+ from ltx_core.loader import LoraPathStrengthAndSDOps, LTXV_LORA_COMFY_RENAMING_MAP
14
+ from ltx_core.model.transformer.compiling import CompilationConfig
15
+ from ltx_core.model.video_vae import TilingConfig, get_video_chunks_number
16
+ from ltx_pipelines.utils.media_io import encode_video
17
+ from ltx_pipelines.utils.types import OffloadMode
18
+ from ltx_pipelines.utils.quantization_factory import QuantizationKind
19
+
20
+ ap = argparse.ArgumentParser(); ap.add_argument('manifest')
21
+ ap.add_argument('--compile', action='store_true'); ap.add_argument('--limit', type=int, default=0)
22
+ ap.add_argument('--carry', type=int, default=2); ap.add_argument('--offload', default='none')
23
+ a = ap.parse_args()
24
+ CK='/workspace/models/LTX-2.3/ltx-2.3-22b-distilled.safetensors'
25
+ UP='/workspace/models/LTX-2.3/ltx-2.3-spatial-upscaler-x2-1.1.safetensors'
26
+ LORA='/workspace/models/loras/ltx-2.3-22b-ic-lora-colorization-0.9.safetensors'
27
+ GEMMA='/workspace/models/LTX-2'
28
+ manifest = json.load(open(a.manifest))
29
+ if a.limit: manifest = manifest[:a.limit]
30
+
31
+ t0=time.time()
32
+ pipe = ICLoraPipeline(
33
+ distilled_checkpoint_path=CK, spatial_upsampler_path=None, gemma_root=GEMMA, # upsampler niet nodig (skip_stage_2)
34
+ loras=(LoraPathStrengthAndSDOps(LORA, 1.0, LTXV_LORA_COMFY_RENAMING_MAP),),
35
+ quantization=QuantizationKind.FP8_CAST.to_policy(CK),
36
+ compilation_config=CompilationConfig(mode='reduce-overhead', dynamic=False) if a.compile else None,
37
+ offload_mode=OffloadMode(a.offload))
38
+ tiling = TilingConfig.default()
39
+ print(f"PIPELINE_LOADED {round(time.time()-t0)}s (compile={a.compile})", flush=True)
40
+ os.makedirs('/tmp/carry', exist_ok=True)
41
+
42
+ def last_frames(v, n):
43
+ r=subprocess.run(['ffprobe','-v','quiet','-select_streams','v:0','-count_packets','-show_entries','stream=nb_read_packets','-of','csv=p=0',v],capture_output=True,text=True)
44
+ try: tf=int(r.stdout.strip())
45
+ except: tf=81
46
+ out=[]
47
+ for ci in range(n):
48
+ cf=f'/tmp/carry/c{ci}.png'
49
+ subprocess.run(['ffmpeg','-y','-i',v,'-vf',f'select=eq(n\\,{tf-1-ci})','-vsync','0','-frames:v','1',cf],capture_output=True)
50
+ if os.path.exists(cf): out.append((cf,ci))
51
+ return out
52
+
53
+ prev=None
54
+ for i,w in enumerate(manifest):
55
+ tw=time.time(); imgs=[]
56
+ if prev and not w.get('cut_at_start'):
57
+ for (cf,ci) in last_frames(prev, a.carry):
58
+ imgs.append(ImageConditioningInput(path=cf, frame_idx=ci, strength=round(0.85-ci*0.20,2)))
59
+ imgs.append(ImageConditioningInput(path=w['keyframe'], frame_idx=w.get('kf_pos',40), strength=1.0))
60
+ video, audio = pipe(prompt=w['prompt'], seed=42, height=1088, width=1920, num_frames=81, frame_rate=24,
61
+ images=imgs, video_conditioning=[(w['gray'],1.0)], tiling_config=tiling,
62
+ conditioning_attention_strength=1.0, skip_stage_2=True, conditioning_attention_mask=None)
63
+ encode_video(video=video, fps=24, audio=audio, output_path=w['out'], video_chunks_number=get_video_chunks_number(81, tiling))
64
+ prev=w['out']
65
+ print(f"[{i+1}/{len(manifest)}] {os.path.basename(w['out'])} ({round(time.time()-tw)}s)", flush=True)
66
+ print("LOADONCE_DONE", flush=True)
ltx_seamless.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """ltx_seamless.py — naadloze LTX-22b colorization-render via carry-over conditioning.
3
+ Per venster: conditioneer op de laatste frames van het VORIGE venster (--image op pos 0,1)
4
+ + de scene-keyframe (--image op kf_pos) -> venster start vanuit vorig eind -> geen naden.
5
+ Gebruikt de proven ltx_pipelines.ic_lora CLI (geen onzekere native API). Stitch + crossfade aan het eind.
6
+ Run: PY=.venv/bin/python python3 ltx_seamless.py manifest.json [--offload-mode none]
7
+ """
8
+ import json, subprocess, os, sys, time, argparse
9
+ ap = argparse.ArgumentParser(); ap.add_argument('manifest')
10
+ ap.add_argument('--offload-mode', default=None); ap.add_argument('--carry', type=int, default=2)
11
+ ap.add_argument('--stitch-out', default='/workspace/ltx_full_seamless.mp4'); a = ap.parse_args()
12
+ PY='/workspace/LTX-2/.venv/bin/python'
13
+ CK='/workspace/models/LTX-2.3/ltx-2.3-22b-distilled.safetensors'
14
+ UP='/workspace/models/LTX-2.3/ltx-2.3-spatial-upscaler-x2-1.1.safetensors'
15
+ LORA='/workspace/models/loras/ltx-2.3-22b-ic-lora-colorization-0.9.safetensors'
16
+ GEMMA='/workspace/models/LTX-2'
17
+ manifest = json.load(open(a.manifest))
18
+ os.makedirs('/workspace/ltx_co_out', exist_ok=True); os.makedirs('/tmp/carry', exist_ok=True)
19
+
20
+ def total_frames(v):
21
+ r = subprocess.run(['ffprobe','-v','quiet','-select_streams','v:0','-count_packets','-show_entries','stream=nb_read_packets','-of','csv=p=0',v],capture_output=True,text=True)
22
+ try: return int(r.stdout.strip())
23
+ except: return 81
24
+
25
+ def extract_frame(v, idx, out):
26
+ subprocess.run(['ffmpeg','-y','-i',v,'-vf',f'select=eq(n\\,{idx})','-vsync','0','-frames:v','1',out],capture_output=True)
27
+ return os.path.exists(out)
28
+
29
+ prev_out=None; rendered=[]
30
+ for i,w in enumerate(manifest):
31
+ tw=time.time(); imgs=[]
32
+ if prev_out and not w.get('cut_at_start'):
33
+ tf=total_frames(prev_out)
34
+ for ci in range(a.carry): # laatste frame -> pos 0, voorlaatste -> pos 1
35
+ idx=tf-1-ci; cf=f'/tmp/carry/c{ci}.png'
36
+ if extract_frame(prev_out, idx, cf):
37
+ imgs.append((cf, ci, round(0.85-ci*0.20,2))) # pos0=laatste(weight.85), pos1=voorlaatste(.65)
38
+ imgs.append((w['keyframe'], w.get('kf_pos',40), 1.0))
39
+ cmd=[PY,'-m','ltx_pipelines.ic_lora','--distilled-checkpoint-path',CK,'--spatial-upsampler-path',UP,
40
+ '--gemma-root',GEMMA,'--lora',LORA,'0.85','--video-conditioning',w['gray'],'1.0',
41
+ '--width','1920','--height','1088','--num-frames','81','--frame-rate','24','--seed','42',
42
+ '--skip-stage-2','--output-path',w['out'],'--prompt',w['prompt']]
43
+ if a.offload_mode: cmd+=['--offload-mode',a.offload_mode]
44
+ for (p,pos,wt) in imgs: cmd+=['--image',p,str(pos),str(wt)]
45
+ print(f"[{i+1}/{len(manifest)}] {os.path.basename(w['out'])} carry={len(imgs)-1} ...",flush=True)
46
+ r=subprocess.run(cmd,capture_output=True,text=True)
47
+ if not os.path.exists(w['out']):
48
+ print(f"FOUT venster {i}: {r.stderr[-400:]}",flush=True); sys.exit(1)
49
+ prev_out=w['out']; rendered.append(w['out'])
50
+ print(f"[{i+1}] klaar ({round(time.time()-tw)}s)",flush=True)
51
+ # stitch (concat; crossfade optioneel later)
52
+ lst='/workspace/stitch.txt'; open(lst,'w').write('\n'.join(f"file '{p}'" for p in rendered))
53
+ subprocess.run(['ffmpeg','-y','-f','concat','-safe','0','-i',lst,'-c:v','libx264','-crf','18','-pix_fmt','yuv420p','-r','30',a.stitch_out],capture_output=True)
54
+ print(f"STITCH_DONE -> {a.stitch_out}",flush=True); print("ALL_DONE",flush=True)
ltx_seamless_v2.py ADDED
@@ -0,0 +1,212 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """ltx_seamless_v2.py -- Geintegreerde re-render met alle fixes (29 jun 2026).
3
+
4
+ FIXES vs v1:
5
+ P2 (kleur-lag): scene-cut-aware manifest (extra_anchors voor mid-cut vensters,
6
+ cut_at_start=True voor vroege cuts). Lag 52f -> <=5f per scene-grens.
7
+ P3 (RGB-speckle): dark-flat neutralize op keyframes voor conditioning:
8
+ pixels met Y<80 & lokale_std<12 -> R=G=B=Y. Doodt chroma-seed in donkere vlakken.
9
+ P4 (wagon-flikker): ref_003541.png als extra_anchor op pos 60 voor w43 (via manifest).
10
+
11
+ P1 (resolutie): --skip-stage-2 BEHOUDEN. Post-hoc SeedVR2 op RTX 5080
12
+ met --color_correction lab (bewaart palet 1:1, gratis lokale GPU).
13
+
14
+ PARALLEL-KLAAR:
15
+ 5 scenes (w0-w8, w9-w22, w23-w36, w37-w50, w51-w66).
16
+ Render subset: --scene N (render alle vensters van scene N).
17
+ Langste scene: 16 vensters (~17 min). N kaarten -> Nx sneller.
18
+
19
+ Gebruik:
20
+ python3 ltx_seamless_v2.py manifest.json
21
+ python3 ltx_seamless_v2.py manifest.json --scene 3 # alleen scene 3
22
+ python3 ltx_seamless_v2.py manifest.json --first-window 20 # resume vanaf w20
23
+ """
24
+ import json, subprocess, os, sys, time, argparse, tempfile
25
+ import numpy as np
26
+
27
+ ap = argparse.ArgumentParser()
28
+ ap.add_argument('manifest')
29
+ ap.add_argument('--offload-mode', default=None)
30
+ ap.add_argument('--carry', type=int, default=2, help='Aantal carry-over frames')
31
+ ap.add_argument('--stitch-out', default='/workspace/ltx_full_v3.mp4')
32
+ ap.add_argument('--scene', type=int, default=-1, help='Render alleen scene N (-1 = alle)')
33
+ ap.add_argument('--first-window', type=int, default=0, help='Start bij venster N (resume)')
34
+ a = ap.parse_args()
35
+
36
+ PY = '/workspace/LTX-2/.venv/bin/python'
37
+ CK = '/workspace/models/LTX-2.3/ltx-2.3-22b-distilled.safetensors'
38
+ UP = '/workspace/models/LTX-2.3/ltx-2.3-spatial-upscaler-x2-1.1.safetensors'
39
+ LORA = '/workspace/models/loras/ltx-2.3-22b-ic-lora-colorization-0.9.safetensors'
40
+ GEMMA = '/workspace/models/LTX-2'
41
+
42
+ manifest_all = json.load(open(a.manifest))
43
+
44
+ # ── Filter op scene / first-window ───────────────────────────────────────────
45
+ if a.scene >= 0:
46
+ manifest_all = [w for w in manifest_all if w.get('scene_id', 0) == a.scene]
47
+ if not manifest_all:
48
+ print(f'FOUT: scene {a.scene} niet gevonden in manifest', flush=True)
49
+ sys.exit(1)
50
+ print(f'[DRIVER] Scene {a.scene}: {len(manifest_all)} vensters', flush=True)
51
+
52
+ if a.first_window > 0:
53
+ # find index within filtered manifest
54
+ skip = sum(1 for w in manifest_all if int(w['out'].split('/w')[-1].split('.mp4')[0]) < a.first_window)
55
+ manifest_all = manifest_all[skip:]
56
+ print(f'[DRIVER] Resume vanaf w{a.first_window} ({len(manifest_all)} vensters resterend)', flush=True)
57
+
58
+ os.makedirs('/workspace/ltx_co_out', exist_ok=True)
59
+ os.makedirs('/tmp/carry', exist_ok=True)
60
+ os.makedirs('/tmp/kf_proc', exist_ok=True)
61
+
62
+ # ── Helpers ───────────────────────────────────────────────────────────────────
63
+ def total_frames(v):
64
+ r = subprocess.run(
65
+ ['ffprobe', '-v', 'quiet', '-select_streams', 'v:0', '-count_packets',
66
+ '-show_entries', 'stream=nb_read_packets', '-of', 'csv=p=0', v],
67
+ capture_output=True, text=True)
68
+ try:
69
+ return int(r.stdout.strip())
70
+ except Exception:
71
+ return 81
72
+
73
+ def extract_frame(v, idx, out):
74
+ subprocess.run(
75
+ ['ffmpeg', '-y', '-i', v, '-vf', f'select=eq(n\\,{idx})',
76
+ '-vsync', '0', '-frames:v', '1', out],
77
+ capture_output=True)
78
+ return os.path.exists(out)
79
+
80
+ def dark_flat_neutralize(img_path, out_path, y_thresh=80, std_thresh=12, patch=8):
81
+ """P3: pixels met Y<y_thresh en lokale_std<std_thresh -> R=G=B=Y (gray).
82
+ Pure numpy via sliding_window_view (numpy>=1.20). Lokale range als std-proxy.
83
+ """
84
+ try:
85
+ from PIL import Image
86
+ except ImportError:
87
+ import shutil
88
+ shutil.copy(img_path, out_path)
89
+ return
90
+ from numpy.lib.stride_tricks import sliding_window_view
91
+ img = np.array(Image.open(img_path).convert('RGB'), dtype=np.float32)
92
+ Y = 0.299 * img[:, :, 0] + 0.587 * img[:, :, 1] + 0.114 * img[:, :, 2]
93
+ # Lokale range (max-min over patch) als proxy voor std
94
+ # Asymmetrische padding voor even patch-grootte: (k-1)/2 links, k/2 rechts
95
+ p0, p1 = patch // 2 - 1, patch // 2 # bijv. patch=8 -> (3,4)
96
+ Y_pad = np.pad(Y, ((p0, p1), (p0, p1)), mode='reflect')
97
+ # sliding_window_view(H+k-1, k) -> (H, k) per dimensie -> shape (H, W, patch, patch)
98
+ wins = sliding_window_view(Y_pad, (patch, patch))
99
+ local_range = wins.max(axis=(-1, -2)) - wins.min(axis=(-1, -2))
100
+ # Masker: donker EN vlak (range < 2*std_thresh ≈ 95e percentiel flat check)
101
+ mask = (Y < y_thresh) & (local_range < std_thresh * 2)
102
+ for c in range(3):
103
+ img[:, :, c] = np.where(mask, Y, img[:, :, c])
104
+ Image.fromarray(img.astype(np.uint8)).save(out_path)
105
+
106
+ def process_keyframe(kf_path):
107
+ """Verwerk keyframe met P3 dark-flat neutralize. Returneer pad naar processed versie."""
108
+ fname = os.path.basename(kf_path)
109
+ out_path = f'/tmp/kf_proc/{fname}'
110
+ if not os.path.exists(out_path):
111
+ dark_flat_neutralize(kf_path, out_path)
112
+ return out_path
113
+
114
+ # ── Render loop ───────────────────────────────────────────────────────────────
115
+ prev_out = None
116
+ rendered = []
117
+ t_start = time.time()
118
+
119
+ for i, w in enumerate(manifest_all):
120
+ tw = time.time()
121
+ wi_num = int(w['out'].split('/w')[-1].split('.mp4')[0])
122
+
123
+ # Als dit venster al bestaat, skip (resume support)
124
+ if os.path.exists(w['out']) and os.path.getsize(w['out']) > 10000:
125
+ print(f'[{i+1}/{len(manifest_all)}] w{wi_num} al klaar, skip', flush=True)
126
+ prev_out = w['out']
127
+ rendered.append(w['out'])
128
+ continue
129
+
130
+ imgs = [] # (path, pos, weight)
131
+
132
+ # Carry-over: laatste frames van vorig venster
133
+ if prev_out and not w.get('cut_at_start'):
134
+ tf = total_frames(prev_out)
135
+ for ci in range(a.carry):
136
+ idx = tf - 1 - ci
137
+ cf = f'/tmp/carry/c{ci}.png'
138
+ if extract_frame(prev_out, idx, cf):
139
+ # pos 0 = laatste frame (weight 0.85), pos 1 = voorlaatste (0.65)
140
+ imgs.append((cf, ci, round(0.85 - ci * 0.20, 2)))
141
+
142
+ # Primaire keyframe (P3: dark-flat verwerkt)
143
+ kf_proc = process_keyframe(w['keyframe'])
144
+ imgs.append((kf_proc, w.get('kf_pos', 40), 1.0))
145
+
146
+ # Extra anchors voor mid-window scene cuts (P2 / P4)
147
+ for anchor in w.get('extra_anchors', []):
148
+ anc_proc = process_keyframe(anchor['path'])
149
+ imgs.append((anc_proc, anchor['pos'], anchor['weight']))
150
+
151
+ # Bouw CLI-commando
152
+ cmd = [
153
+ PY, '-m', 'ltx_pipelines.ic_lora',
154
+ '--distilled-checkpoint-path', CK,
155
+ '--spatial-upsampler-path', UP,
156
+ '--gemma-root', GEMMA,
157
+ '--lora', LORA, '0.85',
158
+ '--video-conditioning', w['gray'], '1.0',
159
+ '--width', '1920', '--height', '1088',
160
+ '--num-frames', '81',
161
+ '--frame-rate', '24',
162
+ '--seed', '42',
163
+ '--skip-stage-2', # P1: SeedVR2 post-hoc op RTX 5080
164
+ '--output-path', w['out'],
165
+ '--prompt', w['prompt'],
166
+ ]
167
+ if a.offload_mode:
168
+ cmd += ['--offload-mode', a.offload_mode]
169
+
170
+ # Alle conditioning images (carry-over + keyframe + anchors)
171
+ for (p, pos, wt) in imgs:
172
+ cmd += ['--image', p, str(pos), str(wt)]
173
+
174
+ n_carry = len([x for x in imgs if x[1] < 2 and x[2] < 1.0])
175
+ n_anchors = len(w.get('extra_anchors', []))
176
+ scene_id = w.get('scene_id', '?')
177
+ print(f'[{i+1}/{len(manifest_all)}] w{wi_num} scene={scene_id} '
178
+ f'carry={n_carry} anchors={n_anchors} ...', flush=True)
179
+
180
+ r = subprocess.run(cmd, capture_output=True, text=True)
181
+
182
+ if not os.path.exists(w['out']):
183
+ print(f'FOUT venster w{wi_num}:\n{r.stderr[-600:]}', flush=True)
184
+ sys.exit(1)
185
+
186
+ elapsed = round(time.time() - tw)
187
+ total_elapsed = round(time.time() - t_start)
188
+ remaining = len(manifest_all) - i - 1
189
+ eta_s = remaining * elapsed
190
+ print(f'[{i+1}/{len(manifest_all)}] w{wi_num} klaar ({elapsed}s | '
191
+ f'ETA {eta_s//60}min {eta_s%60}s)', flush=True)
192
+
193
+ prev_out = w['out']
194
+ rendered.append(w['out'])
195
+
196
+ # ── Stitch ────────────────────────────────────────────────────────────────────
197
+ if len(rendered) > 1:
198
+ lst = '/workspace/stitch_v3.txt'
199
+ with open(lst, 'w') as f:
200
+ f.write('\n'.join("file '%s'" % p for p in rendered))
201
+ subprocess.run(
202
+ ['ffmpeg', '-y', '-f', 'concat', '-safe', '0', '-i', lst,
203
+ '-c:v', 'libx264', '-crf', '18', '-pix_fmt', 'yuv420p', '-r', '30',
204
+ a.stitch_out],
205
+ capture_output=True)
206
+ total_time = round(time.time() - t_start)
207
+ print(f'STITCH_DONE -> {a.stitch_out} ({total_time//60}min {total_time%60}s totaal)',
208
+ flush=True)
209
+ elif len(rendered) == 1:
210
+ print(f'Enkel venster klaar: {rendered[0]}', flush=True)
211
+
212
+ print('ALL_DONE', flush=True)
mem_snap.py ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Quick CUDA memory snapshot after window 1 encode_video to find the 44GB holder."""
2
+ import sys, os, gc, json, pickle, gzip
3
+ sys.path.insert(0, '/workspace/LTX-2/packages/ltx-pipelines/src')
4
+ sys.path.insert(0, '/workspace/LTX-2/packages/ltx-core/src')
5
+
6
+ import torch
7
+
8
+ # Find all GPU tensors >= 1GB, print shape + data_ptr + storage_size
9
+ def dump_big_gpu_tensors(label):
10
+ print(f"\n=== {label} === VRAM={torch.cuda.memory_allocated()//1024**3}GB ===", flush=True)
11
+ big = []
12
+ for obj in gc.get_objects():
13
+ try:
14
+ if isinstance(obj, torch.Tensor) and obj.device.type == 'cuda':
15
+ gb = obj.untyped_storage().nbytes() / 1024**3
16
+ if gb > 1.0:
17
+ big.append((gb, obj.shape, hex(obj.data_ptr()), obj.dtype))
18
+ except Exception:
19
+ pass
20
+ big.sort(reverse=True)
21
+ total = sum(g for g, *_ in big)
22
+ print(f" {len(big)} tensors >= 1GB, total={total:.1f}GB", flush=True)
23
+ for gb, shape, ptr, dt in big[:10]:
24
+ print(f" {gb:.2f}GB {list(shape)} {dt} ptr={ptr}", flush=True)
25
+ return total
26
+
27
+ # Use torch's memory snapshot
28
+ def take_snapshot(path):
29
+ torch.cuda.synchronize()
30
+ snap = torch.cuda.memory._snapshot()
31
+ # find largest active segments
32
+ segments = snap.get('segments', [])
33
+ active = []
34
+ for seg in segments:
35
+ for blk in seg.get('blocks', []):
36
+ if blk.get('state') == 'active_allocated':
37
+ sz = blk.get('size', 0)
38
+ if sz > 500 * 1024**2: # > 500MB
39
+ trace = blk.get('frames', [])
40
+ trace_str = ' -> '.join(f"{f.get('name','?')}({f.get('filename','?')}:{f.get('line','?')})" for f in trace[-5:])
41
+ active.append((sz / 1024**3, trace_str))
42
+ active.sort(reverse=True)
43
+ print(f"\n=== SNAPSHOT {path}: {len(active)} blocks >= 500MB ===", flush=True)
44
+ for gb, trace in active[:20]:
45
+ print(f" {gb:.2f}GB | {trace}", flush=True)
46
+
vae_diag.py ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Diagnostic: what holds 45GB after window 1 encode_video?"""
2
+ import os, gc, sys, time
3
+ os.environ.setdefault('PYTORCH_ALLOC_CONF', 'expandable_segments:True')
4
+ os.environ.setdefault('PYTORCH_CUDA_ALLOC_CONF', 'expandable_segments:True')
5
+ import torch
6
+
7
+ sys.path.insert(0, '/workspace/LTX-2/packages/ltx-pipelines/src')
8
+ sys.path.insert(0, '/workspace/LTX-2/packages/ltx-core/src')
9
+
10
+ from ltx_pipelines.ic_lora import ICLoraPipeline
11
+ from ltx_pipelines.utils.args import ImageConditioningInput
12
+ from ltx_core.loader import LoraPathStrengthAndSDOps, LTXV_LORA_COMFY_RENAMING_MAP
13
+ from ltx_core.model.video_vae import TilingConfig, get_video_chunks_number
14
+ from ltx_pipelines.utils.media_io import encode_video
15
+ from ltx_pipelines.utils.types import OffloadMode
16
+ import optimum.quanto as oq
17
+
18
+ CK = '/workspace/models/LTX-2.3/ltx-2.3-22b-distilled.safetensors'
19
+ UP = '/workspace/models/LTX-2.3/ltx-2.3-spatial-upscaler-x2-1.1.safetensors'
20
+ LORA = '/workspace/models/loras/ltx-2.3-22b-ic-lora-colorization-0.9.safetensors'
21
+ GEMMA = '/workspace/models/LTX-2'
22
+
23
+ print("[DIAG] Pipeline laden...", flush=True)
24
+ pipe = ICLoraPipeline(
25
+ distilled_checkpoint_path=CK,
26
+ spatial_upsampler_path=UP,
27
+ gemma_root=GEMMA,
28
+ loras=(LoraPathStrengthAndSDOps(LORA, 1.0, LTXV_LORA_COMFY_RENAMING_MAP),),
29
+ quantization=None,
30
+ compilation_config=None,
31
+ offload_mode=OffloadMode('none'),
32
+ )
33
+ print(f"[DIAG] Pipeline geladen, VRAM={torch.cuda.memory_allocated()//1024**3}GB", flush=True)
34
+
35
+ # Prompt cache
36
+ with torch.no_grad():
37
+ _ctx = pipe.prompt_encoder(["Cinematic black and white silent film, high contrast"], enhance_first_prompt=False, enhance_prompt_seed=42)[0]
38
+ pipe.prompt_encoder = lambda prompts, **kw: [_ctx]
39
+ gc.collect(); torch.cuda.empty_cache()
40
+ print(f"[DIAG] Gemma freed, VRAM={torch.cuda.memory_allocated()//1024**3}GB", flush=True)
41
+
42
+ # fp8 DiT
43
+ from contextlib import contextmanager
44
+ stage = pipe.stage_1
45
+ _pre_built_dit = stage._build_transformer()
46
+ vram_bf16 = torch.cuda.memory_allocated() // 1024**3
47
+ oq.quantize(_pre_built_dit, weights=oq.qfloat8)
48
+ # Fix stale refs (TransformerArgsPreprocessor)
49
+ _vm = _pre_built_dit.velocity_model
50
+ _id_map = {}
51
+ for _a in dir(_vm):
52
+ if not _a.startswith('_'):
53
+ _o = getattr(_vm, _a, None)
54
+ if isinstance(_o, torch.nn.Linear):
55
+ _id_map[id(_o)] = _a
56
+
57
+ def _fix(obj, vm, id_map, depth=0):
58
+ if depth > 6: return
59
+ for k, v in list(getattr(obj, '__dict__', {}).items()):
60
+ if isinstance(v, torch.nn.Linear) and getattr(v, 'weight', True) is None:
61
+ a = id_map.get(id(v))
62
+ if a:
63
+ setattr(obj, k, getattr(vm, a, None))
64
+ elif not isinstance(v, (torch.nn.Module, torch.Tensor)) and hasattr(v, '__dict__'):
65
+ _fix(v, vm, id_map, depth+1)
66
+
67
+ for _p in [_vm.video_args_preprocessor, getattr(_vm, 'audio_args_preprocessor', None)]:
68
+ if _p: _fix(_p, _vm, _id_map)
69
+ oq.freeze(_pre_built_dit)
70
+ gc.collect(); torch.cuda.empty_cache()
71
+ vram_fp8 = torch.cuda.memory_allocated() // 1024**3
72
+ print(f"[DIAG] DiT fp8: {vram_fp8}GB (was bf16 {vram_bf16}GB)", flush=True)
73
+
74
+ @contextmanager
75
+ def _ctx_mgr(**kw):
76
+ yield _pre_built_dit
77
+ gc.collect(); torch.cuda.empty_cache()
78
+
79
+ stage._transformer_ctx = _ctx_mgr
80
+ pipe.stage_2._transformer_ctx = _ctx_mgr
81
+
82
+ # Tiled encode patch
83
+ import ltx_pipelines.iclora_utils as _icu
84
+ import ltx_pipelines.ic_lora as _icl
85
+ from ltx_core.model.video_vae.tiling import SpatialTilingConfig as _STC, TemporalTilingConfig as _TTC
86
+ _TILE = TilingConfig(spatial_config=_STC(512, 64), temporal_config=_TTC(80, 24))
87
+ _orig = _icu.append_ic_lora_reference_video_conditionings
88
+ _icu.append_ic_lora_reference_video_conditionings = lambda *a, tiling_config=None, **kw: _orig(*a, tiling_config=_TILE, **kw)
89
+ _icl.append_ic_lora_reference_video_conditionings = _icu.append_ic_lora_reference_video_conditionings
90
+
91
+ # Run window 0
92
+ import json
93
+ with open('/workspace/ltx_co_manifest.json') as f:
94
+ w = json.load(f)[0]
95
+
96
+ tiling = TilingConfig.default()
97
+ imgs = [ImageConditioningInput(path=w['keyframe'], frame_idx=w.get('kf_pos', 40), strength=1.0)]
98
+ print(f"[DIAG] Render venster 0...", flush=True)
99
+ with torch.no_grad():
100
+ video, audio = pipe(
101
+ prompt=w['prompt'], seed=42, height=1088, width=1920, num_frames=81, frame_rate=24,
102
+ images=imgs, video_conditioning=[(w['gray'], 1.0)], tiling_config=tiling,
103
+ conditioning_attention_strength=1.0, skip_stage_2=True, conditioning_attention_mask=None,
104
+ )
105
+ print(f"[DIAG] Pipe klaar, VRAM={torch.cuda.memory_allocated()//1024**3}GB", flush=True)
106
+
107
+ import os
108
+ os.makedirs(os.path.dirname(w['out']), exist_ok=True)
109
+ encode_video(video=video, fps=24, audio=audio, output_path=w['out'],
110
+ video_chunks_number=get_video_chunks_number(81, tiling))
111
+ print(f"[DIAG] encode_video klaar, VRAM={torch.cuda.memory_allocated()//1024**3}GB", flush=True)
112
+
113
+ del video, audio
114
+ gc.collect(); torch.cuda.empty_cache()
115
+ print(f"[DIAG] Na del+gc, VRAM={torch.cuda.memory_allocated()//1024**3}GB", flush=True)
116
+
117
+ # DIAGNOSTIEK: wat houdt CUDA memory?
118
+ print(f"\n[DIAG] === CUDA GEHEUGEN ANALYSE ===", flush=True)
119
+ print(f"allocated={torch.cuda.memory_allocated()//1024**3}GB reserved={torch.cuda.memory_reserved()//1024**3}GB", flush=True)
120
+
121
+ # Scan pipe.video_decoder
122
+ print("\n[DIAG] pipe.video_decoder module scan:", flush=True)
123
+ vd = pipe.video_decoder
124
+ total_vd = 0
125
+ for name, m in vd.named_modules():
126
+ # Parameters
127
+ p_sizes = [(n, p.numel()*p.element_size()//1024**2) for n,p in m.named_parameters(recurse=False) if p is not None and p.is_cuda]
128
+ b_sizes = [(n, b.numel()*b.element_size()//1024**2) for n,b in m.named_buffers(recurse=False) if b is not None and b.is_cuda]
129
+ # Also scan __dict__ for cached tensors
130
+ dict_sizes = []
131
+ for k, v in m.__dict__.items():
132
+ if isinstance(v, torch.Tensor) and v.is_cuda:
133
+ sz = v.numel() * v.element_size() // 1024**2
134
+ dict_sizes.append((k, sz))
135
+ elif isinstance(v, list):
136
+ for item in v:
137
+ if isinstance(item, torch.Tensor) and item.is_cuda:
138
+ sz = item.numel() * item.element_size() // 1024**2
139
+ dict_sizes.append((f'{k}[]', sz))
140
+ total_m = sum(s for _,s in p_sizes+b_sizes+dict_sizes)
141
+ if total_m > 100: # > 100MB
142
+ total_vd += total_m
143
+ print(f" {name or 'root'}: {total_m}MB", flush=True)
144
+ for n, s in p_sizes+b_sizes+dict_sizes:
145
+ if s > 10:
146
+ print(f" .{n}: {s}MB", flush=True)
147
+
148
+ print(f"\n[DIAG] Total in video_decoder: ~{total_vd}MB", flush=True)
149
+
150
+ # Scan pipe.stage_1 (NOT the DiT)
151
+ print("\n[DIAG] pipe.stage_1 non-DiT scan:", flush=True)
152
+ stage1 = pipe.stage_1
153
+ for attr in dir(stage1):
154
+ if attr.startswith('_'): continue
155
+ try:
156
+ v = getattr(stage1, attr)
157
+ if isinstance(v, torch.Tensor) and v.is_cuda:
158
+ print(f" stage_1.{attr}: {v.numel()*v.element_size()//1024**2}MB shape={list(v.shape)}", flush=True)
159
+ elif isinstance(v, torch.nn.Module):
160
+ sz = sum(p.numel()*p.element_size() for p in v.parameters() if p.is_cuda) // 1024**2
161
+ if sz > 100:
162
+ print(f" stage_1.{attr}: ~{sz}MB (nn.Module)", flush=True)
163
+ except Exception:
164
+ pass
165
+
166
+ print("\n[DIAG] KLAAR", flush=True)