Update of /cvsroot/freevo/freevo/src/audio/plugins
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5795/src/audio/plugins

Modified Files:
        mplayervis.py 
Log Message:
patch from Viggo

Index: mplayervis.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/audio/plugins/mplayervis.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** mplayervis.py       9 May 2004 10:07:18 -0000       1.4
--- mplayervis.py       20 May 2004 18:26:28 -0000      1.5
***************
*** 62,66 ****
          self.coverfile = coverfile
  
!         BaseAnimation.__init__(self, (x, y, width, height), fps=40,
                                 bg_update=False, bg_redraw=False)
          pygoom.set_exportfile(mmap_file)
--- 62,66 ----
          self.coverfile = coverfile
  
!         BaseAnimation.__init__(self, (x, y, width, height), fps=100,
                                 bg_update=False, bg_redraw=False)
          pygoom.set_exportfile(mmap_file)
***************
*** 88,93 ****
          w = font.stringsize(message)
          h = font.height
!         x = config.OSD_OVERSCAN_X + 10
!         y = config.OSD_OVERSCAN_Y + 10
  
          s = Surface((w,h), 0, 32)
--- 88,93 ----
          w = font.stringsize(message)
          h = font.height
!         x = 10
!         y = 10
  
          s = Surface((w,h), 0, 32)
***************
*** 114,132 ****
          # change the cover if neceserry
          if self.coverfile:
!             self.coversurf = transform.scale(image.load(self.coverfile),
!                                              (self.rect.width, self.rect.height))
  
!         self.max_blend = 250
!         self.c_timer = time.time()
  
!         if clear:
!             skin.clear()
  
  
      def set_fullscreen(self):
!         self.set_resolution(config.OSD_OVERSCAN_X, config.OSD_OVERSCAN_Y,
!                             config.CONF.width-2*config.OSD_OVERSCAN_X,
!                             config.CONF.height-2*config.OSD_OVERSCAN_Y,
!                             1, False)
          self.max_blend = 80
  
--- 114,149 ----
          # change the cover if neceserry
          if self.coverfile:
!             s = image.load(self.coverfile)
  
!             # scale and fit to the rect
!             w, h   = s.get_size()
!             aspect = float(w)/float(h)
  
!             if aspect < 1.0:
!                 w = self.rect.width
!                 h = float(w) / aspect
!                 x = 0
!                 y = (self.rect.height - h) / 2
!             else:
!                 h = self.rect.height
!                 w = float(h) * aspect
!                 y = 0
!                 x = (self.rect.width - w)  / 2
! 
!             self.coversurf = (transform.scale(s,(w, h)), x, y)
!             self.max_blend = 250
!             self.c_timer   = time.time()
  
  
      def set_fullscreen(self):
!         t_h = config.CONF.height-2*config.OSD_OVERSCAN_Y
!         w   = config.CONF.width-2*config.OSD_OVERSCAN_X
! 
!         # ~16:9
!         h   = int(9.0*float(w)/16.0)
!         y   = ((t_h-h)/2) + config.OSD_OVERSCAN_Y
!         x   = config.OSD_OVERSCAN_X
! 
!         self.set_resolution(x, y, w, h, 0)
          self.max_blend = 80
  
***************
*** 162,167 ****
  
                  if self.blend > 0:
!                     self.coversurf.set_alpha(self.blend)
!                     gooms.blit(self.coversurf, (0,0))
  
              # draw message
--- 179,185 ----
  
                  if self.blend > 0:
!                     s, x, y = self.coversurf
!                     s.set_alpha(self.blend)
!                     gooms.blit(s, (x, y))
  
              # draw message
***************
*** 178,181 ****
--- 196,203 ----
              osd.update(self.rect)
  
+ ### MODE definitions
+ DOCK = 0 # dock ( default )
+ FULL = 1 # fullscreen
+ NOVI = 2 # no view
  
  class PluginInterface(plugin.Plugin):
***************
*** 187,196 ****
      Activate with:
       plugin.activate('audio.mplayervis')
-     """
  
!     start  = False
      player = None
      visual = None
!     view   = 0
      passed_event = False
      detached = False
--- 209,219 ----
      Activate with:
       plugin.activate('audio.mplayervis')
  
!     When activated one can change between view-modes
!     with the 0 (zero) button.
!     """
      player = None
      visual = None
