Update of /cvsroot/freevo/freevo/src/video/plugins
In directory sc8-pr-cvs1:/tmp/cvs-serv6299

Modified Files:
        mplayer.py 
Log Message:
bmovl support

Index: mplayer.py
===================================================================
RCS file: /cvsroot/freevo/freevo/src/video/plugins/mplayer.py,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** mplayer.py  23 Sep 2003 13:47:48 -0000      1.26
--- mplayer.py  1 Oct 2003 20:39:34 -0000       1.27
***************
*** 21,29 ****
  # -----------------------------------------------------------------------
  # $Log$
! # Revision 1.26  2003/09/23 13:47:48  outlyer
! # Remove this for now...
! #
! # Revision 1.25  2003/09/23 13:39:51  outlyer
! # Remove more informational chatter.
  #
  # Revision 1.24  2003/09/20 17:03:20  dischi
--- 21,26 ----
  # -----------------------------------------------------------------------
  # $Log$
! # Revision 1.27  2003/10/01 20:39:34  dischi
! # bmovl support
  #
  # Revision 1.24  2003/09/20 17:03:20  dischi
***************
*** 87,90 ****
--- 84,89 ----
  import osd
  osd = osd.get_singleton()
+ import skin
+ import pygame
  
  # contains an initialized MPlayer() object
***************
*** 110,114 ****
              data = re.search( "^MPlayer (?P<version>\S+)", data )
              if data:                
!                 _debug_("MPlayer version is: %s" % data.group( "version" ),2)
                  data = data.group( "version" )
                  if data[ 0 ] == "1":
--- 109,113 ----
              data = re.search( "^MPlayer (?P<version>\S+)", data )
              if data:                
!                 _debug_("MPlayer version is: %s" % data.group( "version" ))
                  data = data.group( "version" )
                  if data[ 0 ] == "1":
***************
*** 118,122 ****
                  elif data[ 0 : 7 ] == "dev-CVS":
                      mplayer_version = 9999
!                 _debug_("MPlayer version set to: %s" % mplayer_version,2)
                      
          child.wait()
--- 117,121 ----
                  elif data[ 0 : 7 ] == "dev-CVS":
                      mplayer_version = 9999
!                 _debug_("MPlayer version set to: %s" % mplayer_version)
                      
          child.wait()
***************
*** 165,169 ****
          self.mode = mode   # setting global var to mode.
  
!         _debug_('MPlayer.play(): mode=%s, filename=%s' % (mode, filename),2)
  
          if mode == 'file' and not os.path.isfile(filename) and not network_play:
--- 164,168 ----
          self.mode = mode   # setting global var to mode.
  
!         _debug_('MPlayer.play(): mode=%s, filename=%s' % (mode, filename))
  
          if mode == 'file' and not os.path.isfile(filename) and not network_play:
***************
*** 233,236 ****
--- 232,238 ----
              mpl += (' ' + config.MPLAYER_SOFTWARE_SCALER )
              
+         if os.path.exists('/tmp/bmovl'):
+             mpl += ' -vf bmovl=1:0:/tmp/bmovl'
+ 
          command = mpl + ' "' + filename + '"'
  
***************
*** 265,278 ****
          self.file = item
  
          self.thread.start(MPlayerApp, (command, item, network_play))
  
          self.item  = item
  
