]> git.sesse.net Git - ultimatescore/blobdiff - nageru/ultimate.lua
Change to NM color theme again.
[ultimatescore] / nageru / ultimate.lua
index 8b2b7f1b42e27f33432ec2307e7284c390b3da4f..34462f2b82219f455537ead2b8cfe97ec34f2465 100644 (file)
@@ -1,9 +1,6 @@
 -- Nageru theme for TFK mini-tournament 2017, based on the default theme.
 
-local http_request = require("http.request")
-local cqueues = require("cqueues")
-local cq = cqueues.new()
-local futatabi_server = "http://gruessi.trd.sesse.net:9095"
+local futatabi_server = "http://gruessi.trd.sesse.net:9096"
 
 local state = {
        transition_start = -2.0,
@@ -39,21 +36,6 @@ local state = {
 }
 local NUM_CAMERAS = 6  -- Remember to update neutral_colors, too.
 
--- Update the Futatabi status in the title.
-replay_title = "IPTV"
-cq:wrap(function()
-       while true do
-               local headers, stream = assert(http_request.new_from_uri(futatabi_server .. "/queue_status"):go())
-               replay_title = "IPTV"
-               if headers:get ":status" == "200" then
-                       local body = assert(stream:get_body_as_string())
-                       if body then
-                               replay_title = "IPTV (" .. body .. ")"
-                       end
-               end
-       end
-end)
-
 -- Valid values for live_signal_num and preview_signal_num.
 local INPUT0_SIGNAL_NUM = 0
 local INPUT1_SIGNAL_NUM = 1
@@ -482,6 +464,20 @@ function get_channel_resolution_raw(res)
        end
 end
 
+function get_futatabi_status(str)
+       local num_fields = 0
+       local fields = {}
+       for word in string.gmatch(str, '([^;]+)') do
+               table.insert(fields, word)
+               num_fields = num_fields + 1
+       end
+       if num_fields >= 4 then
+               return fields[4]
+       else
+               return "???"
+       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
@@ -505,8 +501,12 @@ function channel_name(channel)
        elseif signal_num == STATIC_SIGNAL_NUM then
                return "Static picture"
        elseif signal_num == VIDEO_SIGNAL_NUM then
-               -- return "IPTV input (" .. get_channel_resolution(iptv_video:get_signal_num()) .. ")"
-               return replay_title
+               local res = last_resolution[iptv_video:get_signal_num()]
+               if (not res) or res.last_subtitle == nil then
+                       return "IPTV"
+               else
+                       return "IPTV (" .. get_futatabi_status(res.last_subtitle) .. ")"
+               end
        elseif signal_num == OVERLAY_SIGNAL_NUM then
                return "Overlay"
        end
@@ -825,7 +825,8 @@ function fetch_input_resolution(signals, signal_num)
                has_signal = signals:get_has_signal(signal_num),
                is_connected = signals:get_is_connected(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),
+               last_subtitle = signals:get_last_subtitle(signal_num)
        }
 
        if res.interlaced then
@@ -868,8 +869,6 @@ local last_rate = 0.0
 -- NOTE: The chain returned must be finalized with the Y'CbCr flag
 -- if and only if num==0.
 function get_chain(num, t, width, height, signals)
-       cq:loop(0)
-
        local input_resolution = {}
        for signal_num=0,(NUM_CAMERAS-1) do
                input_resolution[signal_num] = fetch_input_resolution(signals, signal_num)