mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-22 14:06:23 +00:00
trans: add transform_ip_on_passthrough
Add an option to control if transform_ip is called in passthrough mode or not. for elements that don't want to look at the data in passthrough mode, this can avoid some extra processing, mostly in subclasses.
This commit is contained in:
parent
f3aad8b430
commit
a3d5db491c
2 changed files with 11 additions and 3 deletions
|
@ -394,6 +394,7 @@ gst_base_transform_class_init (GstBaseTransformClass * klass)
|
|||
gobject_class->finalize = gst_base_transform_finalize;
|
||||
|
||||
klass->passthrough_on_same_caps = FALSE;
|
||||
klass->transform_ip_on_passthrough = TRUE;
|
||||
|
||||
klass->transform_caps =
|
||||
GST_DEBUG_FUNCPTR (gst_base_transform_default_transform_caps);
|
||||
|
@ -1996,8 +1997,8 @@ no_qos:
|
|||
/* In passthrough mode, give transform_ip a look at the
|
||||
* buffer, without making it writable, or just push the
|
||||
* data through */
|
||||
if (bclass->transform_ip) {
|
||||
GST_DEBUG_OBJECT (trans, "doing passthrough transform");
|
||||
if (bclass->transform_ip_on_passthrough && bclass->transform_ip) {
|
||||
GST_DEBUG_OBJECT (trans, "doing passthrough transform_ip");
|
||||
ret = bclass->transform_ip (trans, *outbuf);
|
||||
} else {
|
||||
GST_DEBUG_OBJECT (trans, "element is in passthrough");
|
||||
|
|
|
@ -107,8 +107,14 @@ struct _GstBaseTransform {
|
|||
/**
|
||||
* GstBaseTransformClass:
|
||||
* @parent_class: Element parent class
|
||||
* @passthrough_on_same_caps: If set to TRUE, passthrough mode will be
|
||||
* @passthrough_on_same_caps: If set to %TRUE, passthrough mode will be
|
||||
* automatically enabled if the caps are the same.
|
||||
* Set to %FALSE by default.
|
||||
* @transform_ip_on_passthrough: If set to %TRUE, @transform_ip will be called in
|
||||
* passthrough mode. The passed buffer might not be
|
||||
* writable. When %FALSE, neither @transform nor
|
||||
* @transform_ip will be called in passthrough mode.
|
||||
* Set to %TRUE by default.
|
||||
* @transform_caps: Optional. Given the pad in this direction and the given
|
||||
* caps, what caps are allowed on the other pad in this
|
||||
* element ?
|
||||
|
@ -201,6 +207,7 @@ struct _GstBaseTransformClass {
|
|||
|
||||
/*< public >*/
|
||||
gboolean passthrough_on_same_caps;
|
||||
gboolean transform_ip_on_passthrough;
|
||||
|
||||
/* virtual methods for subclasses */
|
||||
GstCaps* (*transform_caps) (GstBaseTransform *trans,
|
||||
|
|
Loading…
Reference in a new issue