local ZOOM_TRANSITION = 1 -- Also for slides.
local FADE_TRANSITION = 2
--- Last width/height/frame rate for each channel, if we have it.
--- Note that unlike the values we get from Nageru, the resolution is per
--- frame and not per field, since we deinterlace.
-local last_resolution = {}
-
function make_sbs_input(scene)
return {
input = scene:add_input(),
static_scene:add_input(static_image) -- Note: Locks this input to images only.
static_scene:finalize()
--- API ENTRY POINT
--- Returns the number of outputs in addition to the live (0) and preview (1).
--- Called only once, at the start of the program.
-function num_channels()
- return 4
-end
+-- Set some global state.
+Nageru.set_num_channels(4) -- Can only be called at the start of the program.
+Nageru.set_channel_name(SBS_SIGNAL_NUM + 2, "Side-by-side")
+Nageru.set_channel_name(STATIC_SIGNAL_NUM + 2, "Static picture")
function is_plain_signal(num)
return num == INPUT0_SIGNAL_NUM or num == INPUT1_SIGNAL_NUM
end
--- API ENTRY POINT
--- Returns the name for each additional channel (starting from 2).
--- Called at the start of the program, and then each frame for live
--- channels in case they change resolution.
-function channel_name(channel)
- local signal_num = channel - 2
- if is_plain_signal(signal_num) then
- if last_resolution[signal_num] then
- return "Input " .. (signal_num + 1) .. " (" .. last_resolution[signal_num].human_readable_resolution .. ")"
- else
- return "Input " .. (signal_num + 1)
- end
- elseif signal_num == SBS_SIGNAL_NUM then
- return "Side-by-side"
- elseif signal_num == STATIC_SIGNAL_NUM then
- return "Static picture"
- end
-end
-
-- API ENTRY POINT
-- Returns, given a channel number, which signal it corresponds to (starting from 0).
-- Should return -1 if the channel does not correspond to a simple signal
is_connected = signals:get_is_connected(signal_num),
has_signal = signals:get_has_signal(signal_num),
frame_rate_nom = signals:get_frame_rate_nom(signal_num),
- frame_rate_den = signals:get_frame_rate_den(signal_num),
- human_readable_resolution = signals:get_human_readable_resolution(signal_num)
+ frame_rate_den = signals:get_frame_rate_den(signal_num)
}
if res.interlaced then
end
input_resolution[signal_num] = res
+
+ local text_res = signals:get_human_readable_resolution(signal_num)
+ Nageru.set_channel_name(signal_num + 2, "Input " .. (signal_num + 1) .. " (" .. text_res .. ")")
end
- last_resolution = input_resolution
if num == 0 then -- Live.
finish_transitions(t)