/*
* Copyright (c) 2009 Levente Farkas
* Copyright (c) 2007, 2008 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 java.util.Arrays;
import java.util.List;
import org.gstreamer.GstObject;
import org.gstreamer.lowlevel.annotations.CallerOwnsReturn;
import org.gstreamer.lowlevel.annotations.FreeReturnValue;
import com.sun.jna.NativeLong;
import com.sun.jna.Pointer;
/**
* GstObject functions
*/
public interface GstObjectAPI extends com.sun.jna.Library {
GstObjectAPI GSTOBJECT_API = GstNative.load(GstObjectAPI.class);
GType gst_object_get_type();
void gst_object_ref(GstObject ptr);
void gst_object_unref(GstObject ptr);
void gst_object_sink(GstObject ptr);
boolean gst_object_set_name(GstObject obj, String name);
@FreeReturnValue String gst_object_get_name(GstObject obj);
void gst_object_set_name_prefix(GstObject object, String name_prefix);
@FreeReturnValue String gst_object_get_name_prefix(GstObject object);
/* parentage routines */
boolean gst_object_set_parent(GstObject object, GstObject parent);
@CallerOwnsReturn GstObject gst_object_get_parent(GstObject object);
void gst_object_unparent(GstObject object);
boolean gst_object_has_ancestor(GstObject object, GstObject ancestor);
Pointer gst_implements_interface_cast(GstObject obj, NativeLong gtype);
boolean gst_implements_interface_check(GstObject from, NativeLong type);
public static final class GstObjectStruct extends com.sun.jna.Structure {
public GObjectAPI.GObjectStruct object;
public volatile int refcount;
public volatile Pointer lock;
public volatile String name;
public volatile String name_prefix;
public volatile Pointer parent;
public volatile int flags;
public volatile Pointer _gst_reserved;
@Override
protected List<String> getFieldOrder() {
return Arrays.asList(new String[]{
"object", "refcount", "lock",
"name", "name_prefix", "parent",
"flags", "_gst_reserved"
});
}
}
public static final class GstObjectClass extends com.sun.jna.Structure {
public GObjectAPI.GObjectClass parent_class;
public volatile Pointer path_string_separator;
public volatile Pointer signal_object;
public volatile Pointer lock;
// These are really Callbacks, but we don't need them yet
public volatile Pointer parent_set;
public volatile Pointer parent_unset;
public volatile Pointer object_saved;
public volatile Pointer deep_notify;
public volatile Pointer save_thyself;
public volatile Pointer restore_thyself;
public volatile Pointer[] _gst_reserved = new Pointer[GstAPI.GST_PADDING];
@Override
protected List<String> getFieldOrder() {
return Arrays.asList(new String[]{
"parent_class", "path_string_separator",
"signal_object", "lock", "parent_set",
"parent_unset", "object_saved", "deep_notify",
"save_thyself", "restore_thyself", "_gst_reserved"
});
}
}
}