aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/graphui/classes/com/jogamp/graph/ui/shapes/MediaButton.java2
-rw-r--r--src/graphui/classes/com/jogamp/graph/ui/widgets/MediaPlayer.java12
-rw-r--r--src/jogl/classes/com/jogamp/opengl/util/av/GLMediaPlayer.java7
-rw-r--r--src/jogl/classes/jogamp/opengl/util/av/GLMediaPlayerImpl.java13
-rw-r--r--src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java3
5 files changed, 30 insertions, 7 deletions
diff --git a/src/graphui/classes/com/jogamp/graph/ui/shapes/MediaButton.java b/src/graphui/classes/com/jogamp/graph/ui/shapes/MediaButton.java
index 74ab3312b..248887e90 100644
--- a/src/graphui/classes/com/jogamp/graph/ui/shapes/MediaButton.java
+++ b/src/graphui/classes/com/jogamp/graph/ui/shapes/MediaButton.java
@@ -1,5 +1,5 @@
/**
- * Copyright 2014-2023 JogAmp Community. All rights reserved.
+ * Copyright 2014-2024 JogAmp Community. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
diff --git a/src/graphui/classes/com/jogamp/graph/ui/widgets/MediaPlayer.java b/src/graphui/classes/com/jogamp/graph/ui/widgets/MediaPlayer.java
index da912fa8a..75b07b7c8 100644
--- a/src/graphui/classes/com/jogamp/graph/ui/widgets/MediaPlayer.java
+++ b/src/graphui/classes/com/jogamp/graph/ui/widgets/MediaPlayer.java
@@ -520,7 +520,7 @@ public class MediaPlayer extends Widget {
return getInfo(mPlayer.getPTS().get(currentMillis), mPlayer.getDuration(), mPlayer, full);
}
public static String getInfo(final int ptsMS, final int durationMS, final GLMediaPlayer mPlayer, final boolean full) {
- final String name;
+ final String name, chapter;
{
final String basename;
final String s = mPlayer.getUri().path.decode();
@@ -536,6 +536,12 @@ public class MediaPlayer extends Widget {
} else {
name = basename;
}
+ final GLMediaPlayer.Chapter c = mPlayer.getChapter(ptsMS);
+ if( null != c ) {
+ chapter = " - "+c.title;
+ } else {
+ chapter = "";
+ }
}
final float aspect = (float)mPlayer.getWidth() / (float)mPlayer.getHeight();
final float pct = (float)ptsMS / (float)durationMS;
@@ -547,12 +553,12 @@ public class MediaPlayer extends Widget {
mPlayer.getAID(), mPlayer.getAudioBitrate()/1000, mPlayer.getAudioCodec());
final String text3 = String.format("video: id %d, kbps %d, codec %s",
mPlayer.getVID(), mPlayer.getVideoBitrate()/1000, mPlayer.getVideoCodec());
- return text1+"\n"+text2+"\n"+text3+"\n"+name;
+ return text1+"\n"+text2+"\n"+text3+"\n"+name+chapter;
} else {
final String text1 = String.format("%s / %s (%.0f %%), %s (%01.1fx, vol %1.2f), A/R %.2f",
PTS.millisToTimeStr(ptsMS, false), PTS.millisToTimeStr(durationMS, false), pct*100,
mPlayer.getState().toString().toLowerCase(), mPlayer.getPlaySpeed(), mPlayer.getAudioVolume(), aspect);
- return text1+"\n"+name;
+ return text1+"\n"+name+chapter;
}
}
public static String getMultilineTime(final long currentMillis, final GLMediaPlayer mPlayer) {
diff --git a/src/jogl/classes/com/jogamp/opengl/util/av/GLMediaPlayer.java b/src/jogl/classes/com/jogamp/opengl/util/av/GLMediaPlayer.java
index e5351af03..94efb43c0 100644
--- a/src/jogl/classes/com/jogamp/opengl/util/av/GLMediaPlayer.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/av/GLMediaPlayer.java
@@ -1,5 +1,5 @@
/**
- * Copyright 2012 JogAmp Community. All rights reserved.
+ * Copyright 2012-2024 JogAmp Community. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
@@ -789,6 +789,11 @@ public interface GLMediaPlayer extends TextureSequence {
/** Returns {@link Chapter} meta-data from stream, available after {@link State#Initialized} is reached after issuing {@link #playStream(Uri, int, int, int)}. */
public Chapter[] getChapters();
+ /**
+ * Returns {@link Chapter} covering given time position in milliseconds or null if none covers given time
+ * @param msec desired chapter covering time position in milliseconds
+ */
+ public Chapter getChapter(int msec);
/** Returns a string representation of this player, incl. state and audio/video details. */
@Override
diff --git a/src/jogl/classes/jogamp/opengl/util/av/GLMediaPlayerImpl.java b/src/jogl/classes/jogamp/opengl/util/av/GLMediaPlayerImpl.java
index e1472102c..457157285 100644
--- a/src/jogl/classes/jogamp/opengl/util/av/GLMediaPlayerImpl.java
+++ b/src/jogl/classes/jogamp/opengl/util/av/GLMediaPlayerImpl.java
@@ -1,5 +1,5 @@
/**
- * Copyright 2012-2023 JogAmp Community. All rights reserved.
+ * Copyright 2012-2024 JogAmp Community. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
@@ -65,6 +65,7 @@ import com.jogamp.common.util.WorkerThread;
import com.jogamp.math.FloatUtil;
import com.jogamp.opengl.GLExtensions;
import com.jogamp.opengl.util.av.GLMediaPlayer;
+import com.jogamp.opengl.util.av.GLMediaPlayer.Chapter;
import com.jogamp.opengl.util.glsl.ShaderCode;
import com.jogamp.opengl.util.texture.Texture;
import com.jogamp.opengl.util.texture.TextureData;
@@ -1793,6 +1794,16 @@ public abstract class GLMediaPlayerImpl implements GLMediaPlayer {
public Chapter[] getChapters() { return new Chapter[0]; }
@Override
+ public final Chapter getChapter(final int msec) {
+ for(final Chapter c : getChapters()) {
+ if( c.start <= msec && msec <= c.end ) {
+ return c;
+ }
+ }
+ return null;
+ }
+
+ @Override
public final String toString() {
final String tt = PTS.millisToTimeStr(getDuration());
final String loc = ( null != streamLoc ) ? streamLoc.toString() : "<undefined stream>" ;
diff --git a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java
index f091056c2..78c20d90a 100644
--- a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java
+++ b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java
@@ -1,5 +1,5 @@
/**
- * Copyright 2012-2023 JogAmp Community. All rights reserved.
+ * Copyright 2012-2024 JogAmp Community. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
@@ -46,6 +46,7 @@ import com.jogamp.common.util.SecurityUtil;
import com.jogamp.gluegen.runtime.ProcAddressTable;
import com.jogamp.opengl.util.GLPixelStorageModes;
import com.jogamp.opengl.util.av.GLMediaPlayer;
+import com.jogamp.opengl.util.av.GLMediaPlayer.Chapter;
import com.jogamp.opengl.util.texture.Texture;
import jogamp.common.os.PlatformPropsImpl;