X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=nageru%2Ftheme.lua;h=011dc4f84c79c1636ffd6a46de2816eadaa1f50b;hb=87ca88abe461522ff7386ee179a87a2ba2f5012c;hp=c762a3f6d82ce1fafe1995d3f1de7ca988a2ab40;hpb=b7398dd7960ddf07f03b9a9ebc669d29141c09d0;p=nageru diff --git a/nageru/theme.lua b/nageru/theme.lua index c762a3f..011dc4f 100644 --- a/nageru/theme.lua +++ b/nageru/theme.lua @@ -111,38 +111,26 @@ static_scene:add_input(static_image) -- Note: Locks this input to images only. static_scene:finalize() -- Set some global state. -Nageru.set_channel_name(SBS_SIGNAL_NUM + 2, "Side-by-side") -Nageru.set_channel_name(STATIC_SIGNAL_NUM + 2, "Static picture") +Nageru.set_num_channels(4) -- Can only be called at the start of the program. --- 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. Unless marked otherwise, these can only be set once, +-- at the start of the program. +Nageru.set_num_channels(4) -function is_plain_signal(num) - return num == INPUT0_SIGNAL_NUM or num == INPUT1_SIGNAL_NUM -end +-- Sets, for each channel, which signal it corresponds to (starting from 0). +-- The information is used for whether right-click on the channel should bring up +-- an input selector or not. Only call this for channels that actually correspond +-- directly to a signal (ie., live inputs, not live (0) or preview (1)). +Nageru.set_channel_signal(2, 0) +Nageru.set_channel_signal(3, 1) --- 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 --- (one connected to a capture card, or a video input). The information is used for --- whether right-click on the channel should bring up a context menu or not, --- typically containing an input selector, resolution menu etc. --- --- 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 +-- Set whether a given channel supports setting white balance. (Default is false.) +Nageru.set_supports_wb(2, true) +Nageru.set_supports_wb(3, true) + +-- These can be set at any time. +Nageru.set_channel_name(SBS_SIGNAL_NUM + 2, "Side-by-side") +Nageru.set_channel_name(STATIC_SIGNAL_NUM + 2, "Static picture") -- API ENTRY POINT -- Called every frame. Returns the color (if any) to paint around the given @@ -166,6 +154,10 @@ function channel_color(channel) return "transparent" end +function is_plain_signal(num) + return num == INPUT0_SIGNAL_NUM or num == INPUT1_SIGNAL_NUM +end + function channel_involved_in(channel, signal_num) if is_plain_signal(signal_num) then return channel == (signal_num + 2) @@ -179,13 +171,6 @@ function channel_involved_in(channel, signal_num) return false 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. -function supports_set_wb(channel) - return is_plain_signal(channel - 2) -end - -- API ENTRY POINT -- Gets called with a new gray point when the white balance is changing. -- The color is in linear light (not sRGB gamma). @@ -373,24 +358,12 @@ function get_scene(num, t, width, height, signals) local res = { width = signals:get_width(signal_num), height = signals:get_height(signal_num), - interlaced = signals:get_interlaced(signal_num), - 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) } - - if res.interlaced then + if signals:get_interlaced(signal_num) then -- Convert height from frame height to field height. -- (Needed for e.g. place_rectangle.) res.height = res.height * 2 - - -- Show field rate instead of frame rate; really for cosmetics only - -- (and actually contrary to EBU recommendations, although in line - -- with typical user expectations). - res.frame_rate_nom = res.frame_rate_nom * 2 end - input_resolution[signal_num] = res local text_res = signals:get_human_readable_resolution(signal_num)