/* * Copyright (c) 2009 Levente Farkas * * 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 java.util.Arrays; import java.util.List; import org.gstreamer.ClockTime; import org.gstreamer.GObject; import org.gstreamer.controller.ControlSource; import org.gstreamer.lowlevel.GObjectAPI.GObjectClass; import org.gstreamer.lowlevel.GObjectAPI.GParamSpec; import org.gstreamer.lowlevel.GValueAPI.GValue; import com.sun.jna.Callback; import com.sun.jna.Library; import com.sun.jna.Pointer; public interface GstControlSourceAPI extends Library { GstControlSourceAPI GSTCONTROLSOURCE_API = GstNative.load("gstcontroller", GstControlSourceAPI.class); int GST_PADDING = GstAPI.GST_PADDING; public static final class TimedValue extends com.sun.jna.Structure { public static final String GTYPE_NAME = "GstTimedValue"; public volatile ClockTime timestamp; public volatile GValue value; @Override protected List<String> getFieldOrder() { return Arrays.asList(new String[]{ "timestamp", "value" }); } } public static final class ValueArray extends com.sun.jna.Structure { public static final String GTYPE_NAME = "GstValueArray"; public volatile String property_name; public volatile int nbsamples; public volatile ClockTime sample_interval; public volatile Pointer values; @Override protected List<String> getFieldOrder() { return Arrays.asList(new String[]{ "property_name", "nbsamples", "sample_interval", "values" }); } } public static interface GstControlSourceGetValue extends Callback { public boolean callback(ControlSource self, ClockTime timestamp, GValue value); } public static interface GstControlSourceGetValueArray extends Callback { public boolean callback(ControlSource self, ClockTime timestamp, ValueArray value_array); } public static interface GstControlSourceBind extends Callback { public boolean callback(ControlSource self, GParamSpec pspec); } public static final class GstControlSourceStruct extends com.sun.jna.Structure { public volatile GObject parent; /*< public >*/ public volatile GstControlSourceGetValue get_value; /* Returns the value for a property at a given timestamp */ public volatile GstControlSourceGetValueArray get_value_array; /* Returns values for a property in a given timespan */ /*< private >*/ public volatile boolean bound; public volatile Pointer[] _gst_reserved = new Pointer[GST_PADDING]; @Override protected List<String> getFieldOrder() { return Arrays.asList(new String[]{ "parent", "get_value", "get_value_array", "bound", "_gst_reserved" }); } } public static final class GstControlSourceClass extends com.sun.jna.Structure { public volatile GObjectClass parent_class; public volatile GstControlSourceBind bind; /* Binds the GstControlSource to a specific GParamSpec */ /*< private >*/ public volatile Pointer[] _gst_reserved = new Pointer[GST_PADDING]; @Override protected List<String> getFieldOrder() { return Arrays.asList(new String[]{ "parent_class", "bind", "_gst_reserved" }); } } GType gst_control_source_get_type(); /* Functions */ boolean gst_control_source_get_value(ControlSource self, ClockTime timestamp, GValue value); boolean gst_control_source_get_value_array(ControlSource self, ClockTime timestamp, ValueArray value_array); boolean gst_control_source_bind(ControlSource self, GParamSpec pspec); }