!     view   = DOCK
      passed_event = False
      detached = False
***************
*** 198,271 ****
      def __init__(self):
          plugin.Plugin.__init__(self)
!         self._type    = "mplayer_audio"
  
          # Event for changing between viewmodes
!         config.EVENTS['audio']['0'] = TOGGLE_OSD
  
!         self.plugin_name = "audio.mplayervis"
          plugin.register(self, self.plugin_name)
  
  
      def play( self, command, player ):
          self.player = player
  
          return command + [ "-af", "export=" + mmap_file ]
  
  
      def eventhandler( self, event=None, arg=None ):
          """
          eventhandler to simulate hide/show of mpav
          """
-         if self.visual:
-             if event == TOGGLE_OSD and self.view in [0, 1]:
-                 if self.view == 1:
-                     self.dock()
  
!                 elif self.view == 0:
!                     self.fullscreen()
  
!             elif event == OSD_MESSAGE and self.view == 1:
                  self.visual.set_message(event.arg)
  
!             elif self.player:
!                 if self.passed_event:
!                     self.passed_event = False
!                     return False
!                 self.passed_event = True
  
!                 # XXX Sending MIXER stuff messes up fullscreen
!                 if self.view == 1 and event in (STOP, PLAY_END, USER_END, PAUSE,
!                                                 AUDIO_SEND_MPLAYER_CMD, PLAY,
!                                                 SEEK,PLAYLIST_PREV, PLAYLIST_NEXT ):
  
!                     return self.player.eventhandler(event)
  
!                 else:
!                     return self.player.eventhandler(event)
  
-             return True
  
  
!     def check_image(self):
!         if self.player:
!             img = self.player.item.image
  
!         if img:
!             self.visual.set_cover(img)
  
  
      def fullscreen(self):
!         if self.player:
              self.player.playerGUI.hide()
  
          self.visual.set_fullscreen()
! 
          rc.app(self)
!         rc.set_context('audio')
!         self.view = 1
  
  
      def dock(self):
!         if self.player:
              rc.app(self.player)
  
--- 221,344 ----
      def __init__(self):
          plugin.Plugin.__init__(self)
!         self._type    = 'mplayer_audio'
!         self.app_mode = 'audio'
  
          # Event for changing between viewmodes
!         config.EVENTS['audio']['0'] = Event('CHANGE_MODE')
  
!         self.plugin_name = 'audio.mplayervis'
          plugin.register(self, self.plugin_name)
  
+         self.view_func = [self.dock,
+                           self.fullscreen,
+                           self.noview]
+ 
  
      def play( self, command, player ):
          self.player = player
+         self.item   = player.playerGUI.item
  
          return command + [ "-af", "export=" + mmap_file ]
  
  
+     def toggle_view(self):
+         """
+         Toggle between view modes
+         """
+         self.view += 1
+         if self.view > 2:
+             self.view = DOCK
+ 
+         if not self.visual:
+             self.start_visual()
+         else:
+             self.view_func[self.view]()
+ 
+ 
      def eventhandler( self, event=None, arg=None ):
          """
          eventhandler to simulate hide/show of mpav
          """
  
!         if event == 'CHANGE_MODE':
!             self.toggle_view()
!             return True
  
!         if self.visual and self.view == FULL:
! 
!             if event == OSD_MESSAGE:
                  self.visual.set_message(event.arg)
+                 return True
  
!             if self.passed_event:
!                 self.passed_event = False
!                 return False
  
!             self.passed_event = True
  
!             if event != PLAY_END:
!                 return self.player.eventhandler(event)
  
!         return False
  
  
+     def item_info(self, fmt=None):
+         """
+         Returns info about the current running song
+         """
  
!         if not fmt:
!             fmt = u'%(a)s : %(l)s  %(n)s.  %(t)s (%(y)s)   [%(s)s]'
  
