Skip to content

Commit e0f90fc

Browse files
committed
Make handling add_in less weird
1 parent 196171c commit e0f90fc

File tree

3 files changed

+27
-31
lines changed

3 files changed

+27
-31
lines changed

auto_editor/edit.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ def edit_media(
223223
cmd.extend([os.path.join(temp, f"{s}s.{sub.ext}")])
224224
ffmpeg.run(cmd)
225225

226-
tl = make_timeline(sources, ffmpeg, ensure, args, samplerate, bar, temp, log)
226+
tl = make_timeline(sources, ensure, args, samplerate, bar, temp, log)
227227

228228
if export["export"] == "timeline":
229229
from auto_editor.formats.json import make_json_timeline

auto_editor/make_layers.py

+21-26
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import numpy as np
77

88
from auto_editor.analyze import FileSetup, Levels
9-
from auto_editor.ffwrapper import FFmpeg, FileInfo
9+
from auto_editor.ffwrapper import FileInfo
1010
from auto_editor.lang.palet import Lexer, Parser, env, interpret, is_boolarr
1111
from auto_editor.lib.data_structs import print_str
1212
from auto_editor.lib.err import MyError
@@ -121,9 +121,18 @@ def make_sane_timebase(fps: Fraction) -> Fraction:
121121
return tb
122122

123123

124+
def parse_time(val: str, arr: NDArray, tb: Fraction) -> int: # raises: `CoerceError`
125+
if val == "start":
126+
return 0
127+
if val == "end":
128+
return len(arr)
129+
130+
num = time(val, tb)
131+
return num if num >= 0 else num + len(arr)
132+
133+
124134
def make_timeline(
125135
sources: list[FileInfo],
126-
ffmpeg: FFmpeg,
127136
ensure: Ensure,
128137
args: Args,
129138
sr: int,
@@ -140,6 +149,7 @@ def make_timeline(
140149
inp.get_fps() if args.frame_rate is None else args.frame_rate
141150
)
142151
res = inp.get_res() if args.resolution is None else args.resolution
152+
143153
try:
144154
start_margin = time(args.margin[0], tb)
145155
end_margin = time(args.margin[1], tb)
@@ -176,36 +186,21 @@ def get_speed_index(speed: float) -> int:
176186
speed_hash[len(speed_map) - 1] = speed
177187
return len(speed_map) - 1
178188

179-
def parse_time(val: str, arr: NDArray) -> int:
180-
if val == "start":
181-
return 0
182-
if val == "end":
183-
return len(arr)
184-
try:
185-
num = time(val, tb)
186-
return num if num >= 0 else num + len(arr)
187-
except CoerceError as e:
188-
log.error(e)
189-
190-
def mut_set_range(arr: NDArray, _ranges: list[list[str]], index: float) -> None:
191-
for _range in _ranges:
192-
assert len(_range) == 2
193-
pair = [parse_time(val, arr) for val in _range]
194-
arr[pair[0] : pair[1]] = index
195-
196189
try:
197-
if len(args.cut_out) > 0:
190+
for _range in args.cut_out:
198191
# always cut out even if 'silent_speed' is not 99,999
199-
mut_set_range(speed_index, args.cut_out, get_speed_index(99_999))
192+
pair = [parse_time(val, speed_index, tb) for val in _range]
193+
speed_index[pair[0] : pair[1]] = get_speed_index(99_999)
200194

201-
if len(args.add_in) > 0:
195+
for _range in args.add_in:
202196
# set to 'video_speed' index
203-
mut_set_range(speed_index, args.add_in, 1.0)
197+
pair = [parse_time(val, speed_index, tb) for val in _range]
198+
speed_index[pair[0] : pair[1]] = 1
204199

205200
for speed_range in args.set_speed_for_range:
206-
speed = speed_range[0]
207-
_range = list(speed_range[1:])
208-
mut_set_range(speed_index, [_range], get_speed_index(speed))
201+
start_in = parse_time(speed_range[1], speed_index, tb)
202+
end_in = parse_time(speed_range[2], speed_index, tb)
203+
speed_index[start_in:end_in] = get_speed_index(speed_range[0])
209204
except CoerceError as e:
210205
log.error(e)
211206

auto_editor/utils/types.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,9 @@ def margin(val: str) -> tuple[str, str]:
164164
return vals[0], vals[1]
165165

166166

167-
def time_range(val: str) -> list[str]:
168-
return _comma_coerce("time_range", val, 2)
167+
def time_range(val: str) -> tuple[str, str]:
168+
a = _comma_coerce("time_range", val, 2)
169+
return a[0], a[1]
169170

170171

171172
def speed_range(val: str) -> tuple[float, str, str]:
@@ -231,8 +232,8 @@ class Args:
231232
extras: str | None = None
232233
sn: bool = False
233234
no_seek: bool = False
234-
cut_out: list[list[str]] = field(default_factory=list)
235-
add_in: list[list[str]] = field(default_factory=list)
235+
cut_out: list[tuple[str, str]] = field(default_factory=list)
236+
add_in: list[tuple[str, str]] = field(default_factory=list)
236237
set_speed_for_range: list[tuple[float, str, str]] = field(default_factory=list)
237238
frame_rate: Fraction | None = None
238239
sample_rate: int | None = None

0 commit comments

Comments
 (0)