1 ### Start of footer.py ###
3 class MediaEvent(ctypes.Structure):
5 ('media_name', ctypes.c_char_p),
6 ('instance_name', ctypes.c_char_p),
9 class EventUnion(ctypes.Union):
11 ('meta_type', ctypes.c_uint),
12 ('new_child', ctypes.c_uint),
13 ('new_duration', ctypes.c_longlong),
14 ('new_status', ctypes.c_int),
15 ('media', ctypes.c_void_p),
16 ('new_state', ctypes.c_uint),
18 ('new_position', ctypes.c_float),
19 ('new_time', ctypes.c_longlong),
20 ('new_title', ctypes.c_int),
21 ('new_seekable', ctypes.c_longlong),
22 ('new_pausable', ctypes.c_longlong),
23 # FIXME: Skipped MediaList and MediaListView...
24 ('filename', ctypes.c_char_p),
25 ('new_length', ctypes.c_longlong),
26 ('media_event', MediaEvent),
29 class Event(ctypes.Structure):
32 ('object', ctypes.c_void_p),
36 # Decorator for callback methods
37 callbackmethod=ctypes.CFUNCTYPE(None, Event, ctypes.c_void_p)
39 # Example callback method
41 def debug_callback(event, data):
42 print "Debug callback method"
43 print "Event:", event.type
46 if __name__ == '__main__':
48 from msvcrt import getch
54 old_settings=termios.tcgetattr(fd)
59 termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
63 def end_callback(event, data):
69 media=instance.media_new(sys.argv[1])
70 player=instance.media_player_new()
71 player.set_media(media)
74 event_manager=player.event_manager()
75 event_manager.event_attach(EventType.MediaPlayerEndReached, end_callback, None)
78 """Print information about the media."""
79 media=player.get_media()
80 print "State:", player.get_state()
81 print "Media:", media.get_mrl()
83 print "Current time:", player.get_time(), "/", media.get_duration()
84 print "Position:", player.get_position()
85 print "FPS:", player.get_fps()
86 print "Rate:", player.get_rate()
87 print "Video size: (%d, %d)" % (player.video_get_width(), player.video_get_height())
93 player.set_time(player.get_time() + 1000)
95 def one_frame_forward():
96 """Go forward one frame"""
97 player.set_time(player.get_time() + long(1000 / (player.get_fps() or 25)))
99 def one_frame_backward():
100 """Go backward one frame"""
101 player.set_time(player.get_time() - long(1000 / (player.get_fps() or 25)))
105 player.set_time(player.get_time() - 1000)
111 for k, m in keybindings.iteritems():
112 print " %s: %s" % (k, (m.__doc__ or m.__name__).splitlines()[0])
113 print " 1-9: go to the given fraction of the movie"
120 'f': player.toggle_fullscreen,
124 '.': one_frame_forward,
125 ',': one_frame_backward,
131 print "Press q to quit, ? to get help."
135 method=keybindings.get(k, None)
136 if method is not None:
138 elif o >= 49 and o <= 57:
139 # Numeric value. Jump to a fraction of the movie.
141 player.set_position(v)