Skip to content

Commit f504296

Browse files
committed
Add gst_element_factory_get_metadata
1 parent 2f09960 commit f504296

File tree

2 files changed

+54
-34
lines changed

2 files changed

+54
-34
lines changed

src/org/freedesktop/gstreamer/ElementFactory.java

Lines changed: 50 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,24 @@
1717
*/
1818

1919
package org.freedesktop.gstreamer;
20+
import static org.freedesktop.gstreamer.lowlevel.GlibAPI.GLIB_API;
21+
import static org.freedesktop.gstreamer.lowlevel.GstElementFactoryAPI.GSTELEMENTFACTORY_API;
22+
import static org.freedesktop.gstreamer.lowlevel.GstPadTemplateAPI.GSTPADTEMPLATE_API;
23+
import static org.freedesktop.gstreamer.lowlevel.GstPluginAPI.GSTPLUGIN_API;
24+
2025
import java.util.ArrayList;
2126
import java.util.HashMap;
2227
import java.util.List;
2328
import java.util.Map;
2429
import java.util.logging.Level;
2530
import java.util.logging.Logger;
2631

27-
import com.sun.jna.Pointer;
28-
2932
import org.freedesktop.gstreamer.lowlevel.GlibAPI.GList;
3033
import org.freedesktop.gstreamer.lowlevel.GstPadTemplateAPI.GstStaticPadTemplate;
3134
import org.freedesktop.gstreamer.lowlevel.GstTypes;
3235
import org.freedesktop.gstreamer.lowlevel.NativeObject;
3336

34-
import static org.freedesktop.gstreamer.lowlevel.GlibAPI.GLIB_API;
35-
import static org.freedesktop.gstreamer.lowlevel.GstElementFactoryAPI.GSTELEMENTFACTORY_API;
36-
import static org.freedesktop.gstreamer.lowlevel.GstPadTemplateAPI.GSTPADTEMPLATE_API;
37-
import static org.freedesktop.gstreamer.lowlevel.GstPluginAPI.GSTPLUGIN_API;
37+
import com.sun.jna.Pointer;
3838

