X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=theme.lua;h=aca8c4e7ee9decbfdfb73b89ad6b67ab968c70b4;hb=7d23b62323aba8fa396f6abc617c39e8c634b023;hp=f561613aa88c33fd5dff538bd199122d7c425368;hpb=d3a801a9148345bec24f21e1184f7e97f53040b2;p=nageru diff --git a/theme.lua b/theme.lua index f561613..aca8c4e 100644 --- a/theme.lua +++ b/theme.lua @@ -31,7 +31,7 @@ local STATIC_SIGNAL_NUM = 3 -- to the next. local FADE_SIGNAL_NUM = 4 --- Last width/height/resolution for each channel, if we have it. +-- 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 = {} @@ -269,8 +269,7 @@ end -- Helper function to write e.g. “720p60”. function get_channel_resolution(signal_num) if last_resolution[signal_num] then - if last_resolution[signal_num].height == 0 or - last_resolution[signal_num].height == 525 then + if not last_resolution[signal_num].has_signal then return "no signal" elseif last_resolution[signal_num].interlaced then return last_resolution[signal_num].height .. "i" .. get_frame_rate(signal_num) @@ -298,6 +297,21 @@ function channel_name(channel) 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. +-- Called once for each channel, at the start of the program. +-- Will never be called for live (0) or preview (1). +function channel_signal(channel) + if channel == 2 then + return 0 + elseif channel == 3 then + return 1 + else + return -1 + end +end + -- API ENTRY POINT -- Returns if a given channel supports setting white balance (starting from 2). -- Called only once for each channel, at the start of the program. @@ -481,6 +495,7 @@ function get_chain(num, t, width, height, signals) width = signals:get_width(signal_num), height = signals:get_height(signal_num), interlaced = signals:get_interlaced(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) } @@ -522,12 +537,12 @@ function get_chain(num, t, width, height, signals) local input1_scale = needs_scale(signals, fade_dst_signal, width, height) local chain = fade_chains[input0_type][input0_scale][input1_type][input1_scale][true] prepare = function() - if input0_type == "live" then + if input0_type == "live" or input0_type == "livedeint" then chain.input0.input:connect_signal(fade_src_signal) set_neutral_color_from_signal(chain.input0.wb_effect, fade_src_signal) end set_scale_parameters_if_needed(chain.input0, width, height) - if input1_type == "live" then + if input1_type == "live" or input1_type == "livedeint" then chain.input1.input:connect_signal(fade_dst_signal) set_neutral_color_from_signal(chain.input1.wb_effect, fade_dst_signal) end