[gstreamer-java] fix factory and format plus factor out swt as subpackage
Levente Farkas
lfarkas at fedoraproject.org
Sat Aug 7 16:17:20 UTC 2010
commit 04bfbfae8c8ea58b15645c6142640c9f7f8fe77c
Author: Farkas Levente <lfarkas at eagle.lfarkas.org>
Date: Sat Aug 7 18:16:33 2010 +0200
fix factory and format plus factor out swt as subpackage
gstreamer-java-caps.patch | 10 ++++++
gstreamer-java-factory.patch | 72 ++++++++++++++++++++++++++++++++++++++++++
gstreamer-java-format.patch | 57 +++++++++++++++++++++++++++++++++
gstreamer-java.spec | 54 ++++++++++++++++++++++++-------
sources | 2 +-
5 files changed, 181 insertions(+), 14 deletions(-)
---
diff --git a/gstreamer-java-caps.patch b/gstreamer-java-caps.patch
new file mode 100644
index 0000000..c663fce
--- /dev/null
+++ b/gstreamer-java-caps.patch
@@ -0,0 +1,10 @@
+diff -up ./src/org/gstreamer/lowlevel/GstCapsAPI.java.memory ./src/org/gstreamer/lowlevel/GstCapsAPI.java
+--- ./src/org/gstreamer/lowlevel/GstCapsAPI.java.memory 2009-12-28 15:06:04.000000000 +0100
++++ ./src/org/gstreamer/lowlevel/GstCapsAPI.java 2010-08-01 01:39:45.301853003 +0200
+@@ -106,5 +106,5 @@ public interface GstCapsAPI extends com.
+
+ GType gst_static_caps_get_type();
+ /* static_caps_get returns a static Caps reference - do not deref */
+- Caps gst_static_caps_get(GstStaticCapsStruct static_caps);
++ @CallerOwnsReturn Caps gst_static_caps_get(GstStaticCapsStruct static_caps);
+ }
diff --git a/gstreamer-java-factory.patch b/gstreamer-java-factory.patch
new file mode 100644
index 0000000..4e79147
--- /dev/null
+++ b/gstreamer-java-factory.patch
@@ -0,0 +1,72 @@
+diff -up ./src/org/gstreamer/ElementFactory.java.factory ./src/org/gstreamer/ElementFactory.java
+--- ./src/org/gstreamer/ElementFactory.java.factory 2010-08-01 11:27:20.000000000 +0200
++++ ./src/org/gstreamer/ElementFactory.java 2010-08-07 17:44:28.436108250 +0200
+@@ -25,10 +25,12 @@ import java.util.logging.Level;
+ import java.util.logging.Logger;
+
+ import org.gstreamer.elements.DecodeBin;
++import org.gstreamer.elements.DecodeBin2;
+ import org.gstreamer.elements.FakeSink;
+ import org.gstreamer.elements.FakeSrc;
+ import org.gstreamer.elements.FileSrc;
+ import org.gstreamer.elements.PlayBin;
++import org.gstreamer.elements.PlayBin2;
+ import org.gstreamer.elements.TypeFind;
+ import org.gstreamer.lowlevel.GstCapsAPI;
+ import org.gstreamer.lowlevel.GstElementFactoryAPI;
+@@ -124,7 +126,9 @@ public class ElementFactory extends Plug
+ * @return The list of {@link StaticPadTemplate}
+ */
+ public List<StaticPadTemplate> getStaticPadTemplates() {
++ logger.entering("ElementFactory", "getStaticPadTemplates");
+ GList glist = gst.gst_element_factory_get_static_pad_templates(this);
++ logger.log(DEBUG, "gst.gst_element_factory_get_static_pad_templates returned: " + glist);
+ List<StaticPadTemplate> templates = new ArrayList<StaticPadTemplate>();
+ GList next = glist;
+ while (next != null) {
+@@ -180,14 +184,16 @@ public class ElementFactory extends Plug
+ @SuppressWarnings("serial")
+ private static final Map<String, Class<? extends Element>> typeMap
+ = new HashMap<String, Class<? extends Element>>() {{
+- put("playbin", PlayBin.class);
+- put("decodebin", DecodeBin.class);
+- put("typefind", TypeFind.class);
+- put("fakesrc", FakeSrc.class);
+- put("fakesink", FakeSink.class);
+- put("filesrc", FileSrc.class);
+- put("appsrc", AppSrc.class);
+- put("appsink", AppSink.class);
++ put("appsink", AppSink.class);
++ put("appsrc", AppSrc.class);
++ put("decodebin", DecodeBin.class);
++ put("decodebin2", DecodeBin2.class);
++ put("fakesink", FakeSink.class);
++ put("fakesrc", FakeSrc.class);
++ put("filesrc", FileSrc.class);
++ put("playbin", PlayBin.class);
++ put("playbin2", PlayBin2.class);
++ put("typefind", TypeFind.class);
+ }};
+ @SuppressWarnings("unchecked")
+ private static Element elementFor(Pointer ptr, String factoryName) {
+diff -up ./test/org/gstreamer/ElementFactoryTest.java.factory ./test/org/gstreamer/ElementFactoryTest.java
+--- ./test/org/gstreamer/ElementFactoryTest.java.factory 2010-08-01 11:27:18.000000000 +0200
++++ ./test/org/gstreamer/ElementFactoryTest.java 2010-08-07 17:45:21.646002200 +0200
+@@ -130,8 +130,7 @@ public class ElementFactoryTest {
+ }
+ return ref.get() == null;
+ }
+- // gst_element_factory_find returns objects with a ref_count of 2, so the proxy never gets GC'd
+- //@Test
++ @Test
+ public void testGarbageCollection() throws Throwable {
+ ElementFactory factory = ElementFactory.find("fakesrc");
+ assertNotNull("Could not locate fakesrc factory", factory);
+@@ -139,7 +138,6 @@ public class ElementFactoryTest {
+ factory = null;
+ assertTrue("Factory not garbage collected", waitGC(ref));
+ }
+-
+ @Test
+ public void testMakeGarbageCollection() throws Throwable {
+ Element e = ElementFactory.make("fakesrc", "test");
diff --git a/gstreamer-java-format.patch b/gstreamer-java-format.patch
new file mode 100644
index 0000000..c46058f
--- /dev/null
+++ b/gstreamer-java-format.patch
@@ -0,0 +1,57 @@
+diff -ur /home/lfarkas/rpm/BUILD/gstreamer-java/src/org/gstreamer/elements/RGBDataFileSink.java ./src/org/gstreamer/elements/RGBDataFileSink.java
+--- /home/lfarkas/rpm/BUILD/gstreamer-java/src/org/gstreamer/elements/RGBDataFileSink.java 2010-05-03 16:25:55.000000000 +0200
++++ ./src/org/gstreamer/elements/RGBDataFileSink.java 2010-06-27 22:21:38.249747135 +0200
+@@ -24,6 +24,7 @@
+ import java.util.concurrent.ScheduledExecutorService;
+ import com.sun.jna.Pointer;
+
++import org.gstreamer.Format;
+ import org.gstreamer.Gst;
+ import org.gstreamer.ClockTime;
+ import org.gstreamer.Buffer;
+@@ -90,8 +91,18 @@
+
+ // Building pipeline.
+ source = (AppSrc)ElementFactory.make("appsrc", "source");
+- source.set("is-live", true);
+- source.set("format", 3); // GST_FORMAT_TIME = 3
++
++ source.setLive(true);
++
++ // Using either BUFFERS or TIME doesn't seem
++ // to make a difference, but BUFFERS make more
++ // sense with the buffer timestamping. See comments
++ // in pushBuffer() method below.
++ source.setFormat(Format.BUFFERS);
++ //source.setFormat(Format.TIME);
++
++ source.setLatency(-1, 0);
++ source.setSize(-1);
+ source.setCaps(videoCaps);
+ source.setMaxBytes(QUEUED_FRAMES * sourceWidth * sourceHeight * 4);
+
+@@ -259,10 +270,21 @@
+ Buffer buf = bufferList.remove(0);
+ frameCount++;
+
+- long f = frameCount * NANOS_PER_FRAME;
+ buf.setCaps(videoCaps);
+- buf.setTimestamp(ClockTime.fromNanos(f));
+- buf.setDuration(ClockTime.fromNanos(NANOS_PER_FRAME));
++
++ // For some reason this duration and timestamp setting works
++ // with all encoders I tried so far (theora, x264, dirac),
++ // although doesn't make much sense (frame duration 1 nano?)...
++ buf.setTimestamp(ClockTime.fromNanos(frameCount));
++ buf.setDuration(ClockTime.fromNanos(1));
++
++ // ... this other one, which is logically correc, doesn't work for
++ // theora (frames are dropped for no apparent reason each
++ // two seconds):
++ //long f = frameCount * NANOS_PER_FRAME;
++ //buf.setTimestamp(ClockTime.fromNanos(f));
++ //buf.setDuration(ClockTime.fromNanos(NANOS_PER_FRAME));
++
+ source.pushBuffer(buf);
+ buf.dispose();
+ }
diff --git a/gstreamer-java.spec b/gstreamer-java.spec
index 7e4df61..9a3c1e5 100644
--- a/gstreamer-java.spec
+++ b/gstreamer-java.spec
@@ -3,13 +3,16 @@
Summary: Java interface to the gstreamer framework
Name: gstreamer-java
Version: 1.4
-Release: 2%{?dist}
+Release: 3%{?dist}
License: LGPLv3 and CC-BY-SA
Group: System Environment/Libraries
URL: http://code.google.com/p/gstreamer-java/
# zip -r ~/rpm/SOURCES/gstreamer-java-src-1.4.zip gstreamer-java -x \*/.svn*
Source: http://gstreamer-java.googlecode.com/files/%{name}-src-%{version}.zip
Patch1: %{name}-swt.patch
+Patch10: %{name}-caps.patch
+Patch11: %{name}-factory.patch
+Patch12: %{name}-format.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%if 0%{?fedora} > 12 || 0%{?rhel} > 5
BuildArch: noarch
@@ -38,6 +41,17 @@ BuildRequires: libswt3-gtk2
An unofficial/alternative set of java bindings for the gstreamer multimedia
framework.
+%ifarch %{arch_with_swt} noarch
+%package swt
+Summary: SWT support for %{name}
+Group: System Environment/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: libswt3-gtk2
+
+%description swt
+This package contains SWT support for %{name}.
+%endif
+
%package javadoc
Summary: Javadocs for %{name}
Group: Documentation
@@ -50,22 +64,25 @@ This package contains the API documentation for %{name}.
%prep
%setup -q -n %{name}
+%ifarch %{arch_with_swt} noarch
+%patch1 -p1 -b .swt
+# replace included jar files with the system packaged version SWT
+sed -i -e "s,\(file.reference.swt.jar=\).*,\1$(find %{_libdir} -name swt*.jar 2>/dev/null|sort|head -1)," \
+ nbproject/project.properties
+%endif
+%patch10 -p1 -b .caps
+%patch11 -p1 -b .factory
+%patch12 -p1 -b .format
cp -p src/org/freedesktop/tango/COPYING COPYING.CC-BY-SA
# remove prebuild binaries
-find . -name '*.jar' -exec rm {} \;
+find . -name '*.jar' -delete
-# replace included jar files with the system packaged version (JNA, SWT, GStreamer plugins dir)
+# replace included jar files with the system packaged version JNA and GStreamer plugins dir
sed -i -e "s,\(file.reference.jna.jar=\).*,\1$(build-classpath jna)," \
- -e "s,\(run.jvmargs=-Djna.library.path=\).*,\1%{_libdir}:$(pkg-config --variable=pluginsdir gstreamer-0.10)," \
+ -e "s,\(run.jvmargs=-Djna.library.path=\).*,\1%{_libdir}:$(pkg-config --variable=pluginsdir gstreamer-0.10) -Djava.util.logging.config.file=logging.properties," \
nbproject/project.properties
-%patch1 -p1
-sed -i -e "s,\(file.reference.swt.jar=\).*,\1$(find %{_libdir} -name swt*.jar 2>/dev/null|sort|head -1)," \
- nbproject/project.properties
-
-
-%build
# from Fedora-9 we've got ant-1.7.0 and junit4 while on older releases and EPEL
# have only ant-1.6.5 and junit-3.8.2 therefore on older releases and EPEL we
# have small hacks like ant-1.6.5 need packagenames for javadoc task
@@ -77,8 +94,10 @@ sed -i -e "s,\(file.reference.junit4.jar=\).*,\1$(build-classpath junit4)," \
sed -i -e 's,\(<javadoc destdir="${dist.javadoc.dir}" source="${javac.source}"\),\1 packagenames="*",' \
build.xml
%endif
-ant jar
-ant javadoc
+
+
+%build
+ant jar javadoc
%if 0%{?fedora} >= 9 || 0%{?rhel} > 5
@@ -102,14 +121,23 @@ rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
-%{_javadir}/*
+%{_javadir}/%{name}.jar
%doc CHANGES COPYING* tutorials/*
+%ifarch %{arch_with_swt} noarch
+%files swt
+%defattr(-,root,root,-)
+%{_javadir}/%{name}-swt.jar
+%endif
+
%files javadoc
%defattr(-,root,root,-)
%{_javadocdir}/%{name}
%changelog
+* Sat Jul 31 2010 Levente Farkas <lfarkas at lfarkas.org> - 1.4-3
+- add SWT subpackage and disable getStaticPadTemplates test
+
* Tue Jul 27 2010 Levente Farkas <lfarkas at lfarkas.org> - 1.4-2
- fix spec file typo
diff --git a/sources b/sources
index 19f3153..002d989 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-b9fab4acd2bc30507415ec6d84ff0ed3 gstreamer-java-src-1.4.zip
+2da7ff74fcc0aba1b66a01dfb9ac7ff7 gstreamer-java-src-1.4.zip
More information about the scm-commits
mailing list