![]() |
![]() |
![]() |
GStreamer 0.9 Core Reference Manual | ![]() |
---|
GstBaseTransformGstBaseTransform — Base class for simple tranform filters |
#include <gst/base/gstbasetransform.h> GstBaseTransform; GstBaseTransformClass; gboolean gst_base_transform_is_passthrough (GstBaseTransform *trans); void gst_base_transform_set_passthrough (GstBaseTransform *trans, gboolean passthrough); #define GST_BASE_TRANSFORM_SINK_NAME #define GST_BASE_TRANSFORM_SRC_NAME
This base class is for filter elements that process data.
one sinkpad and one srcpad
possible formats on sink and source pad implemented with custom transform_caps function. By default uses same format on sink and source.
handles state changes
does flushing
push mode
pull mode if transform can operate on arbitrary data
typedef struct { GstElementClass parent_class; /* virtual methods for subclasses */ /* given the (non-)fixed simple caps on the pad in the given direction, * what can I do on the other pad ? */ GstCaps* (*transform_caps) (GstBaseTransform *trans, GstPadDirection direction, GstCaps *caps); /* given caps on one pad, how would you fixate caps on the other pad ? */ void (*fixate_caps) (GstBaseTransform *trans, GstPadDirection direction, GstCaps *caps, GstCaps *othercaps); /* given the size of a buffer in the given direction with the given caps, * calculate the byte size of an buffer on the other side with the given * other caps; the default * implementation uses get_size and keeps the number of units the same */ gboolean (*transform_size) (GstBaseTransform *trans, GstPadDirection direction, GstCaps *caps, guint size, GstCaps *othercaps, guint *othersize); /* get the byte size of one unit for a given caps. * Always needs to be implemented if the transform is not in-place. */ gboolean (*get_unit_size) (GstBaseTransform *trans, GstCaps *caps, guint *size); /* notify the subclass of new caps */ gboolean (*set_caps) (GstBaseTransform *trans, GstCaps *incaps, GstCaps *outcaps); /* start and stop processing, ideal for opening/closing the resource */ gboolean (*start) (GstBaseTransform *trans); gboolean (*stop) (GstBaseTransform *trans); gboolean (*event) (GstBaseTransform *trans, GstEvent *event); /* transform one incoming buffer to one outgoing buffer. * Always needs to be implemented. * transform function is allowed to change size/timestamp/duration of * the outgoing buffer. */ GstFlowReturn (*transform) (GstBaseTransform *trans, GstBuffer *inbuf, GstBuffer *outbuf); /* transform a buffer inplace */ GstFlowReturn (*transform_ip) (GstBaseTransform *trans, GstBuffer *buf); } GstBaseTransformClass;
gboolean gst_base_transform_is_passthrough (GstBaseTransform *trans);
See if trans
is configured as a passthrough transform.
trans : |
the GstBaseTransform to query |
Returns : | TRUE is the transform is configured in passthrough mode. MT safe. |
void gst_base_transform_set_passthrough (GstBaseTransform *trans, gboolean passthrough);
Set passthrough mode for this filter by default. This is mostly usefull for filters that do not care about negotiation.
MT safe.
trans : |
the GstBaseTransform to set |
passthrough : |
boolean indicating passthrough mode. |
<< GstBaseSink | GstCollectPads >> |