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