diff --git a/display_centre/display.py b/display_centre/display.py index 2467b6b..aa33946 100644 --- a/display_centre/display.py +++ b/display_centre/display.py @@ -197,7 +197,9 @@ class Display(object): def _get_status_for_player(self): now_slot, now_status, now_alpha, next_slot, next_status, next_alpha = self.video_driver.get_player_info_for_status() + capture_status = self._generate_capture_status() + preview_alpha = self.capture.get_preview_alpha() self._set_colour_from_alpha(now_alpha, preview_alpha, next_alpha) diff --git a/shader_experiments/default.vert b/shader_experiments/default.vert new file mode 100644 index 0000000..fa78593 --- /dev/null +++ b/shader_experiments/default.vert @@ -0,0 +1,10 @@ +attribute vec4 position; +attribute vec2 texcoord; +uniform mat4 modelViewProjectionMatrix; + +varying vec2 texcoord0; + +void main() { + gl_Position = modelViewProjectionMatrix * position; + texcoord0 = texcoord; +} diff --git a/shader_experiments/example_shader.frag b/shader_experiments/example_shader.frag deleted file mode 100644 index 2e55bf3..0000000 --- a/shader_experiments/example_shader.frag +++ /dev/null @@ -1,24 +0,0 @@ -// copied from http://glslsandbox.com/e#47821.0 - -#ifdef GL_ES -precision mediump float; -#endif - -#extension GL_OES_standard_derivatives : enable - -uniform float u_time; -uniform vec2 u_mouse; -uniform vec2 u_resolution; - -void main( void ) { - - vec2 position = ( gl_FragCoord.xy / u_resolution.xy ) + u_mouse / 4.0; - - float color = 0.0; - color += sin( position.x * cos( u_time / 15.0 ) * 80.0 ) + cos( position.y * cos( u_time / 15.0 ) * 10.0 ); - color += sin( position.y * sin( u_time / 10.0 ) * 40.0 ) + cos( position.x * sin( u_time / 25.0 ) * 40.0 ); - color += sin( position.x * sin( u_time / 5.0 ) * 10.0 ) + sin( position.y * sin( u_time / 35.0 ) * 80.0 ); - color *= sin( u_time / 10.0 ) * 0.8; - - gl_FragColor = vec4( vec3( color, color * 0.5, sin( color + u_time / 3.0 ) * 0.75 ), 1.0 ); -} diff --git a/shader_experiments/green_lights.frag b/shader_experiments/green_lights.frag new file mode 100644 index 0000000..ace8748 --- /dev/null +++ b/shader_experiments/green_lights.frag @@ -0,0 +1,16 @@ + +varying vec2 texcoord0; +uniform sampler2D tex0; +uniform vec2 u_resolution; +uniform float u_time; + +void main() { + vec2 pos = gl_FragCoord.xy; + vec4 texColor = texture2D(tex0, texcoord0); + + texColor.r *= (sin(0.05*pos.x - cos(u_time)) + cos(0.05*pos.x/(0.1 + abs(cos(u_time/5.0))))); + texColor.r *= (sin(0.05*pos.y - cos(u_time/5.0)) + cos(0.05*pos.y/(0.1 + abs(cos(u_time/5.0))))); + + gl_FragColor = vec4(texColor.b, texColor.r, texColor.g, texColor.a); +} + diff --git a/shader_experiments/invert_effect.frag b/shader_experiments/invert_effect.frag new file mode 100644 index 0000000..c2cc7bc --- /dev/null +++ b/shader_experiments/invert_effect.frag @@ -0,0 +1,11 @@ + + +varying vec2 texcoord0; +uniform sampler2D tex0; +uniform vec2 u_resolution; +uniform float u_time; + +void main() { + vec4 texColour = texture2D(tex0, texcoord0); + gl_FragColor = vec4(1.0-texColour.r,1.0-texColour.g,1.0-texColour.b,texColour.a); +} diff --git a/shader_experiments/osc_example.py b/shader_experiments/osc_example.py deleted file mode 100644 index 0f1a60a..0000000 --- a/shader_experiments/osc_example.py +++ /dev/null @@ -1,85 +0,0 @@ -from tkinter import * -from pythonosc import osc_message_builder -from pythonosc import udp_client -from pythonosc import dispatcher -from pythonosc import osc_server -import argparse -import threading -print('starting osc_example') - -root = Tk() - -def key(event): - print("key pressed is {}".format(event.char)) - - if event.char == 'q': - print('quiting program') - root.destroy() - elif event.char == 'a': - print('loading video') - send_osc_message("/player/a/load", "/home/pi/Videos/internal_storage/480-from-adobe.mp4") - elif event.char == 's': - print('playing video') - send_osc_message("/player/a/play", True) - elif event.char == 'd': - print('pausing video') - send_osc_message("/player/a/play", False) - elif event.char == 'f': - print('making video partly transparent') - send_osc_message("/player/a/alpha", 200) - elif event.char == 'g': - print('quiting video') - send_osc_message("/player/a/quit", True) - elif event.char == 'h': - print('seeking video') - send_osc_message("/player/a/position", 0.5) - elif event.char == 'j': - print('requesting video position') - send_osc_message("/player/a/get_position", True) - - -def send_osc_message(address, value): - client.send_message(address, value) - -def set_position(unused_addr, args, player_name): - print("the position of the player {} is {}".format(args, player_name)) - -def set_status(unused_addr, args, player_name): - print("the status of the player {} is {}".format(args, player_name)) - -### setting up the client -client_parser = argparse.ArgumentParser() -client_parser.add_argument("--ip", default="127.0.0.1", help="the ip") -client_parser.add_argument("--port", type=int, default=8000, help="the port") - -client_args = client_parser.parse_args() - -client = udp_client.SimpleUDPClient(client_args.ip, client_args.port) - -### setting up the server -server_parser = argparse.ArgumentParser() -server_parser.add_argument("--ip", default="127.0.0.1", help="the ip") -server_parser.add_argument("--port", type=int, default=7000, help="the port") - -server_args = server_parser.parse_args() - -dispatcher = dispatcher.Dispatcher() -dispatcher.map("/player/a/position", set_position, "a") -dispatcher.map("/player/b/position", set_position, "b") -dispatcher.map("/player/c/position", set_position, "c") -dispatcher.map("/player/a/status", set_status, "a") -dispatcher.map("/player/b/status", set_status, "b") -dispatcher.map("/player/c/status", set_status, "c") - -server = osc_server.ThreadingOSCUDPServer((server_args.ip, server_args.port), dispatcher) -server_thread = threading.Thread(target=server.serve_forever) -server_thread.start() -### setting up tk etc -frame = Frame(root, width=100, height=100) -frame.bind("", key) -frame.pack() - -frame.focus_set() -root.mainloop() - - diff --git a/shader_experiments/red_sine.frag b/shader_experiments/red_sine.frag new file mode 100644 index 0000000..ea02f06 --- /dev/null +++ b/shader_experiments/red_sine.frag @@ -0,0 +1,9 @@ +#ifdef GL_ES +precision mediump float; +#endif + +uniform float u_time; + +void main() { + gl_FragColor = vec4(sin(u_time),0.0,0.0,1.0); +} diff --git a/video_centre/capture.py b/video_centre/capture.py index 1ed76d4..a78c0da 100644 --- a/video_centre/capture.py +++ b/video_centre/capture.py @@ -176,8 +176,16 @@ class Capture(object): return self.device.frame.timestamp / 1000000 def get_preview_alpha(self): - if self.is_previewing: - return self.device.preview.alpha + if self.is_previewing and self.device is not None: + try: + return self.device.preview.alpha + except Exception as e: + print(e) + if hasattr(e, 'message'): + error_info = e.message + else: + error_info = e + self.message_handler.set_message('ERROR',error_info) else: return 0 diff --git a/video_centre/video_driver.py b/video_centre/video_driver.py index 4108a7a..24e27f4 100644 --- a/video_centre/video_driver.py +++ b/video_centre/video_driver.py @@ -136,7 +136,8 @@ class VideoDriver(object): self.next_player.reload(self.get_next_layer_value()) def exit_last_player_after_delay(self): - self.root.after(100, self.last_player.exit) + self.last_player.exit() + #self.root.after(100, self.last_player.exit) def receive_position(self, unused_addr, player_name, args): print("the position of player {} is set to {}".format(player_name,args))