# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: fcasanova@fluendo.com-20090825113342-9f9rq0p7bzoq7o4l # target_branch: lp:elisa # testament_sha1: 89d4db8330efe07b0e0dfa654a2f0a4ffb29ba02 # timestamp: 2009-08-25 13:33:47 +0200 # base_revision_id: uriboni@fluendo.com-20090821123151-\ # hga9i4ix80vm3efa # # Begin patch === modified file 'elisa-plugins/elisa/plugins/base/models/media.py' --- elisa-plugins/elisa/plugins/base/models/media.py 2009-07-23 11:31:41 +0000 +++ elisa-plugins/elisa/plugins/base/models/media.py 2009-08-25 11:33:42 +0000 @@ -44,6 +44,9 @@ @type allow_pause: C{bool} @ivar allow_seek: whether the player can seek inside the media playback or not @type allow_seek: C{bool} + @ivar source_properties: the properties of the source element of the + GStreamer pipeline for this playable media + @type source_properties: dictionnary of C{unicode} """ def __init__(self): @@ -55,6 +58,7 @@ self.title = None self.allow_pause = True self.allow_seek = True + self.source_properties = {} def __eq__(self, other): """ === modified file 'elisa-plugins/elisa/plugins/poblesec/player_video.py' --- elisa-plugins/elisa/plugins/poblesec/player_video.py 2009-07-30 15:48:35 +0000 +++ elisa-plugins/elisa/plugins/poblesec/player_video.py 2009-08-25 11:33:42 +0000 @@ -517,6 +517,12 @@ self.pipeline.connect('notify::stream-info', self._on_stream_infos_notify) + # Execute callback when the source is created + self.pipeline.connect('notify::source', self._source_created_cb) + # The source properties for the current media + # if empty, no special source properties + self._media_source_properties = {} + pbus = self.pipeline.get_bus() pbus.connect('message::eos', self._message_eos_cb) pbus.connect('message::error', self._message_error_cb) @@ -654,6 +660,20 @@ def _message_tag_cb(self, bus, message): self.emit("metadata-found", dict(message.parse_tag())) + def _source_created_cb(self, *args): + if self._media_source_properties != {}: + # This media has custom source properties, let's set them + for arg, val in self._media_source_properties.iteritems(): + try: + self.pipeline.get_property('source').set_property(arg, val) + except: + self.warning('Source element %s doesn t have property %s' % \ + (self.pipeline.get_property('source'), arg)) + continue + # clean the self._media_source_properties so that the next time + # a source is created, we will have a clean properties dictionary + self._media_source_properties = {} + def _load_subs(self, uri): found = False if uri.scheme == 'file': @@ -713,6 +733,8 @@ return dfr def play_model(self, media_model): + if media_model.source_properties != {}: + self._media_source_properties = media_model.source_properties self.set_playlist(PlaylistModel()) self.playlist.append(media_model) self.play_at_index(0) # Begin bundle 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 ChIN6H0VIA==