You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(134) |
Sep
(52) |
Oct
(13) |
Nov
(342) |
Dec
(163) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(44) |
Feb
(62) |
Mar
(158) |
Apr
(38) |
May
(70) |
Jun
(58) |
Jul
(104) |
Aug
(207) |
Sep
(83) |
Oct
(122) |
Nov
(23) |
Dec
(49) |
| 2004 |
Jan
(119) |
Feb
(132) |
Mar
(192) |
Apr
(140) |
May
(77) |
Jun
(74) |
Jul
(201) |
Aug
(63) |
Sep
(102) |
Oct
(70) |
Nov
(173) |
Dec
(78) |
| 2005 |
Jan
(174) |
Feb
(197) |
Mar
(105) |
Apr
(59) |
May
(77) |
Jun
(43) |
Jul
(21) |
Aug
(18) |
Sep
(47) |
Oct
(37) |
Nov
(74) |
Dec
(50) |
| 2006 |
Jan
(44) |
Feb
(19) |
Mar
(32) |
Apr
(24) |
May
(31) |
Jun
(55) |
Jul
(138) |
Aug
(28) |
Sep
(12) |
Oct
(41) |
Nov
(58) |
Dec
(24) |
| 2007 |
Jan
(28) |
Feb
(14) |
Mar
(10) |
Apr
(68) |
May
(30) |
Jun
(26) |
Jul
(18) |
Aug
(63) |
Sep
(19) |
Oct
(29) |
Nov
(20) |
Dec
(10) |
| 2008 |
Jan
(38) |
Feb
(7) |
Mar
(37) |
Apr
(120) |
May
(41) |
Jun
(36) |
Jul
(39) |
Aug
(24) |
Sep
(28) |
Oct
(30) |
Nov
(36) |
Dec
(75) |
| 2009 |
Jan
(46) |
Feb
(22) |
Mar
(50) |
Apr
(70) |
May
(134) |
Jun
(105) |
Jul
(75) |
Aug
(34) |
Sep
(38) |
Oct
(34) |
Nov
(19) |
Dec
(20) |
| 2010 |
Jan
(11) |
Feb
(20) |
Mar
(65) |
Apr
(83) |
May
(104) |
Jun
(73) |
Jul
(78) |
Aug
(57) |
Sep
(43) |
Oct
(35) |
Nov
(9) |
Dec
(4) |
| 2011 |
Jan
(21) |
Feb
(11) |
Mar
(18) |
Apr
(10) |
May
(18) |
Jun
(15) |
Jul
(48) |
Aug
(25) |
Sep
(17) |
Oct
(45) |
Nov
(15) |
Dec
(12) |
| 2012 |
Jan
(21) |
Feb
(9) |
Mar
(12) |
Apr
(9) |
May
(9) |
Jun
(5) |
Jul
(1) |
Aug
(10) |
Sep
(12) |
Oct
(1) |
Nov
(28) |
Dec
(5) |
| 2013 |
Jan
(4) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2014 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2015 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
|
Dec
|
| 2016 |
Jan
(2) |
Feb
(1) |
Mar
(1) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(1) |
Aug
(2) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2017 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
1
|
2
|
3
(5) |
4
|
|
5
(1) |
6
(16) |
7
(3) |
8
(3) |
9
(4) |
10
(13) |
11
(5) |
|
12
(1) |
13
(1) |
14
|
15
(7) |
16
(4) |
17
(1) |
18
(1) |
|
19
(3) |
20
|
21
(1) |
22
(16) |
23
|
24
(2) |
25
|
|
26
(1) |
27
(4) |
28
(6) |
29
(3) |
30
(1) |
|
|
|
From: Brian M. <ma...@us...> - 2004-09-16 22:40:24
|
Update of /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/fmod3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20077/src/java/org/lwjgl/fmod3 Modified Files: FMOD.java Log Message: use OAL type loading Index: FMOD.java =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/fmod3/FMOD.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- FMOD.java 12 Sep 2004 13:28:38 -0000 1.3 +++ FMOD.java 16 Sep 2004 22:40:12 -0000 1.4 @@ -32,6 +32,7 @@ package org.lwjgl.fmod3; import java.io.File; +import java.lang.reflect.Method; import java.nio.FloatBuffer; import java.util.ArrayList; import java.util.HashMap; @@ -274,6 +275,12 @@ dllName = FMOD_LINUX_LIBRARY_NAME; } + String jwsPath = getPathFromJWS(dllName.substring(0, dllName.indexOf("."))); + if (jwsPath != null) { + libpath += seperator + + jwsPath.substring(0, jwsPath.lastIndexOf(File.separator)); + } + // split, and rebuild library path to path + dll StringTokenizer st = new StringTokenizer(libpath, seperator); String[] paths = new String[st.countTokens() + 1]; @@ -284,7 +291,7 @@ } //add cwd path - paths[paths.length - 1] = dllName; + paths[paths.length - 1] = dllName; return paths; } @@ -304,6 +311,31 @@ created = false; nDestroy(); } + + /** + * Tries to locate FMOD from the JWS Library path + * This method exists because FMOD is loaded from native code, and as such + * is exempt from JWS library loading rutines. FMOD therefore always fails. + * We therefore invoke the protected method of the JWS classloader to see if it can + * locate it. + * + * @param libname Name of library to search for + * @return Absolute path to library if found, otherwise null + */ + private static String getPathFromJWS(String libname) { + try { + Object o = FMOD.class.getClassLoader(); + Class c = o.getClass(); + Method findLibrary = + c.getMethod("findLibrary", new Class[] { String.class }); + Object[] arguments = new Object[] { libname }; + return (String) findLibrary.invoke(o, arguments); + + } catch (Exception e) { + System.out.println("Failure locating FMOD using classloader:" + e); + } + return null; + } /** * Native method the destroy the FMOD |
|
From: Brian M. <ma...@us...> - 2004-09-16 22:38:41
|
Update of /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/test/fmod3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19758/src/java/org/lwjgl/test/fmod3 Modified Files: NetTest.java Log Message: print stack trace on error Index: NetTest.java =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/test/fmod3/NetTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- NetTest.java 16 Sep 2004 21:11:52 -0000 1.3 +++ NetTest.java 16 Sep 2004 22:38:31 -0000 1.4 @@ -253,6 +253,7 @@ FMOD.create(); } catch (FMODException fmode) { error(fmode.getMessage()); + fmode.printStackTrace(); return false; } |
|
From: Brian M. <ma...@us...> - 2004-09-16 21:12:02
|
Update of /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/test/fmod3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1875/src/java/org/lwjgl/test/fmod3 Modified Files: NetTest.java Log Message: AWT version - much neater Index: NetTest.java =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/test/fmod3/NetTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- NetTest.java 20 Aug 2004 06:22:54 -0000 1.2 +++ NetTest.java 16 Sep 2004 21:11:52 -0000 1.3 @@ -31,7 +31,19 @@ */ package org.lwjgl.test.fmod3; -import java.nio.ByteBuffer; +import java.awt.Button; +import java.awt.Color; +import java.awt.Dialog; +import java.awt.FlowLayout; +import java.awt.Frame; +import java.awt.Label; +import java.awt.Panel; +import java.awt.TextField; +import java.awt.Toolkit; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.nio.IntBuffer; import org.lwjgl.BufferUtils; @@ -39,7 +51,6 @@ import org.lwjgl.fmod3.FMODException; import org.lwjgl.fmod3.FSound; import org.lwjgl.fmod3.FSoundStream; -import org.lwjgl.fmod3.callbacks.FSoundMetaDataCallback; /** * $Id$ <br> @@ -48,90 +59,237 @@ * @version $Revision$ */ public class NetTest { + + private Frame frame; + private boolean initialized; + private Thread fmodThread; + private volatile boolean running; + private int channel = -1; + private boolean paused = true; + + public NetTest(Frame frame) { + this.frame = frame; + } public static void main(String[] args) { - if (args.length < 1) { - System.out.println("Usage:\n NetTest <url>"); - - // default to monkeyradio.org - args = new String[1]; - args[0] = "http://207.200.96.227:8038/"; - } + final Frame frame = new Frame("LWJGL Fmod streaming player"); + final NetTest netTest = new NetTest(frame); + final boolean playing = false; + + final TextField txtField; + final Button btnPlay; + final Button btnStop; + + // main panel + Panel panel = new Panel(); + panel.setLayout(new FlowLayout()); + panel.add(new Label("URL:")); + panel.add(txtField = new TextField("http://207.200.96.227:8038/", 60)); + panel.add(btnPlay = new Button("Play")); + panel.add(btnStop = new Button("Stop")); + panel.setBackground(new Color(0x99, 0x99, 0x99)); + + frame.add(panel); + frame.pack(); + + frame.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + frame.dispose(); + netTest.dispose(); + } + }); + + btnPlay.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + netTest.play(txtField.getText()); + } + }); + + btnStop.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + netTest.stop(); + } + }); - try { - FMOD.create(); - } catch (FMODException fmode) { - fmode.printStackTrace(); - return; - } + // setup frame + int x = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() - frame.getWidth()) / 2; + int y = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight() - frame.getHeight()) / 2; + frame.setLocation(x, y); + frame.setResizable(false); + frame.setVisible(true); + } + + /** + * + */ + private void dispose() { + if(initialized) { + stop(); + FSound.FSOUND_Close(); + FMOD.destroy(); + } + } - System.out.println("Initializing FMOD"); - if (!FSound.FSOUND_Init(44100, 32, 0)) { - System.out.println("Failed to initialize FMOD"); - System.out.println("Error: " + FMOD.FMOD_ErrorString(FSound.FSOUND_GetError())); - return; - } + /** + * + */ + protected void pause() { + if(running && channel > 0) { + FSound.FSOUND_SetPaused(channel, paused = !paused); + + if(paused) { + frame.setTitle("LWJGL Fmod streaming player: Paused"); + } + } + } + + /** + * + */ + protected void play(final String url) { + if(!initialized) { + frame.setTitle("Initializing..."); + if(!initialize()) { + frame.setTitle("LWJGL Fmod streaming player"); + return; + } + } + if(fmodThread != null) { + stop(); + } - FSound.FSOUND_Stream_SetBufferSize(100); - FSound.FSOUND_Stream_Net_SetBufferProperties(64000, 60, 80); + + fmodThread = new Thread() { + public void run() { + frame.setTitle("Opening [" + url + "]"); + running = true; + FSoundStream stream = FSound.FSOUND_Stream_Open(url, FSound.FSOUND_NORMAL | FSound.FSOUND_NONBLOCKING, 0, 0); + + if (stream != null) { + IntBuffer status = BufferUtils.createIntBuffer(4); + while(running) { + if(channel < 0) { + channel = FSound.FSOUND_Stream_PlayEx(FSound.FSOUND_FREE, stream, null, true); + FSound.FSOUND_SetPaused(channel, false); + paused = false; + } + + int openstate = FSound.FSOUND_Stream_GetOpenState(stream); + if ((openstate == -1) || (openstate == -3)) { + error("failed to open stream!: " + FSound.FSOUND_Stream_Net_GetLastServerStatus()); + break; + } + + FSound.FSOUND_Stream_Net_GetStatus(stream, status); + + if(!paused) { + frame.setTitle("Playing [state: " + getNameFor(status.get(0)) + ", buffer: " + status.get(1) + ", bitrate: " + status.get(2) + "]"); + } + pause(10); + } + + while(!FSound.FSOUND_Stream_Stop(stream)) { + pause(10); + } + while(!FSound.FSOUND_Stream_Close(stream)) { + pause(10); + } + channel = -1; + } else { + error("Unable to play: " + url + ". Error: " + FMOD.FMOD_ErrorString(FSound.FSOUND_GetError())); + } + } + }; + fmodThread.start(); + } - System.out.println("Loading " + args[0]); - FSoundStream stream = FSound.FSOUND_Stream_Open(args[0], FSound.FSOUND_NORMAL | FSound.FSOUND_NONBLOCKING, 0, 0); + /** + * @param i + * @return + */ + protected String getNameFor(int i) { + switch(i) { + case FSound.FSOUND_STREAM_NET_NOTCONNECTED: + return "FSOUND_STREAM_NET_NOTCONNECTED"; + case FSound.FSOUND_STREAM_NET_CONNECTING: + return "FSOUND_STREAM_NET_CONNECTING"; + case FSound.FSOUND_STREAM_NET_BUFFERING: + return "FSOUND_STREAM_NET_BUFFERING"; + case FSound.FSOUND_STREAM_NET_READY: + return "FSOUND_STREAM_NET_READY"; + case FSound.FSOUND_STREAM_NET_ERROR: + return "FSOUND_STREAM_NET_ERROR"; + } + return ""; + } + /** + * + */ + protected void stop() { + if(frame.isVisible()) { + frame.setTitle("LWJGL Fmod streaming player: stopping..."); + } - if (stream != null) { + running = false; + if(fmodThread != null) { + try { + fmodThread.join(); + } catch (InterruptedException inte) { + } + fmodThread = null; + } + + if(frame.isVisible()) { + frame.setTitle("LWJGL Fmod streaming player"); + } + } + + protected boolean initialize() { + if(!initialized) { + try { + FMOD.create(); + } catch (FMODException fmode) { + error(fmode.getMessage()); + return false; + } - int channel = -1; - boolean run = true; - IntBuffer status = BufferUtils.createIntBuffer(4); - while(run) { - if(channel < 0) { - channel = FSound.FSOUND_Stream_PlayEx(FSound.FSOUND_FREE, stream, null, true); - FSound.FSOUND_SetPaused(channel, false); - - if (channel != -1) { - FSound.FSOUND_Stream_Net_SetMetadataCallback(stream, new FSoundMetaDataCallback() { - public void FSOUND_METADATACALLBACK(ByteBuffer name, ByteBuffer value) { - byte[] charName = new byte[name.capacity()]; - name.get(charName); - - byte[] charValue = new byte[value.capacity()]; - value.get(charValue); - - System.out.println(new String(charName) + " = " + new String(charValue)); - } - }); - } - } - - int openstate = FSound.FSOUND_Stream_GetOpenState(stream); - if ((openstate == -1) || (openstate == -3)) { - System.out.println("\nERROR: failed to open stream!\n"); - System.out.println("SERVER: " + FSound.FSOUND_Stream_Net_GetLastServerStatus() + "\n"); - break; - } - - FSound.FSOUND_Stream_Net_GetStatus(stream, status); - - System.out.println("Status: " + status.get(0) + ", buffer: " + status.get(1) + ", bitrate: " + status.get(2) + ", flags: " + status.get(3)); - - pause(100); + if (!FSound.FSOUND_Init(44100, 32, 0)) { + error("Failed to initialize FMOD: " + FMOD.FMOD_ErrorString(FSound.FSOUND_GetError())); + return false; } - FSound.FSOUND_Stream_Stop(stream); - FSound.FSOUND_Stream_Close(stream); - } else { - System.out.println("Unable to play: " + args[0]); - System.out.println("Error: " + FMOD.FMOD_ErrorString(FSound.FSOUND_GetError())); - } + FSound.FSOUND_Stream_SetBufferSize(500); + FSound.FSOUND_Stream_Net_SetBufferProperties(64000, 60, 80); + initialized = true; + } + return initialized; + } - FSound.FSOUND_Close(); - FMOD.destroy(); + /** + * @param string + */ + private void error(String string) { + final Dialog dialog = new Dialog(frame, "Error", true); + dialog.add(new Label(string)); + dialog.pack(); + + dialog.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + dialog.dispose(); + } + }); + + // setup dialog + int x = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth() - dialog.getWidth()) / 2; + int y = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight() - dialog.getHeight()) / 2; + dialog.setLocation(x, y); + dialog.setVisible(true); } - - /** + + /** * @param i */ private static void pause(long i) { |
|
From: Brian M. <ma...@us...> - 2004-09-16 21:11:32
|
Update of /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/fmod3 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1771/src/java/org/lwjgl/fmod3 Modified Files: FSound.java Log Message: add net enums Index: FSound.java =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/java/org/lwjgl/fmod3/FSound.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- FSound.java 10 Sep 2004 21:56:58 -0000 1.7 +++ FSound.java 16 Sep 2004 21:11:22 -0000 1.8 @@ -335,6 +335,21 @@ /** An Advanced Streaming Format header line */ public static final int FSOUND_TAGFIELD_ASF = 5; + + /** Stream hasn't connected yet */ + public static final int FSOUND_STREAM_NET_NOTCONNECTED = 0; + + /** Stream is connecting to remote host */ + public static final int FSOUND_STREAM_NET_CONNECTING = 1; + + /** Stream is buffering data */ + public static final int FSOUND_STREAM_NET_BUFFERING = 2; + + /** Stream is ready to play */ + public static final int FSOUND_STREAM_NET_READY = 3; + + /** Stream has suffered a fatal error */ + public static final int FSOUND_STREAM_NET_ERROR = 4; // Pre Initialization / Initialization / Enumeration // ====================================================== |