[pitivi] project: Reuse logic for picking source caps
- From: Alexandru Băluț <alexbalut src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] project: Reuse logic for picking source caps
- Date: Mon, 1 Aug 2016 17:09:01 +0000 (UTC)
commit 8f74ce56a9f4c01366a271df019dcfb24c92d92f
Author: Alexandru Băluț <alexandru balut gmail com>
Date: Mon Aug 1 00:22:35 2016 +0200
project: Reuse logic for picking source caps
Reviewed-by: Thibault Saunier <tsaunier gnome org>
Differential Revision: https://phabricator.freedesktop.org/D1229
pitivi/project.py | 52 +++++++++++++++++++++-------------------------------
1 files changed, 21 insertions(+), 31 deletions(-)
---
diff --git a/pitivi/project.py b/pitivi/project.py
index 4acf539..f710a3d 100644
--- a/pitivi/project.py
+++ b/pitivi/project.py
@@ -876,17 +876,10 @@ class Project(Loggable, GES.Project):
@aencoder.setter
def aencoder(self, value):
if self.audio_profile.get_preset_name() != value and value:
- feature = Gst.Registry.get().lookup_feature(value)
- if feature is None:
- self.error("%s not in registry", value)
- else:
- for template in feature.get_static_pad_templates():
- if template.name_template == "src":
- audiotype = template.get_caps()[0].to_string()
- break
- self.audio_profile.set_format(Gst.Caps(audiotype))
+ caps = self._get_caps_from_feature(value)
+ if caps:
+ self.audio_profile.set_format(caps)
self.audio_profile.set_preset_name(value)
-
self._emitChange("rendering-settings-changed", "aencoder", value)
@property
@@ -896,18 +889,10 @@ class Project(Loggable, GES.Project):
@vencoder.setter
def vencoder(self, value):
if self.video_profile.get_preset_name() != value and value:
- feature = Gst.Registry.get().lookup_feature(value)
- if feature is None:
- self.error("%s not in registry", value)
- else:
- for template in feature.get_static_pad_templates():
- if template.name_template == "src":
- videotype = template.get_caps()[0].to_string()
- break
- self.video_profile.set_format(Gst.Caps(videotype))
-
+ caps = self._get_caps_from_feature(value)
+ if caps:
+ self.video_profile.set_format(caps)
self.video_profile.set_preset_name(value)
-
self._emitChange("rendering-settings-changed", "vencoder", value)
@property
@@ -917,19 +902,24 @@ class Project(Loggable, GES.Project):
@muxer.setter
def muxer(self, value):
if self.container_profile.get_preset_name() != value and value:
- feature = Gst.Registry.get().lookup_feature(value)
- if feature is None:
- self.error("%s not in registry", value)
- else:
- for template in feature.get_static_pad_templates():
- if template.name_template == "src":
- muxertype = template.get_caps()[0].to_string()
- break
- self.container_profile.set_format(Gst.Caps(muxertype))
+ caps = self._get_caps_from_feature(value)
+ if caps:
+ self.container_profile.set_format(caps)
self.container_profile.set_preset_name(value)
-
self._emitChange("rendering-settings-changed", "muxer", value)
+ def _get_caps_from_feature(self, name):
+ """Gets the caps for the source static pad template of a feature."""
+ feature = Gst.Registry.get().lookup_feature(name)
+ if not feature:
+ self.error("%s not in registry", name)
+ return None
+ for template in feature.get_static_pad_templates():
+ if template.name_template == "src":
+ return Gst.Caps(template.get_caps()[0].to_string())
+ self.error("%s has no source static pad templates", name)
+ return None
+
@property
def render_scale(self):
return self.get_meta("render-scale")
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]