working on optimization from check_sync and gen_input

This commit is contained in:
jb-alvarado 2019-11-01 15:51:36 +01:00
parent 42c2e3ae6b
commit e75c9232f9

View File

@ -118,6 +118,7 @@ def load_config():
try: try:
return float(s[0]) * 3600 + float(s[1]) * 60 + float(s[2]) return float(s[0]) * 3600 + float(s[1]) * 60 + float(s[2])
except ValueError: except ValueError:
print('wrong time format!')
return None return None
if stdin_args.config: if stdin_args.config:
@ -462,10 +463,10 @@ def terminate_processes(watcher=None):
""" """
kill orphaned processes kill orphaned processes
""" """
if _ff.decoder.poll() is None: if hasattr(_ff, 'decoder') and _ff.decoder.poll() is None:
_ff.decoder.terminate() _ff.decoder.terminate()
if _ff.encoder.poll() is None: if hasattr(_ff, 'encoder') and _ff.encoder.poll() is None:
_ff.encoder.terminate() _ff.encoder.terminate()
if watcher: if watcher:
@ -759,34 +760,31 @@ def gen_input(src, begin, dur, seek, out, last):
if begin > day_in_sec: if begin > day_in_sec:
begin -= _playlist.start begin -= _playlist.start
new_seek = 0 if begin + out < day_in_sec and not last:
if begin + (out - seek) < day_in_sec and not last:
# when we are in the 24 houre range, get the clip # when we are in the 24 houre range, get the clip
return src_or_dummy(src, dur, seek, out), out, False return src_or_dummy(src, dur, seek, out), seek, out, False
elif begin > day_in_sec: elif begin > day_in_sec:
messenger.info( messenger.info(
'start time is over 24 hours, skip clip:\n{}'.format(src)) 'start time is over 24 hours, skip clip:\n{}'.format(src))
return None, 0.0, True return None, 0, 0, True
if begin + (out - seek) > day_in_sec or last: if begin + out > day_in_sec or last:
new_len = day_in_sec - begin new_len = day_in_sec - (begin + seek)
new_out = new_len
# When calculated length from last clip is longer then 4 seconds, messenger.info(
'we are over time, new_len is: {0:.2f}'.format(new_len))
# When calculated length from clip is longer then 4 seconds,
# we use the clip. When the length is less then 4 and bigger then 1 # we use the clip. When the length is less then 4 and bigger then 1
# second we generate a black clip and when is less the a seconds # second we generate a black clip and when is less the a seconds
# we skip the clip. # we skip the clip.
if new_len > 4.0: if new_len > 4.0:
messenger.info(
'we are over time, new_len is: {0:.2f}'.format(new_len))
new_seek = 0
if seek > 0: if seek > 0:
new_seek = out - new_len new_out = new_len + seek
new_len = out
src_cmd = src_or_dummy(src, dur, new_seek, new_len) src_cmd = src_or_dummy(src, dur, seek, new_out)
elif new_len > 1.0: elif new_len > 1.0:
src_cmd = gen_dummy(new_len) src_cmd = gen_dummy(new_len)
elif new_len > 0.0: elif new_len > 0.0:
@ -799,14 +797,14 @@ def gen_input(src, begin, dur, seek, out, last):
'Playlist is not long enough:' 'Playlist is not long enough:'
'\n{0:.2f} seconds needed.'.format(missing_secs)) '\n{0:.2f} seconds needed.'.format(missing_secs))
src_cmd = src_or_dummy(src, dur, 0, out) src_cmd = src_or_dummy(src, dur, 0, out)
return src_cmd, out, False return src_cmd, seek, out, False
return src_cmd, new_len, True return src_cmd, seek, new_out, True
else: else:
return None, True return None, 0, 0, True
else: else:
return src_or_dummy(src, dur, seek, out), out, False return src_or_dummy(src, dur, seek, out), seek, out, False
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
@ -1299,7 +1297,7 @@ class GetSourceIter:
self.seek = 0 self.seek = 0
def get_input(self): def get_input(self):
self.src_cmd, self.out, self.next_playlist = gen_input( self.src_cmd, self.seek, self.out, self.next_playlist = gen_input(
self.src, self.begin, self.duration, self.src, self.begin, self.duration,
self.seek, self.out, self.last self.seek, self.out, self.last
) )
@ -1344,6 +1342,17 @@ class GetSourceIter:
self.duration, self.seek, self.out, self.ad, self.ad_last, self.duration, self.seek, self.out, self.ad, self.ad_last,
self.ad_next, self.is_dummy, self.probe) self.ad_next, self.is_dummy, self.probe)
def check_time_left(self):
if not self.next_playlist:
# normal behavior
self.last_time = self.begin
else:
# when there is no time left and we are in time,
# set right values for new playlist
self.list_date = get_date(False)
self.last_time = _playlist.start - 5
self.last_mod_time = 0.0
def eof_handling(self, message, filler): def eof_handling(self, message, filler):
self.seek = 0.0 self.seek = 0.0
self.ad = False self.ad = False
@ -1422,9 +1431,9 @@ class GetSourceIter:
self.is_source_dummy() self.is_source_dummy()
self.get_category(index, node) self.get_category(index, node)
self.set_filtergraph() self.set_filtergraph()
self.check_time_left()
self.first = False self.first = False
self.last_time = self.begin
break break
elif self.last_time < self.begin: elif self.last_time < self.begin:
if index + 1 == len(self.clip_nodes["program"]): if index + 1 == len(self.clip_nodes["program"]):
@ -1443,16 +1452,7 @@ class GetSourceIter:
self.is_source_dummy() self.is_source_dummy()
self.get_category(index, node) self.get_category(index, node)
self.set_filtergraph() self.set_filtergraph()
self.check_time_left()
if not self.next_playlist:
# normal behavior
self.last_time = self.begin
else:
# when there is no time left and we are in time,
# set right values for new playlist
self.list_date = get_date(False)
self.last_time = _playlist.start - 5
self.last_mod_time = 0.0
break break