return (signals:get_width(signal_num) ~= width or signals:get_height(signal_num) ~= height)
end
-function set_scale_parameters_if_needed(scene_or_input, signals, signal_num, width, height)
+function set_scale_parameters_if_needed(scene, signals, signal_num, width, height, hq)
if needs_scale(signals, signal_num, width, height) then
if hq then
- scene_or_input.resample_effect:choose(ResampleEffect) -- High-quality resampling.
+ scene.resample_effect:choose(ResampleEffect) -- High-quality resampling.
else
- scene_or_input.resample_effect:choose(ResizeEffect) -- Low-quality resampling.
+ scene.resample_effect:choose(ResizeEffect) -- Low-quality resampling.
end
- scene_or_input.resample_effect:set_int("width", width)
- scene_or_input.resample_effect:set_int("height", height)
+ scene.resample_effect:set_int("width", width)
+ scene.resample_effect:set_int("height", height)
else
- scene_or_input.resample_effect:disable()
+ scene.resample_effect:disable()
end
end
if state.transition_type == ZOOM_TRANSITION then
-- Transition in or out of SBS.
sbs_scene.input0.overlay.overlay_effect:enable_if(state.overlay_enabled)
- prepare_sbs_scene(state, sbs_scene, calc_zoom_progress(t), state.transition_type, state.transition_src_signal, state.transition_dst_signal, width, height, input_resolution)
+ prepare_sbs_scene(state, sbs_scene, calc_zoom_progress(t), state.transition_type, state.transition_src_signal, state.transition_dst_signal, width, height, input_resolution, true)
prepare_overlay_live(state, sbs_scene, t, 1.0)
return sbs_scene.scene
elseif state.transition_type == NO_TRANSITION and state.live_signal_num == SBS_SIGNAL_NUM then
-- Static SBS view.
sbs_scene.input0.overlay.overlay_effect:enable_if(state.overlay_enabled)
- prepare_sbs_scene(state, sbs_scene, 0.0, NO_TRANSITION, 0, SBS_SIGNAL_NUM, width, height, input_resolution)
+ prepare_sbs_scene(state, sbs_scene, 0.0, NO_TRANSITION, 0, SBS_SIGNAL_NUM, width, height, input_resolution, true)
prepare_overlay_live(state, sbs_scene, t, 1.0)
return sbs_scene.scene
elseif state.transition_type == FADE_TRANSITION then
if state.stinger_in_progress then
stinger_scene.overlay.overlay_effect:enable_if(overlay_really_enabled)
stinger_scene.input:display(state.live_signal_num)
- set_scale_parameters_if_needed(stinger_scene, signals, state.live_signal_num, width, height)
+ set_scale_parameters_if_needed(stinger_scene, signals, state.live_signal_num, width, height, true)
set_neutral_color_from_signal(state, stinger_scene.wb_effect, state.live_signal_num)
stinger_scene.stinger_input:display(stinger_images[state.stinger_frame])
else
simple_scene.overlay.overlay_effect:enable_if(overlay_really_enabled)
simple_scene.input:display(state.live_signal_num)
- set_scale_parameters_if_needed(simple_scene, signals, state.live_signal_num, width, height)
+ set_scale_parameters_if_needed(simple_scene, signals, state.live_signal_num, width, height, true)
set_neutral_color_from_signal(state, simple_scene.wb_effect, state.live_signal_num)
prepare_overlay_live(state, simple_scene, t, 1.0)
return simple_scene.scene
local signal_num = num - 2
simple_scene.overlay.overlay_effect:enable_if(show_overlay)
simple_scene.input:display(signal_num)
- set_scale_parameters_if_needed(simple_scene, signals, signal_num, width, height)
+ set_scale_parameters_if_needed(simple_scene, signals, signal_num, width, height, false)
set_neutral_color_from_signal(state, simple_scene.wb_effect, signal_num)
prepare_overlay_static(simple_scene, t)
return simple_scene.scene
end
if num == SBS_SIGNAL_NUM + 2 then
sbs_scene.input0.overlay.overlay_effect:enable_if(show_overlay)
- prepare_sbs_scene(state, sbs_scene, 0.0, NO_TRANSITION, 0, SBS_SIGNAL_NUM, width, height, input_resolution)
+ prepare_sbs_scene(state, sbs_scene, 0.0, NO_TRANSITION, 0, SBS_SIGNAL_NUM, width, height, input_resolution, false)
return sbs_scene.scene
end
if num == STATIC_SIGNAL_NUM + 2 then
}
end
-function prepare_sbs_scene(state, scene, t, transition_type, src_signal, dst_signal, screen_width, screen_height, input_resolution)
+function prepare_sbs_scene(state, scene, t, transition_type, src_signal, dst_signal, screen_width, screen_height, input_resolution, hq)
scene.input0.input:display(0)
scene.input1.input:display(4)
set_neutral_color(scene.input0.wb_effect, state.neutral_colors[1])
end
-- NOTE: input_resolution is not 1-indexed, unlike usual Lua arrays.
- place_rectangle_with_affine(scene.input0, pos0, affine_param, screen_width, screen_height, input_resolution[0].width, input_resolution[0].height)
- place_rectangle_with_affine(scene.input1, pos1, affine_param, screen_width, screen_height, input_resolution[1].width, input_resolution[1].height)
+ place_rectangle_with_affine(scene.input0, pos0, affine_param, screen_width, screen_height, input_resolution[0].width, input_resolution[0].height, hq)
+ place_rectangle_with_affine(scene.input1, pos1, affine_param, screen_width, screen_height, input_resolution[1].width, input_resolution[1].height, hq)
end
-- Find the transformation that changes the first rectangle to the second one.
}
end
-function place_rectangle_with_affine(input, pos, aff, screen_width, screen_height, input_width, input_height)
+function place_rectangle_with_affine(input, pos, aff, screen_width, screen_height, input_width, input_height, hq)
local x0 = pos.x0 * aff.sx + aff.tx
local x1 = pos.x1 * aff.sx + aff.tx
local y0 = pos.y0 * aff.sy + aff.ty
local y1 = pos.y1 * aff.sy + aff.ty
- place_rectangle(input, x0, y0, x1, y1, screen_width, screen_height, input_width, input_height)
+ place_rectangle(input, x0, y0, x1, y1, screen_width, screen_height, input_width, input_height, hq)
end
function place_rectangle(input, x0, y0, x1, y1, screen_width, screen_height, input_width, input_height, hq)