!         _debug_('MPlayer.play(): Starting thread, cmd=%s' % command,2)
          rc.app(self)
  
          return None
      
  
      def stop(self):
          """
--- 267,379 ----
          self.file = item
  
+         self.bmovl = None
          self.thread.start(MPlayerApp, (command, item, network_play))
  
          self.item  = item
  
!         _debug_('MPlayer.play(): Starting thread, cmd=%s' % command)
          rc.app(self)
  
+         # bmovl support?
+         if os.path.exists('/tmp/bmovl'):
+             # show warning until this code is stable
+             print 'Found /tmp/bmovl, activating experimental bmovl support'
+             self.bmovl = os.open('/tmp/bmovl', os.O_WRONLY)
+             self.osd_visible = False
          return None
      
  
+     def update_osd(self):
+         """
+         bmovl: update elapsed time and current time
+         """
+         s = self.osd_bg.convert()
+         length = self.item.elapsed
+         pos = osd.drawstringframed('%d:%02d:%02d' % ( length / 3600, (length % 3600) 
/ 60,
+                                                       length % 60),
+                                    10, 10, osd.width / 2, -1, self.osd_font.font,
+                                    self.osd_font.color, layer=s)
+ 
+         length = self.item.getattr('length')
+         if length:
+             pos = osd.drawstringframed(length, 10, pos[1][3]+5, osd.width / 2, -1,
+                                        self.osd_font.font, self.osd_font.color,
+                                        layer=s)
+         
+         clock = time.strftime('%a %I:%M %P')
+         osd.drawstringframed(clock, 
s.get_width()-10-self.osd_font.font.stringsize(clock),
+                              10, osd.width / 2, -1, self.osd_font.font,
+                              self.osd_font.color, layer=s)
+ 
+         os.write(self.bmovl, 'RGBA32 %d %d %d %d %d %d\n' % \
+                  (s.get_width(), s.get_height(), 0, osd.height-s.get_height(), 0, 0))
+         os.write(self.bmovl, pygame.image.tostring(s, 'RGBA'))
+ 
+     
+     def show_osd(self):
+         """
+         bmovl: init bmovl osd and show it
+         """
+         _debug_('show osd')
+ 
+         if not self.item.elapsed:
+             _debug_('not ready')
+             return
+         
+         height = config.OVERSCAN_Y + 100
+         if not skin.get_singleton().settings.images.has_key('background'):
+             _debug_('no background')
+             return
+         
+         bg = osd.loadbitmap(skin.get_singleton().settings.images['background'])
+         bg = pygame.transform.scale(bg, (osd.width, osd.height))
+ 
+         font = skin.get_singleton().GetFont('title')
+         font_tagline = skin.get_singleton().GetFont('info tagline')
+         
+         topbar = bg.subsurface((0,0,osd.width,height)).convert()
+         osd.drawbox(0, height-1, osd.width, height-1, width=1, color=0x000000, 
layer=topbar)
+ 
+         title   = self.item.name
+         tagline = self.item.getattr('tagline')
+ 
+         if self.item.tv_show:
+             show    = config.TV_SHOW_REGEXP_SPLIT(self.item.name)
+             title   = show[0] + " " + show[1] + "x" + show[2]
+             tagline = show[3]
+         
+         pos = osd.drawstringframed(title, 10, 10, osd.width-config.OVERSCAN_X-130,
+                                    -1, font.font, font.color, layer=topbar)
+         if tagline:
+             osd.drawstringframed(tagline, 10, pos[1][3]+5,
+                                  osd.width-config.OVERSCAN_X-130, -1,
+                                  font_tagline.font, font_tagline.color, layer=topbar)
+ 
+         if self.item.image:
+             image = pygame.transform.scale(osd.loadbitmap(self.item.image), (65, 90))
+             topbar.blit(image, (osd.width-config.OVERSCAN_X-100, 
config.OVERSCAN_Y+5))
+ 
+         os.write(self.bmovl, 'RGBA32 %d %d %d %d %d %d\n' % \
+                  (topbar.get_width(), topbar.get_height(), 0, 0, 0, 1))
+         os.write(self.bmovl, pygame.image.tostring(topbar, 'RGBA'))
+ 
+         self.osd_bg   = 
bg.subsurface((0,osd.height-height,osd.width,height)).convert()
+         osd.drawbox(0, 0, osd.width, 0, width=1, color=0x000000, layer=self.osd_bg)
+         self.osd_font = skin.get_singleton().GetFont('clock')
+ 
+         self.update_osd()
+         self.thread.app.refresh = self.update_osd
+         os.write(self.bmovl, 'SHOW\n')
+ 
+ 
+     def hide_osd(self):
+         """
+         bmovl: hide osd
+         """
+         _debug_('hide')
+         self.thread.app.refresh = None
+         os.write(self.bmovl, 'HIDE\n')
+         
+         
      def stop(self):
          """
***************
*** 281,285 ****
          self.thread.stop('quit\n')
          rc.app(None)
! 
  
  
--- 382,388 ----
          self.thread.stop('quit\n')
          rc.app(None)
!         if self.bmovl:
!             os.close(self.bmovl)
!             self.bmovl = None
  
  
***************
*** 331,334 ****
--- 434,445 ----
              return self.item.eventhandler(event)
  
+         if event == TOGGLE_OSD and self.bmovl:
+             if self.osd_visible:
+                 self.hide_osd()
+             else:
+                 self.show_osd()
+             self.osd_visible = not self.osd_visible
+             return True
+ 
          try:
              if event == VIDEO_SEND_MPLAYER_CMD:
***************
*** 429,433 ****
          self.exit_type = None
          self.osdfont = osd.getfont(config.OSD_DEFAULT_FONTNAME, 
config.OSD_DEFAULT_FONTSIZE)
!                 
          
      def kill(self):
--- 540,544 ----
          self.exit_type = None
          self.osdfont = osd.getfont(config.OSD_DEFAULT_FONTNAME, 
config.OSD_DEFAULT_FONTSIZE)
!         self.refresh = None
          
      def kill(self):
***************
*** 478,483 ****
              m = self.RE_TIME(line) # Convert decimal
              if hasattr(m,'group'):
                  self.item.elapsed = int(m.group(1))+1
! 
          elif line.find("Exiting...") == 0:
              m = self.RE_EXIT(line)
--- 589,597 ----
              m = self.RE_TIME(line) # Convert decimal
              if hasattr(m,'group'):
+                 t = self.item.elapsed
                  self.item.elapsed = int(m.group(1))+1
!                 if t != self.item.elapsed and self.refresh:
!                     self.refresh()
!                     
          elif line.find("Exiting...") == 0:
              m = self.RE_EXIT(line)




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Freevo-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to