Files
r_e_c_u_r/video_driver.py
2017-12-26 07:47:51 +00:00

76 lines
2.6 KiB
Python

import time
try:
from video_player import video_player # <== for deving only
has_omx = True
except ImportError:
has_omx = False
from tkinter import Tk, Canvas
class video_driver(object):
def __init__(self, root=None):
print('has omx :{}'.format(has_omx))
self.root = root
self.delay = 5
self.has_omx = has_omx
if self.has_omx:
self.last_player = video_player(self.root, 'a.a')
self.current_player = video_player(self.root, 'b.b')
self.next_player = video_player(self.root, 'c.c')
self.manual_next = False
self.print_status()
self.root.after(self.delay, self.begin_playing)
def print_status(self):
print('l({}):{}, c({}):{}, n({}):{}'.format(self.last_player.name, self.last_player.status, self.current_player.name, self.current_player.status, self.next_player.name, self.next_player.status,))
self.root.after(1000,self.print_status)
def begin_playing(self):
# TODO: the first clip will be a demo
self.current_player.load()
self.wait_for_first_load()
def wait_for_first_load(self):
if self.current_player.is_loaded():
self.play_video()
else:
self.root.after(self.delay, self.wait_for_first_load)
def switch_players(self):
self.temp_player = self.last_player
self.last_player = self.current_player
self.current_player = self.next_player
self.next_player = self.temp_player
self.last_player.exit()
def play_video(self):
self.current_player.play()
self.next_player.load()
self.wait_for_next_cycle()
def wait_for_next_cycle(self):
if (self.current_player.is_finished() or self.manual_next):
self.manual_next = False
self.wait_for_next_load()
else:
self.root.after(self.delay, self.wait_for_next_cycle)
def wait_for_next_load(self):
if (self.next_player.is_loaded()):
self.switch_players()
self.play_video()
else:
self.root.after(self.delay, self.wait_for_next_load)
def get_info_for_video_display(self):
if self.has_omx:
return self.current_player.bank_number, self.current_player.status, self.next_player.bank_number, \
self.next_player.status, self.current_player.get_position(), self.current_player.length
else:
return 0, 'test', 1, 'test', 0, 10
def exit_all_players(self):
self.next_player.exit()
self.current_player.exit()