viewgit/index.php:465 Only variables should be passed by reference [2048]

viewgit/index.php:466 Non-static method GeSHi::get_language_name_from_extension() should not be called statically [2048]

  1. #
  2. # -*- coding: utf-8 -*-
  3. #
  4. # Implementazione del Widget per gestire il video
  5. #
  6.  
  7. import pygtk, gtk, gst, cairo, threading, time
  8.  
  9. class GstPlayer(threading.Thread):
  10.  
  11. def __init__(self, xid, video):
  12. threading.Thread.__init__(self)
  13. self.xid = xid
  14. self.video = video
  15.  
  16. self.exit_required = False
  17. self.loading = False
  18.  
  19. def set_sink(self, sink):
  20. assert self.xid
  21. self.imagesink = sink
  22. self.imagesink.set_xwindow_id(self.xid)
  23.  
  24. def on_sync_message(self, bus, message):
  25.  
  26. if message.structure is None:
  27. return
  28. if message.structure.get_name() == 'prepare-xwindow-id':
  29. gtk.gdk.threads_enter()
  30.  
  31. self.set_sink(message.src)
  32. message.src.set_property("force-aspect-ratio", True)
  33. gtk.gdk.threads_leave()
  34.  
  35. def on_message(self, bus, message):
  36. if message.type == gst.MESSAGE_ERROR:
  37. err, debug = message.parse_error()
  38. print err, debug
  39.  
  40. def is_loading(self):
  41. return self.loading
  42.  
  43. def run(self):
  44. self.player = gst.element_factory_make("playbin", "player")
  45.  
  46. self.player.set_property
  47. bus = self.player.get_bus()
  48. bus.enable_sync_message_emission()
  49. bus.add_signal_watch()
  50. bus.connect("sync-message::element", self.on_sync_message)
  51. bus.connect("message", self.on_message)
  52.  
  53. self.loading = True
  54. self.player.set_property("uri", self.video)
  55.  
  56. self.player.set_state(gst.STATE_PLAYING)
  57. self.loading = False
  58. while not self.exit_required:
  59. pass
  60.  
  61. self.player.set_state(gst.STATE_NULL)
  62.  
  63. def exit(self):
  64. self.exit_required = True
  65.  
  66. def pause(self):
  67. self.player.set_state(gst.STATE_PAUSED)
  68.  
  69. def play(self):
  70. self.player.set_state(gst.STATE_PLAYING)
  71.  
  72.  
  73. class VideoWidget(gtk.DrawingArea):
  74.  
  75. def __init__(self):
  76.  
  77. ## Creo la drawing area e la coloro
  78. ## di nero
  79. gtk.DrawingArea.__init__(self)
  80.  
  81. self.set_size_request(240,240)
  82. self.unset_flags(gtk.DOUBLE_BUFFERED)
  83.  
  84. ## Connetto l'expose-event
  85. self.connect("expose-event", self.colorize)
  86.  
  87. self.playing = False
  88. self.player = None
  89.  
  90.  
  91. def colorize(self, widget, event):
  92. """Quando la finestra viene creata la coloriamo di
  93. nero. Poi sarà tutto lavoro per gstreamer"""
  94.  
  95. ## Ci permettiamo di disegnare sopra il filmato
  96. ## se e solo se non c'è un filmato che sta andando! :)
  97.  
  98. if not self.playing:
  99. cr = self.window.cairo_create()
  100. ## Non facciamo lavoro extra e coloriamo solo ciò
  101. ## che è stato scoperto
  102. cr.rectangle(event.area.x, event.area.y,
  103. event.area.width, event.area.height)
  104.  
  105. cr.clip()
  106.  
  107. width, height = self.window.get_size()
  108.  
  109. cr.set_source_rgb(0,0,0)
  110. cr.rectangle(0,0,width,height)
  111. cr.fill()
  112.  
  113. cr.set_source_rgb(0.5,0,0)
  114. st = "RaiTV :)"
  115. cr.set_font_size(height/20)
  116. cr.select_font_face("Comic Sans MS")
  117. xbearing , ybearing, twidth, theight, xadvance, yadvance = cr.text_extents(st)
  118.  
  119. cr.move_to(width/2 - twidth/2, 1.6*height/3 - theight/5)
  120. cr.show_text(st)
  121.  
  122. cr.set_line_width(3)
  123. cr.move_to(width/2 - twidth/2 - 5 , 1.6* height/3)
  124. cr.rel_line_to(twidth + 10,0)
  125. cr.stroke()
  126.  
  127.  
  128. def load_video(self, uri):
  129. """Start video playing with the specified URI"""
  130. ## Stoppiamo ogni video
  131. if self.playing:
  132. self.stop()
  133.  
  134. print " => Buono, video stoppati"
  135.  
  136. self.player = GstPlayer(self.window.xid, uri)
  137. print " => Player creato"
  138. self.player.start()
  139. print " => Player avviato"
  140. self.playing = True
  141.  
  142. ## Aspettiamo 5 secondi
  143.  
  144.  
  145.  
  146. def pause(self):
  147. self.player.pause()
  148.  
  149. def stop(self):
  150. self.playing = False
  151. if self.player is not None:
  152. self.player.exit()
  153. self.player.join(timeout=2)
  154. if self.player.isAlive():
  155. print " => Ops, l'ho ucciso brutalmente"
  156. del self.player
  157.  
  158.  
  159. def play(self):
  160. self.playing = True
  161. self.player.play()
  162.  
  163.  
  164. def reset(self):
  165. pass