3939
/**
4040
* ElementFactory is used to create instances of elements.
@@ -67,7 +67,9 @@ public static void registerElement(Class<? extends Element> klass, String name)
6767
* desired type.
6868
*/
6969
public static ElementFactory find(String name) {
70-
logger.entering("ElementFactory", "find", name);
70+
if (logger.isLoggable(Level.FINER)) {
71+
logger.entering("ElementFactory", "find", name);
72+
}
7173
ElementFactory factory = GSTELEMENTFACTORY_API.gst_element_factory_find(name);
7274
if (factory == null) {
7375
throw new IllegalArgumentException("No such Gstreamer factory: " + name);
@@ -82,8 +84,10 @@ public static ElementFactory find(String name) {
8284
* @param name The name to assign to the created Element
8385
* @return A new GstElemElement
8486
*/
85-
public static Element make(String factoryName, String name) {
86-
logger.entering("ElementFactory", "make", new Object[] { factoryName, name});
87+
public static Element make(String factoryName, String name) {
88+
if (logger.isLoggable(Level.FINER)) {
89+
logger.entering("ElementFactory", "make", new Object[] { factoryName, name});
90+
}
8791
return elementFor(makeRawElement(factoryName, name), factoryName);
8892
}
8993

@@ -208,7 +212,9 @@ public static List<ElementFactory> listGetElementFilter(ElementFactoryListType t
208212
}
209213

210214
public static Pointer makeRawElement(String factoryName, String name) {
211-
logger.entering("ElementFactory", "makeRawElement", new Object[] { factoryName, name});
215+
if (logger.isLoggable(Level.FINER)) {
216+
logger.entering("ElementFactory", "makeRawElement", new Object[] { factoryName, name});
217+
}
212218
Pointer elem = GSTELEMENTFACTORY_API.ptr_gst_element_factory_make(factoryName, name);
213219
logger.log(DEBUG, "Return from gst_element_factory_make=" + elem);
214220
if (elem == null) {
@@ -235,8 +241,10 @@ private static Element elementFor(Pointer ptr, String factoryName) {
235241
* @param init internal initialization data.
236242
*/
237243
public ElementFactory(Initializer init) {
238-
super(init);
239-
logger.entering("ElementFactory", "<init>", new Object[] { init });
244+
super(init);
245+
if (logger.isLoggable(Level.FINER)) {
246+
logger.entering("ElementFactory", "<init>", new Object[] { init });
247+
}
240248
}
241249

242250
/**
@@ -246,51 +254,64 @@ public ElementFactory(Initializer init) {
246254
* @return A new {@link Element}
247255
*/
248256
public Element create(String name) {
249-
logger.entering("ElementFactory", "create", name);
257+
if (logger.isLoggable(Level.FINER)) {
258+
logger.entering("ElementFactory", "create", name);
259+
}
250260
Pointer elem = GSTELEMENTFACTORY_API.ptr_gst_element_factory_create(this, name);
251261
logger.log(DEBUG, "gst_element_factory_create returned: " + elem);
252262
if (elem == null) {
253263
throw new IllegalArgumentException("Cannot create GstElement");
254264
}
255265
return elementFor(elem, getName());
256266
}
267+
257268
/**
258269
* Returns the name of the person who wrote the factory.
259-
*
270+
*
260271
* @return The name of the author
261272
*/
262273
public String getAuthor() {
263-
logger.entering("ElementFactory", "getAuthor");
264-
return GSTELEMENTFACTORY_API.gst_element_factory_get_author(this);
274+
if (logger.isLoggable(Level.FINER)) {
275+
logger.entering("ElementFactory", "getAuthor");
276+
}
277+
return GSTELEMENTFACTORY_API.gst_element_factory_get_metadata(this, "author");
265278
}
279+
266280
/**
267281
* Returns a description of the factory.
268-
*
282+
*
269283
* @return A brief description of the factory.
270284
*/
271285
public String getDescription() {
272-
logger.entering("ElementFactory", "getDescription");
273-
return GSTELEMENTFACTORY_API.gst_element_factory_get_description(this);
286+
if (logger.isLoggable(Level.FINER)) {
287+
logger.entering("ElementFactory", "getDescription");
288+
}
289+
return GSTELEMENTFACTORY_API.gst_element_factory_get_metadata(this, "description");
274290
}
291+
275292
/**
276293
* Returns the long, English name for the factory.
277-
*
294+
*
278295
* @return The long, English name for the factory.
279296
*/
280297
public String getLongName() {
281-
logger.entering("ElementFactory", "getLongName");
282-
return GSTELEMENTFACTORY_API.gst_element_factory_get_longname(this);
298+
if (logger.isLoggable(Level.FINER)) {
299+
logger.entering("ElementFactory", "getLongName");
300+
}
301+
return GSTELEMENTFACTORY_API.gst_element_factory_get_metadata(this, "long-name");
283302
}
284-
303+
285304
/**
286305
* Returns a string describing the type of factory.
287306
* This is an unordered list separated with slashes ('/').
288-
*
307+
*
289308
* @return The description of the type of factory.
290309
*/
291310
public String getKlass() {
292-
logger.entering("ElementFactory", "getKlass");
293-
return GSTELEMENTFACTORY_API.gst_element_factory_get_klass(this);
311+
if (logger.isLoggable(Level.FINER)) {
312+
logger.entering("ElementFactory", "getKlass");
313+
}
314+
return GSTELEMENTFACTORY_API.gst_element_factory_get_metadata(this, "klass");
294315
}
295316

296317
/**
@@ -299,7 +320,9 @@ public String getKlass() {
299320
* @return The list of {@link StaticPadTemplate}
300321
*/
301322
public List<StaticPadTemplate> getStaticPadTemplates() {
302-
logger.entering("ElementFactory", "getStaticPadTemplates");
323+
if (logger.isLoggable(Level.FINER)) {
324+
logger.entering("ElementFactory", "getStaticPadTemplates");
325+
}
303326
GList glist = GSTELEMENTFACTORY_API.gst_element_factory_get_static_pad_templates(this);
304327
logger.log(DEBUG, "GSTELEMENTFACTORY_API.gst_element_factory_get_static_pad_templates returned: " + glist);
305328
List<StaticPadTemplate> templates = new ArrayList<StaticPadTemplate>();

src/org/freedesktop/gstreamer/lowlevel/GstElementFactoryAPI.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
/*
1+
/* Copyright (c) 2016 Christophe Lafolet
22
* Copyright (c) 2009 Levente Farkas
33
* Copyright (c) 2007, 2008 Wayne Meissner
4-
*
4+
*
55
* This file is part of gstreamer-java.
66
*
77
* This code is free software: you can redistribute it and/or modify it under
@@ -42,18 +42,15 @@ public interface GstElementFactoryAPI extends com.sun.jna.Library {
4242
@CallerOwnsReturn Element gst_element_factory_make(String factoryName, String elementName);
4343
@CallerOwnsReturn Element gst_element_factory_create(ElementFactory factory, String elementName);
4444
GType gst_element_factory_get_element_type(ElementFactory factory);
45-
String gst_element_factory_get_longname(ElementFactory factory);
46-
String gst_element_factory_get_klass(ElementFactory factory);
47-
String gst_element_factory_get_description(ElementFactory factory);
48-
String gst_element_factory_get_author(ElementFactory factory);
45+
String gst_element_factory_get_metadata(ElementFactory factory, String key);
4946
int gst_element_factory_get_num_pad_templates(ElementFactory factory);
5047
int gst_element_factory_get_uri_type(ElementFactory factory);
5148
GList gst_element_factory_get_static_pad_templates(ElementFactory factory);
5249

5350
GList gst_element_factory_list_get_elements(long type, int minrank);
5451
GList gst_element_factory_list_filter(GList list, @Const Caps caps, PadDirection direction,
5552
boolean subsetonly);
56-
53+
5754
/* util elementfactory functions */
5855
boolean gst_element_factory_can_src_caps(ElementFactory factory, @Const Caps caps);
5956
boolean gst_element_factory_can_sink_caps(ElementFactory factory, @Const Caps caps);

0 commit comments

Comments
 (0)