Skip to content

Commit 5ac1f90

Browse files
Merge pull request #14 from codelerity/master
Update examples for gst1-java-core 1.4.0.
2 parents 7915563 + 4ee25cf commit 5ac1f90

File tree

3 files changed

+23
-14
lines changed

3 files changed

+23
-14
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
<dependency>
1010
<groupId>net.java.dev.jna</groupId>
1111
<artifactId>jna</artifactId>
12-
<version>5.2.0</version>
12+
<version>5.6.0</version>
1313
</dependency>
1414
<dependency>
1515
<groupId>org.freedesktop.gstreamer</groupId>
1616
<artifactId>gst1-java-core</artifactId>
17-
<version>1.1.0</version>
17+
<version>1.4.0</version>
1818
</dependency>
1919
</dependencies>
2020
<properties>

src/main/java/org/freedesktop/gstreamer/examples/PlayBinVideoPlayer.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
33
*
4-
* Copyright 2019 Neil C Smith.
4+
* Copyright 2021 Neil C Smith.
55
*
66
* Copying and distribution of this file, with or without modification,
77
* are permitted in any medium without royalty provided the copyright
@@ -14,6 +14,7 @@
1414
import java.awt.BorderLayout;
1515
import java.awt.Dimension;
1616
import java.awt.EventQueue;
17+
import java.util.EnumSet;
1718
import java.util.concurrent.TimeUnit;
1819

1920
import javax.swing.Box;
@@ -26,9 +27,11 @@
2627
import org.freedesktop.gstreamer.Bus;
2728
import org.freedesktop.gstreamer.Element;
2829
import org.freedesktop.gstreamer.ElementFactory;
30+
import org.freedesktop.gstreamer.Format;
2931
import org.freedesktop.gstreamer.Gst;
3032
import org.freedesktop.gstreamer.Structure;
3133
import org.freedesktop.gstreamer.elements.PlayBin;
34+
import org.freedesktop.gstreamer.event.SeekFlags;
3235
import org.freedesktop.gstreamer.message.Message;
3336
import org.freedesktop.gstreamer.message.MessageType;
3437

@@ -80,24 +83,26 @@ public static void main(String[] args) {
8083
playButton.addActionListener(e -> playbin.play());
8184
JButton pauseButton = new JButton("Pause");
8285
pauseButton.addActionListener(e -> playbin.pause());
83-
86+
8487
// position slider
8588
JSlider position = new JSlider(0, 1000);
8689
position.addChangeListener(e -> {
8790
if (position.getValueIsAdjusting()) {
88-
long dur = playbin.queryDuration(TimeUnit.NANOSECONDS);
89-
long pos = playbin.queryPosition(TimeUnit.NANOSECONDS);
91+
long dur = playbin.queryDuration(Format.TIME);
92+
long pos = playbin.queryPosition(Format.TIME);
9093
if (dur > 0) {
9194
double relPos = position.getValue() / 1000.0;
92-
playbin.seek((long) (relPos * dur), TimeUnit.NANOSECONDS);
93-
}
95+
playbin.seekSimple(Format.TIME,
96+
EnumSet.of(SeekFlags.FLUSH, SeekFlags.KEY_UNIT),
97+
(long) (relPos * dur));
98+
}
9499
}
95100
});
96101
// sync slider position to video when not dragging
97102
new Timer(50, e -> {
98103
if (!position.getValueIsAdjusting()) {
99-
long dur = playbin.queryDuration(TimeUnit.NANOSECONDS);
100-
long pos = playbin.queryPosition(TimeUnit.NANOSECONDS);
104+
long dur = playbin.queryDuration(Format.TIME);
105+
long pos = playbin.queryPosition(Format.TIME);
101106
if (dur > 0) {
102107
double relPos = (double) pos / dur;
103108
position.setValue((int) (relPos * 1000));
@@ -129,9 +134,9 @@ public static void main(String[] args) {
129134

130135
@Override
131136
public void busMessage(Bus arg0, Message message) {
132-
Structure struct = message.getStructure();
133137
if (message.getType() == MessageType.ELEMENT
134138
&& message.getSource().getName().startsWith("level")) {
139+
Structure struct = message.getStructure();
135140
// We can get either rms or peak
136141
double[] levels = struct.getDoubles("peak");
137142
// Calculate the time offset required to get the level
@@ -141,6 +146,7 @@ public void busMessage(Bus arg0, Message message) {
141146
() -> EventQueue.invokeLater(() -> updateLevelDisplay(levels)),
142147
timeDelay, TimeUnit.NANOSECONDS);
143148
}
149+
message.dispose();
144150
}
145151

146152
private long getTimeOffset(Structure struct) {

src/main/java/org/freedesktop/gstreamer/examples/TextColorControlExample.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
33
*
4-
* Copyright 2019 Neil C Smith / Tim-Philipp Müller
4+
* Copyright 2021 Neil C Smith / Tim-Philipp Müller
55
*
66
* Copying and distribution of this file, with or without modification,
77
* are permitted in any medium without royalty provided the copyright
@@ -43,10 +43,13 @@ public static void main(String[] args) {
4343
text.set("halignment", 4);
4444
text.set("valignment", 3);
4545

46+
Element capsfilter = ElementFactory.make("capsfilter", "caps");
47+
capsfilter.setAsString("caps", "video/x-raw, width=800, height=600");
48+
4649
Element sink = ElementFactory.make("autovideosink", "sink");
4750

48-
pipe.addMany(src, text, sink);
49-
Pipeline.linkMany(src, text, sink);
51+
pipe.addMany(src, text, capsfilter, sink);
52+
Pipeline.linkMany(src, text, capsfilter, sink);
5053

5154

5255
LFOControlSource csXPos = new LFOControlSource();

0 commit comments

Comments
 (0)