Added "-wait" parameter
This commit is contained in:
parent
1ba2cf9aed
commit
330bfa8f80
21
video.lua
21
video.lua
|
@ -11,6 +11,7 @@ local speakers = {
|
||||||
local delay = 0
|
local delay = 0
|
||||||
local loading_concurrency = 8
|
local loading_concurrency = 8
|
||||||
local buffer_size = 8192
|
local buffer_size = 8192
|
||||||
|
local wait_until_input = false
|
||||||
|
|
||||||
while args[1] ~= nil and string.sub(args[1], 1, 1) == "-" do
|
while args[1] ~= nil and string.sub(args[1], 1, 1) == "-" do
|
||||||
local k = table.remove(args, 1):sub(2)
|
local k = table.remove(args, 1):sub(2)
|
||||||
|
@ -26,6 +27,8 @@ while args[1] ~= nil and string.sub(args[1], 1, 1) == "-" do
|
||||||
loading_concurrency = tonumber(table.remove(args, 1))
|
loading_concurrency = tonumber(table.remove(args, 1))
|
||||||
elseif k == "b" or k == "buffer-size" then
|
elseif k == "b" or k == "buffer-size" then
|
||||||
buffer_size = tonumber(table.remove(args, 1))
|
buffer_size = tonumber(table.remove(args, 1))
|
||||||
|
elseif k == "w" or k == "wait" then
|
||||||
|
wait_until_input = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -46,7 +49,7 @@ end
|
||||||
|
|
||||||
print(string.format("Using monitor %s", peripheral.getName(monitor)))
|
print(string.format("Using monitor %s", peripheral.getName(monitor)))
|
||||||
if speakers.r then
|
if speakers.r then
|
||||||
print("Stereo sound: L=%s R=%s", peripheral.getName(speakers.l), peripheral.getName(speakers.r))
|
print(string.format("Stereo sound: L=%s R=%s", peripheral.getName(speakers.l), peripheral.getName(speakers.r)))
|
||||||
else
|
else
|
||||||
print("Mono sound: " .. peripheral.getName(speakers.l))
|
print("Mono sound: " .. peripheral.getName(speakers.l))
|
||||||
end
|
end
|
||||||
|
@ -158,11 +161,19 @@ local playback_locked = true
|
||||||
local playback_done = false
|
local playback_done = false
|
||||||
|
|
||||||
table.insert(subthreads, function()
|
table.insert(subthreads, function()
|
||||||
while #frames < 60 or #audio_frames.l < n_audio_samples do
|
local tmr = os.startTimer(0.25)
|
||||||
|
while true do
|
||||||
|
local ev = { os.pullEvent() }
|
||||||
|
if ev[1] == "key" and ev[2] == keys.enter then
|
||||||
|
break
|
||||||
|
end
|
||||||
term.setCursorPos(1, ty - 1)
|
term.setCursorPos(1, ty - 1)
|
||||||
term.setBackgroundColor(colors.gray)
|
term.setBackgroundColor(colors.gray)
|
||||||
term.clearLine()
|
term.clearLine()
|
||||||
term.write(string.format("Waiting for frames... (V:%d, A:%d)", #frames, #audio_frames.l))
|
term.write(string.format("Waiting for frames... (V:%d, A:%d) [ENTER to skip]", #frames, #audio_frames.l))
|
||||||
|
if #frames < 60 and #audio_frames.l < n_audio_samples and not wait_until_input then
|
||||||
|
break
|
||||||
|
end
|
||||||
os.sleep(0.25)
|
os.sleep(0.25)
|
||||||
end
|
end
|
||||||
playback_locked = false
|
playback_locked = false
|
||||||
|
@ -210,10 +221,12 @@ table.insert(subthreads, function()
|
||||||
while not playback_done do
|
while not playback_done do
|
||||||
local frame = math.floor((os.clock() - start_t) / math.max(0.05, delay))
|
local frame = math.floor((os.clock() - start_t) / math.max(0.05, delay))
|
||||||
term.setCursorPos(1, ty - 1)
|
term.setCursorPos(1, ty - 1)
|
||||||
term.setBackgroundColor(colors.gray)
|
term.setBackgroundColor(frame >= #frames and colors.red or colors.gray)
|
||||||
term.clearLine()
|
term.clearLine()
|
||||||
term.write(string.format("Playing frame: %d/%d", frame + 1, #frames))
|
term.write(string.format("Playing frame: %d/%d", frame + 1, #frames))
|
||||||
|
if frames[frame] then
|
||||||
ccpi.draw(frames[frame + 1], 1, 1, monitor)
|
ccpi.draw(frames[frame + 1], 1, 1, monitor)
|
||||||
|
end
|
||||||
os.sleep(delay)
|
os.sleep(delay)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
Loading…
Reference in New Issue