]> git.sesse.net Git - nageru/blobdiff - nageru/theme.lua
Move the handling of human-readable input resolution printing into C++; every theme...
[nageru] / nageru / theme.lua
index 973e389d784f2c59e5345f458289e5dd23c0dd40..de8d25222e9492e1118d94897bc7c0fc9743750f 100644 (file)
@@ -126,48 +126,6 @@ function is_plain_signal(num)
        return num == INPUT0_SIGNAL_NUM or num == INPUT1_SIGNAL_NUM
 end
 
--- Helper function to write e.g. “720p60”. The difference between this
--- and get_channel_resolution_raw() is that this one also can say that
--- there's no signal.
-function get_channel_resolution(signal_num)
-       local res = last_resolution[signal_num]
-       if (not res) or not res.is_connected then
-               return "disconnected"
-       end
-       if res.height <= 0 then
-               return "no signal"
-       end
-       if not res.has_signal then
-               if res.height == 525 then
-                       -- Special mode for the USB3 cards.
-                       return "no signal"
-               end
-               return get_channel_resolution_raw(res) .. ", no signal"
-       else
-               return get_channel_resolution_raw(res)
-       end
-end
-
--- Helper function to write e.g. “60” or “59.94”.
-function get_frame_rate(res)
-       local nom = res.frame_rate_nom
-       local den = res.frame_rate_den
-       if nom % den == 0 then
-               return nom / den
-       else
-               return string.format("%.2f", nom / den)
-       end
-end
-
--- Helper function to write e.g. “720p60”.
-function get_channel_resolution_raw(res)
-       if res.interlaced then
-               return res.height .. "i" .. get_frame_rate(res)
-       else
-               return res.height .. "p" .. get_frame_rate(res)
-       end
-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
@@ -175,7 +133,11 @@ end
 function channel_name(channel)
        local signal_num = channel - 2
        if is_plain_signal(signal_num) then
-               return "Input " .. (signal_num + 1) .. " (" .. get_channel_resolution(signal_num) .. ")"
+               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
@@ -435,7 +397,8 @@ function get_scene(num, t, width, height, signals)
                        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)
+                       frame_rate_den = signals:get_frame_rate_den(signal_num),
+                       human_readable_resolution = signals:get_human_readable_resolution(signal_num)
                }
 
                if res.interlaced then