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