mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-27 18:50:48 +00:00
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 https://gitlab.freedesktop.org/gstreamer/gst-python/issues/19
This commit is contained in:
parent
a37b7c7a13
commit
1cece5bde5
1 changed files with 16 additions and 0 deletions
|
@ -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:
|
||||||
|
|
Loading…
Reference in a new issue