# Interfaces
Previously, in the chapter [Adding
-Properties](pwg-building-args.md), we have introduced the concept of
+Properties](pwg/building/args.md), we have introduced the concept of
GObject properties of controlling an element's behaviour. This is very
powerful, but it has two big disadvantages: first of all, it is too
generic, and second, it isn't dynamic.
gst_my_filter_get_type (void)
{
static GType my_filter_type = 0;
-
+
if (!my_filter_type) {
static const GTypeInfo my_filter_info = {
sizeof (GstMyFilterClass),
{
/* here, you would set virtual function pointers in the interface */
}
-
+
```
Or more
G_IMPLEMENT_INTERFACE (GST_TYPE_SOME_INTERFACE,
gst_my_filter_some_interface_init));
-
+
```
## URI interface
if (my_filter->window)
gst_my_filter_destroy_window (my_filter->window);
-
+
my_filter->window = handle;
}
{
iface->set_window_handle = gst_my_filter_set_window_handle;
}
-
+
```
You will also need to use the interface methods to post messages when
if (!ret) return FALSE;
gst_video_overlay_prepare_window_handle (GST_VIDEO_OVERLAY (my_filter));
-
+
if (!my_filter->window)
my_filter->window = gst_my_filter_create_window (my_filter, width, height);
...
}
-
+
```
## Navigation Interface
WRITEME
-