Class TypeFindFactory

All Implemented Interfaces:
Proxy

@Generated("org.javagi.JavaGI") public class TypeFindFactory extends PluginFeature

These functions allow querying information about registered typefind functions. How to create and register these functions is described in the section "Writing typefind functions".

The following example shows how to write a very simple typefinder that identifies the given data. You can get quite a bit more complicated than that though.

  typedef struct {
    guint8 *data;
    guint size;
    guint probability;
    GstCaps *data;
  } MyTypeFind;
  static void
  my_peek (gpointer data, gint64 offset, guint size)
  {
    MyTypeFind *find = (MyTypeFind *) data;
    if (offset >= 0 && offset + size <= find->size) {
      return find->data + offset;
    }
    return NULL;
  }
  static void
  my_suggest (gpointer data, guint probability, GstCaps *caps)
  {
    MyTypeFind *find = (MyTypeFind *) data;
    if (probability > find->probability) {
      find->probability = probability;
      gst_caps_replace (&find->caps, caps);
    }
  }
  static GstCaps *
  find_type (guint8 *data, guint size)
  {
    GList *walk, *type_list;
    MyTypeFind find = {data, size, 0, NULL};
    GstTypeFind gst_find = {my_peek, my_suggest, &find, };
    walk = type_list = gst_type_find_factory_get_list ();
    while (walk) {
      GstTypeFindFactory *factory = GST_TYPE_FIND_FACTORY (walk->data);
      walk = g_list_next (walk)
      gst_type_find_factory_call_function (factory, &gst_find);
    }
    g_list_free (type_list);
    return find.caps;
  };
  • Constructor Details

    • TypeFindFactory

      public TypeFindFactory(MemorySegment address)
      Create a TypeFindFactory instance for the provided memory address.
      Parameters:
      address - the memory address of the native object
    • TypeFindFactory

      public TypeFindFactory()
      Create a new TypeFindFactory.
  • Method Details

    • getType

      public static @Nullable Type getType()
      Get the GType of the TypeFindFactory class.
      Returns:
      the GType
    • getMemoryLayout

      public static MemoryLayout getMemoryLayout()
      The memory layout of the native struct.
      Returns:
      the memory layout
    • asParent

      protected TypeFindFactory asParent()
      Return this instance as if it were its parent type. Comparable to the Java super keyword, but ensures the parent typeclass is also used in native code.
      Overrides:
      asParent in class PluginFeature
      Returns:
      the instance as if it were its parent type
    • getList

      public static List<TypeFindFactory> getList()

      Gets the list of all registered typefind factories. You must free the list using gst_plugin_feature_list_free().

      The returned factories are sorted by highest rank first, and then by factory name.

      Free-function: gst_plugin_feature_list_free

      Returns:
      the list of all registered GstTypeFindFactory.
    • callFunction

      public void callFunction(TypeFind find)
      Calls the GstTypeFindFunction associated with this factory.
      Parameters:
      find - a properly setup GstTypeFind entry. The get_data and suggest_type members must be set.
    • getCaps

      public @Nullable Caps getCaps()
      Gets the GstCaps associated with a typefind factory.
      Returns:
      the GstCaps associated with this factory
    • getExtensions

      public @Nullable String @Nullable [] getExtensions()
      Gets the extensions associated with a GstTypeFindFactory. The returned array should not be changed. If you need to change stuff in it, you should copy it using g_strdupv(). This function may return null to indicate a 0-length list.
      Returns:
      a null-terminated array of extensions associated with this factory
    • hasFunction

      public boolean hasFunction()
      Check whether the factory has a typefind function. Typefind factories without typefind functions are a last-effort fallback mechanism to e.g. assume a certain media type based on the file extension.
      Returns:
      true if the factory has a typefind functions set, otherwise false
    • builder

      public static TypeFindFactory.Builder<? extends TypeFindFactory.Builder> builder()
      A TypeFindFactory.Builder object constructs a TypeFindFactory with the specified properties. Use the various set...() methods to set properties, and finish construction with TypeFindFactory.Builder.build().
      Returns:
      the builder object