!         item    = self.item
!         info    = item.info
!         name    = item.name
!         length  = None
!         elapsed = '0'
! 
!         if info['title']:
!             name = info['title']
! 
!         if item.elapsed:
!             elapsed = '%i:%02i' % (int(item.elapsed/60), int(item.elapsed%60))
! 
!         if item.length:
!             length = '%i:%02i' % (int(item.length/60), int(item.length%60))
! 
!         song = { 'a' : info['artist'],
!                  'l' : info['album'],
!                  'n' : info['trackno'],
!                  't' : name,
!                  'e' : elapsed,
!                  'i' : item.image,
!                  'y' : info['year'],
!                  's' : length }
! 
!         return fmt % song
  
  
      def fullscreen(self):
!         if self.player.playerGUI.visible:
              self.player.playerGUI.hide()
  
          self.visual.set_fullscreen()
!         self.visual.set_message(self.item_info())
!         skin.clear()
          rc.app(self)
! 
!     def noview(self):
! 
!         if rc.app() != self.player.eventhandler:
!             rc.app(self.player)
! 
!         if self.visual:
!             self.stop_visual()
! 
!         if not self.player.playerGUI.visible:
!             self.player.playerGUI.show()
  
  
      def dock(self):
!         if rc.app() != self.player.eventhandler:
              rc.app(self.player)
  
***************
*** 290,369 ****
              pass
  
  
-         if self.view == 1:
-             self.player.playerGUI.show()
-             self.visual.set_resolution(x, y, w, h, 0, True)
- 
-         else:
-             self.visual.set_resolution(x, y, w, h, 0, False)
- 
-         self.view = 0
- 
- 
-     def detach(self):
-         rc.app(None)
-         self.view = 3
- 
- 
-     def stdout(self, line):
-         """
-         get information from mplayer stdout
-         """
-         if self.visual:
-             return
- 
-         try:
-             if line.find( "[export] Memory mapped to file: "+mmap_file ) == 0:
-                 self.start = True
-                 _debug_( "Detected MPlayer 'export' audio filter! Using MPAV." )
-         except:
-             pass
- 
- 
-     def elapsed(self, elapsed):
-         # Be sure mplayer started playing, it need to setup mmap first.
-         if self.start and elapsed > 0 and self.player and 
self.player.playerGUI.visible:
-             self.start_visual()
-             self.start = False
  
  
      def start_visual(self):
!         if not self.visual:
!             self.visual = mpv_Goom(300, 300, 150, 150)
! 
!             if self.player and self.view == 1:
!                 self.visual.set_message(self.player.item.name, 10)
! 
!             self.check_image()
  
!             # plain docked in playergui
!             if self.view == 0:
!                 self.dock()
  
!             # plain fullscreen
!             elif self.view == 1:
!                 self.fullscreen()
  
!             # previously detached
!             elif self.view == 3 and self.player.playerGUI.visible:
!                 skin.clear()
!                 self.view = 0
!                 self.dock()
  
!             render.get_singleton().set_realtime(True)
              self.visual.start()
  
      def stop_visual(self):
          if self.visual:
              self.visual.remove()
-             render.get_singleton().set_realtime(False)
-             pygoom.quit()
              self.visual = None
  
-             # XXX this is hackish()
-             if self.view == 3 and self.player.playerGUI.visible:
-                 skin.clear()
  
      def stop(self):
          self.stop_visual()
  
--- 363,407 ----
              pass
  
+         self.visual.set_resolution(x, y, w, h, 0, False)
  
  
  
      def start_visual(self):
!         if self.visual or self.view == NOVI:
!             return
  
!         if rc.app() == self.player.eventhandler:
  
!             self.visual = mpv_Goom(300, 300, 150, 150, self.item.image)
  
!             if self.view == FULL:
!                 self.visual.set_message(self.item.name, 10)
  
!             self.view_func[self.view]()
              self.visual.start()
  
+ 
      def stop_visual(self):
          if self.visual:
              self.visual.remove()
              self.visual = None
+             pygoom.quit()
  
  
      def stop(self):
          self.stop_visual()
  
+ 
+     def stdout(self, line):
+         """
+         get information from mplayer stdout
+ 
+         It should be safe to do call start() from here
+         since this is now a callback from main.
+         """
+         if self.visual:
+             return
+ 
+         if line.find( "[export] Memory mapped to file: " + mmap_file ) == 0:
+             _debug_( "Detected MPlayer 'export' audio filter! Using MPAV." )
+             self.start_visual()



-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g. 
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to