-local fade_chains = {}
-for input0_type, input0_live in pairs({static = false, live = true, livedeint = true}) do
- local input0_deint = (input0_live == "livedeint")
- fade_chains[input0_type] = {}
- for input1_type, input1_live in pairs({static = false, live = true, livedeint = true}) do
- local input1_deint = (input1_live == "livedeint")
- fade_chains[input0_type][input1_type] = {}
- for _, hq in pairs({true, false}) do
- fade_chains[input0_type][input1_type][hq] =
- make_fade_chain(input0_live, input0_deint, input1_live, input1_deint, hq)
- end
- end
-end
+local fade_chains = make_cartesian_product({
+ {"static", "live", "livedeint"}, -- input0_type
+ {true, false}, -- input0_scale
+ {"static", "live", "livedeint"}, -- input1_type
+ {true, false}, -- input1_scale
+ {true} -- hq
+}, function(input0_type, input0_scale, input1_type, input1_scale, hq)
+ local input0_live = (input0_type ~= "static")
+ local input1_live = (input1_type ~= "static")
+ local input0_deint = (input0_type == "livedeint")
+ local input1_deint = (input1_type == "livedeint")
+ return make_fade_chain(input0_live, input0_deint, input0_scale, input1_live, input1_deint, input1_scale, hq)
+end)