Author: dmeyer
Date: Thu Dec 21 13:28:07 2006
New Revision: 2264

Modified:
   trunk/popcorn/src/backends/base.py
   trunk/popcorn/src/backends/gstreamer/player.py
   trunk/popcorn/src/backends/mplayer/player.py
   trunk/popcorn/src/backends/xine/player.py
   trunk/popcorn/src/generic.py

Log:
add generic property support

Modified: trunk/popcorn/src/backends/base.py
==============================================================================
--- trunk/popcorn/src/backends/base.py  (original)
+++ trunk/popcorn/src/backends/base.py  Thu Dec 21 13:28:07 2006
@@ -31,6 +31,7 @@
 import os
 import md5
 import logging
+import copy
 
 # kaa imports
 import kaa.notifier
@@ -50,7 +51,7 @@
 
     _instance_count = 0
 
-    def __init__(self, config):
+    def __init__(self, config, properties):
         self.signals = {
             "elapsed": kaa.notifier.Signal(),
             "stream_changed": kaa.notifier.Signal(),
@@ -63,6 +64,7 @@
         self._size = None
         self._aspect = None
         self._config = config
+        self._properties = copy.copy(properties)
         self._instance_id = "popcorn-%d-%d" % (os.getpid(), 
self._instance_count)
         MediaPlayer._instance_count += 1
 

Modified: trunk/popcorn/src/backends/gstreamer/player.py
==============================================================================
--- trunk/popcorn/src/backends/gstreamer/player.py      (original)
+++ trunk/popcorn/src/backends/gstreamer/player.py      Thu Dec 21 13:28:07 2006
@@ -41,8 +41,8 @@
 
 class GStreamer(MediaPlayer):
 
-    def __init__(self, config):
-        super(GStreamer, self).__init__(config)
+    def __init__(self, config, properties):
+        super(GStreamer, self).__init__(config, properties)
         self._state = STATE_NOT_RUNNING
         self._gst = None
 

Modified: trunk/popcorn/src/backends/mplayer/player.py
==============================================================================
--- trunk/popcorn/src/backends/mplayer/player.py        (original)
+++ trunk/popcorn/src/backends/mplayer/player.py        Thu Dec 21 13:28:07 2006
@@ -157,8 +157,8 @@
     RE_STATUS = re.compile("V:\s*([\d+\.]+)|A:\s*([\d+\.]+)\s\W")
     RE_SWS = re.compile("^SwScaler: [0-9]+x[0-9]+ -> ([0-9]+)x([0-9]+)")
 
-    def __init__(self, config):
-        super(MPlayer, self).__init__(config)
+    def __init__(self, config, properties):
+        super(MPlayer, self).__init__(config, properties)
         self._state = STATE_NOT_RUNNING
         self._mp_cmd = self._config.mplayer.path
         if not self._mp_cmd:

Modified: trunk/popcorn/src/backends/xine/player.py
==============================================================================
--- trunk/popcorn/src/backends/xine/player.py   (original)
+++ trunk/popcorn/src/backends/xine/player.py   Thu Dec 21 13:28:07 2006
@@ -52,8 +52,8 @@
 
 class Xine(MediaPlayer):
 
-    def __init__(self, config):
-        super(Xine, self).__init__(config)
+    def __init__(self, config, properties):
+        super(Xine, self).__init__(config, properties)
         self._check_new_frame_timer = 
kaa.notifier.WeakTimer(self._check_new_frame)
         self._is_in_menu = False
         self._cur_frame_output_mode = [True, False, None] # vo, shmem, size

Modified: trunk/popcorn/src/generic.py
==============================================================================
--- trunk/popcorn/src/generic.py        (original)
+++ trunk/popcorn/src/generic.py        Thu Dec 21 13:28:07 2006
@@ -87,6 +87,11 @@
         self.set_window(window)
 
         self._config = config
+        self._properties = {
+            'deinterlace': 'auto',
+            'postprocessing': True,
+            'software_scaler': True,
+        }
         
         self.signals = {
 
@@ -231,7 +236,7 @@
         """
         Create a player based on cls.
         """
-        self._player = cls(self._config)
+        self._player = cls(self._config, self._properties)
         self._player._state_changed.connect_weak(self._state_change)
         for signal in self._player.signals:
             
self._player.signals[signal].connect_weak(self.signals[signal].emit)
@@ -469,6 +474,35 @@
             return self._player.set_aspect(aspect)
 
 
+    def set_property(self, prop, value):
+        """
+        Set a property to a new value. If an url is open right now, this 
+        will only affect the current url.
+        """
+        if self._player:
+            self._player._properties[prop] = value
+        else:
+            self._properties[prop] = value
+
+
+    def get_property(self, prop):
+        """
+        Get property value.
+        """
+        if self._player:
+            return self._player._properties.get(prop)
+        return self._properties.get(prop)
+
+
+    def properties(self):
+        """
+        Return a list of all known properties.
+        """
+        if self._player:
+            return self._player._properties.keys()
+        return self._properties.keys()
+        
+        
     # For CAP_OSD
 
     def osd_can_update(self):

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to