[pitivi] project: Refactor encoding profile setters into a common method
- From: Thibault Saunier <tsaunier src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] project: Refactor encoding profile setters into a common method
- Date: Sun, 30 Aug 2020 21:58:03 +0000 (UTC)
commit 57bd825800e4c7bc738d7b55a60f8e0048b61e7f
Author: Alexandru Băluț <alexandru balut gmail com>
Date: Sun Aug 30 22:55:35 2020 +0200
project: Refactor encoding profile setters into a common method
pitivi/project.py | 68 +++++++++++++++++++++++++------------------------------
1 file changed, 31 insertions(+), 37 deletions(-)
---
diff --git a/pitivi/project.py b/pitivi/project.py
index 86d4f29c..8612ce7a 100644
--- a/pitivi/project.py
+++ b/pitivi/project.py
@@ -1083,19 +1083,8 @@ class Project(Loggable, GES.Project):
return self.audio_profile.get_preset_name()
@aencoder.setter
- def aencoder(self, value):
- if self.audio_profile.get_preset_name() != value and value:
- caps = self._get_caps_from_feature(value)
- if caps:
- self.audio_profile.set_format(caps)
-
- # Set the name of the factory for producing the audio encoder.
- self.audio_profile.set_preset_name(value)
-
- # Make sure the encoder does not use any encoding preset.
- # Gst.Preset can be set exclusively through EncodingTargets for now.
- self.audio_profile.set_preset(None)
-
+ def aencoder(self, preset_factory_name):
+ if self._update_encoding_profile(self.audio_profile, preset_factory_name):
self._emit_change("aencoder")
@property
@@ -1103,19 +1092,8 @@ class Project(Loggable, GES.Project):
return self.video_profile.get_preset_name()
@vencoder.setter
- def vencoder(self, value):
- if self.video_profile.get_preset_name() != value and value:
- caps = self._get_caps_from_feature(value)
- if caps:
- self.video_profile.set_format(caps)
-
- # Set the name of the factory for producing the video encoder.
- self.video_profile.set_preset_name(value)
-
- # Make sure the encoder does not use any encoding preset.
- # Gst.Preset can be set exclusively through EncodingTargets for now.
- self.video_profile.set_preset(None)
-
+ def vencoder(self, preset_factory_name):
+ if self._update_encoding_profile(self.video_profile, preset_factory_name):
self._emit_change("vencoder")
@property
@@ -1123,20 +1101,36 @@ class Project(Loggable, GES.Project):
return self.container_profile.get_preset_name()
@muxer.setter
- def muxer(self, value):
- if self.container_profile.get_preset_name() != value and value:
- caps = self._get_caps_from_feature(value)
- if caps:
- self.container_profile.set_format(caps)
+ def muxer(self, preset_factory_name):
+ if self._update_encoding_profile(self.container_profile, preset_factory_name):
+ self._emit_change("muxer")
+
+ def _update_encoding_profile(self, profile, preset_factory_name):
+ """Updates the specified encoding profile.
+
+ Args:
+ profile (GstPbutils.EncodingProfile): The profile to be updated.
+ preset_factory_name (str): The name of the Gst.Preset’s factory
+ to be used in the profile.
- # Set the name of the factory for producing the container.
- self.container_profile.set_preset_name(value)
+ Returns:
+ bool: Whether the profile has been changed.
+ """
+ if profile.get_preset_name() == preset_factory_name or not preset_factory_name:
+ return False
- # Make sure the encoder does not use any encoding preset.
- # Gst.Preset can be set exclusively through EncodingTargets for now.
- self.container_profile.set_preset(None)
+ caps = self._get_caps_from_feature(preset_factory_name)
+ if caps:
+ profile.set_format(caps)
- self._emit_change("muxer")
+ # Set the name of the factory for producing the audio encoder.
+ profile.set_preset_name(preset_factory_name)
+
+ # Make sure the encoder does not use any encoding preset.
+ # Gst.Preset can be set exclusively through EncodingTargets for now.
+ profile.set_preset(None)
+
+ return True
def _get_caps_from_feature(self, name):
"""Gets the caps for the source static pad template of a feature."""
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]