/*
* Copyright (c) 2009 Levente Farkas
* Copyright (c) 2007 Wayne Meissner
*
* This file is part of gstreamer-java.
*
* This code is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License version 3 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* version 3 for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with this work. If not, see <http://www.gnu.org/licenses/>.
*/
package org.gstreamer.lowlevel;
import org.gstreamer.Buffer;
import org.gstreamer.Caps;
import org.gstreamer.ClockTime;
import org.gstreamer.Event;
import org.gstreamer.FlowReturn;
import org.gstreamer.Pad;
import org.gstreamer.PadDirection;
import org.gstreamer.elements.BaseTransform;
import org.gstreamer.lowlevel.GstAPI.GstSegmentStruct;
import org.gstreamer.lowlevel.GstElementAPI.GstElementClass;
import org.gstreamer.lowlevel.GstElementAPI.GstElementStruct;
import com.sun.jna.Callback;
import com.sun.jna.Library;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.IntByReference;
import java.util.Arrays;
import java.util.List;
public interface BaseTransformAPI extends Library {
BaseTransformAPI BASETRANSFORM_API = GstNative.load("gstbase", BaseTransformAPI.class);
int GST_PADDING = GstAPI.GST_PADDING;
int GST_PADDING_LARGE = GstAPI.GST_PADDING_LARGE;
public static final class GstBaseTransformStruct extends com.sun.jna.Structure {
public GstElementStruct element;
/*< protected >*/
public volatile Pad sinkpad;
public volatile Pad srcpad;
/* Set by sub-class */
public volatile boolean passthrough;
public volatile boolean always_in_place;
public volatile Caps cache_caps1;
public volatile int cache_caps1_size;
public volatile Caps cache_caps2;
public volatile int cache_caps2_size;
public volatile boolean have_same_caps;
public volatile boolean delay_configure;
public volatile boolean pending_configure;
public volatile boolean negotiated;
public volatile boolean have_newsegment;
/* MT-protected (with STREAM_LOCK) */
public volatile GstSegmentStruct segment;
public volatile /* GMutex */ Pointer transform_lock;
/*< private >*/
public volatile /* GstBaseTransformPrivate */ Pointer priv;
public volatile Pointer[] _gst_reserved = new Pointer[GST_PADDING_LARGE - 1];
@Override
protected List<String> getFieldOrder() {
return Arrays.asList(new String[]{
"element", "sinkpad", "srcpad",
"passthrough", "always_in_place", "cache_caps1",
"cache_caps1_size", "cache_caps2", "cache_caps2_size",
"have_same_caps", "delay_configure", "pending_configure",
"negotiated", "have_newsegment", "segment",
"transform_lock", "priv", "_gst_reserved"
});
}
}
public static interface TransformCaps extends Callback {
public Caps callback(BaseTransform trans, PadDirection direction, Caps caps);
}
public static interface FixateCaps extends Callback {
public void callback(BaseTransform trans, PadDirection direction, Caps caps, Caps othercaps);
}
public static interface TransformSize extends Callback {
public boolean callback(BaseTransform trans, PadDirection direction, Caps caps,
int size, Caps othercaps, IntByReference othersize);
}
public static interface GetUnitSize extends Callback {
public boolean callback(BaseTransform trans, Caps caps, IntByReference size);
}
public static interface SetCaps extends Callback {
public boolean callback(BaseTransform trans, Caps caps, Caps outcaps);
}
public static interface BooleanFunc1 extends Callback {
public boolean callback(BaseTransform sink);
}
public static interface EventNotify extends Callback {
public boolean callback(BaseTransform trans, Event event);
}
public static interface Transform extends Callback {
public FlowReturn callback(BaseTransform trans, Buffer inbuf, Buffer outbuf);
}
public static interface TransformIp extends Callback {
public FlowReturn callback(BaseTransform trans, Buffer inbuf);
}
public static interface PrepareOutput extends Callback {
public FlowReturn callback(BaseTransform trans, Buffer input, int size, Caps caps,
/*GstBuffer ** */ Pointer buf);
}
public static interface BeforeTransform extends Callback {
public void callback(BaseTransform trans, Buffer inbuf);
}
public static interface AcceptCaps extends Callback {
public boolean callback(BaseTransform trans, PadDirection direction, Caps caps);
}
public static final class GstBaseTransformClass extends com.sun.jna.Structure {
public GstBaseTransformClass() {}
public GstBaseTransformClass(Pointer ptr) {
useMemory(ptr);
read();
}
//
// Actual data members
//
public GstElementClass parent_class;
/*< public >*/
public TransformCaps transform_caps;
public FixateCaps fixate_caps;
public TransformSize transform_size;
public GetUnitSize get_unit_size;
public SetCaps set_caps;
public BooleanFunc1 start;
public BooleanFunc1 stop;
public EventNotify event;
public Transform transform;
public TransformIp transform_ip;
public volatile boolean passthrough_on_same_caps;
public PrepareOutput prepare_output_buffer;
public EventNotify src_event;
public BeforeTransform before_transform;
public AcceptCaps accept_caps;
/*< private >*/
public volatile byte[] _gst_reserved = new byte[Pointer.SIZE * (GST_PADDING_LARGE - 3)];
@Override
protected List<String> getFieldOrder() {
return Arrays.asList(new String[]{
"parent_class", "transform_caps", "fixate_caps",
"transform_size", "get_unit_size", "set_caps",
"start", "stop", "event",
"transform", "transform_ip", "passthrough_on_same_caps",
"prepare_output_buffer", "src_event", "before_transform",
"accept_caps", "_gst_reserved"
});
}
}
GType gst_base_transform_get_type();
void gst_base_transform_set_passthrough(BaseTransform trans, boolean passthrough);
boolean gst_base_transform_is_passthrough(BaseTransform trans);
void gst_base_transform_set_in_place(BaseTransform trans, boolean in_place);
boolean gst_base_transform_is_in_place(BaseTransform trans);
void gst_base_transform_update_qos(BaseTransform trans, double proportion, long diff, ClockTime timestamp);
void gst_base_transform_set_qos_enabled(BaseTransform trans, boolean enabled);
boolean gst_base_transform_is_qos_enabled(BaseTransform trans);
void gst_base_transform_set_gap_aware(BaseTransform trans, boolean gap_aware);
void gst_base_transform_suggest(BaseTransform trans, Caps caps, int size);
void gst_base_transform_reconfigure(BaseTransform trans);
}