[pitivi] SmartVideoMixer: Force usage of AYUV and use black background.
- From: Edward Hervey <edwardrv src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [pitivi] SmartVideoMixer: Force usage of AYUV and use black background.
- Date: Thu, 19 Nov 2009 18:35:23 +0000 (UTC)
commit a952c46560b0a25e569c6ce95bec7003b1db290d
Author: Edward Hervey <bilboed bilboed com>
Date: Sun Aug 23 17:19:11 2009 +0200
SmartVideoMixer: Force usage of AYUV and use black background.
We have operational video mixing :)
pitivi/elements/mixer.py | 24 ++++++++++++++++++------
1 files changed, 18 insertions(+), 6 deletions(-)
---
diff --git a/pitivi/elements/mixer.py b/pitivi/elements/mixer.py
index 75c4da9..fda8978 100644
--- a/pitivi/elements/mixer.py
+++ b/pitivi/elements/mixer.py
@@ -128,6 +128,8 @@ class SmartVideomixerBin(gst.Bin):
def __init__(self):
gst.Bin.__init__(self)
self.videomixer = gst.element_factory_make("videomixer", "real-videomixer")
+ # black background
+ self.videomixer.props.background = 1
# FIXME : USE THE PROJECT SETTINGS FOR THESE CAPS !
csp = gst.element_factory_make("ffmpegcolorspace")
self.add(self.videomixer, csp)
@@ -136,7 +138,8 @@ class SmartVideomixerBin(gst.Bin):
srcpad.set_active(True)
self.add_pad(srcpad)
self.pad_count = 0
- self.inputs = {} # key:pad_name, value:(sinkpad, ffmpegcolorspace, videomixerpad)
+ self.inputs = {} # key : pad_name,
+ # value : (sinkpad, ffmpegcolorspace, capsfilter, videomixerpad)
def do_request_new_pad(self, template, name=None):
self.debug("template:%r, name:%r" % (template, name))
@@ -146,16 +149,23 @@ class SmartVideomixerBin(gst.Bin):
return None
csp = gst.element_factory_make("ffmpegcolorspace", "csp-%d" % self.pad_count)
+ capsfilter = gst.element_factory_make("capsfilter", "capsfilter-%d" % self.pad_count)
+ capsfilter.props.caps = gst.Caps("video/x-raw-yuv,format=(fourcc)AYUV")
- self.add(csp)
+ self.add(csp, capsfilter)
+
+ csp.link(capsfilter)
csp.sync_state_with_parent()
+ capsfilter.sync_state_with_parent()
+
videomixerpad = self.videomixer.get_request_pad("sink_%d")
- csp.get_pad("src").link(videomixerpad)
+
+ capsfilter.get_pad("src").link(videomixerpad)
pad = gst.GhostPad(name, csp.get_pad("sink"))
pad.set_active(True)
self.add_pad(pad)
- self.inputs[name] = (pad, csp, videomixerpad)
+ self.inputs[name] = (pad, csp, capsfilter, videomixerpad)
self.pad_count += 1
return pad
@@ -163,12 +173,14 @@ class SmartVideomixerBin(gst.Bin):
self.debug("pad:%r" % pad)
name = pad.get_name()
if name in self.inputs.keys():
- sinkpad, csp, videomixerpad = self.inputs.pop(name)
+ sinkpad, csp, capsfilter, videomixerpad = self.inputs.pop(name)
self.remove_pad(sinkpad)
- csp.get_pad("src").unlink(videomixerpad)
+ capsfilter.get_pad("src").unlink(videomixerpad)
self.videomixer.release_request_pad(videomixerpad)
csp.set_state(gst.STATE_NULL)
+ capsfilter.set_state(gst.STATE_NULL)
self.remove(csp)
+ self.remove(capsfilter)
self.debug("done")
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]