Commit 1cece5bd authored by Antonio Ospite's avatar Antonio Ospite

overrides: add a set_caps() method to the Pad override

The C API provides the gst_pad_set_caps() helper which makes it easier
to set caps on pads (see gst/gstcompat.h in gstreamer core).

Add such handy helper to the python bindings too.

The implementation follows as close as possible the one in gstcompat.h
with two changes:
  1. the type check on the pad has been removed because self is
     guaranteed to be a Gst.Pad in python.
  2. the null check on the caps has been extended to be a type check.

Fixes #19
parent a37b7c7a
Pipeline #14459 passed with stages
in 131 minutes and 29 seconds
...@@ -156,6 +156,22 @@ class Pad(Gst.Pad): ...@@ -156,6 +156,22 @@ class Pad(Gst.Pad):
def query_caps(self, filter=None): def query_caps(self, filter=None):
return Gst.Pad.query_caps(self, filter) return Gst.Pad.query_caps(self, filter)
def set_caps(self, caps):
if not isinstance(caps, Gst.Caps):
raise TypeError("%s is not a Gst.Caps." % (type(caps)))
if not caps.is_fixed():
return False
event = Gst.Event.new_caps(caps)
if self.direction == Gst.PadDirection.SRC:
res = self.push_event(event)
else:
res = self.send_event(event)
return res
def link(self, pad): def link(self, pad):
ret = Gst.Pad.link(self, pad) ret = Gst.Pad.link(self, pad)
if ret != Gst.PadLinkReturn.OK: if ret != Gst.PadLinkReturn.OK:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment