]> git.sesse.net Git - nageru/blobdiff - theme.lua
Use the new has_signal flag.
[nageru] / theme.lua
index f561613aa88c33fd5dff538bd199122d7c425368..aca8c4e7ee9decbfdfb73b89ad6b67ab968c70b4 100644 (file)
--- 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