|
Message
From: cvs at opencores.org<cvs@o...>
Date: Tue Jun 5 17:36:38 CEST 2007
Subject: [cvs-checkins] MODIFIED: jop ...
Date: 00/07/06 05:17:36 Added: jop/java/target/src/app/lego/utils AudioPlayback.java TrivialFS.java Log: Adding the Lego Java Programs Revision Changes Path 1.1 jop/java/target/src/app/lego/utils/AudioPlayback.java http://www.opencores.org/cvsweb.shtml/jop/java/target/src/app/lego/utils/AudioPlayback.java?rev=1.1&content-type=text/x-cvsweb-markup Index: AudioPlayback.java =================================================================== package lego.utils; import lego.lib.Speaker; import util.Amd; import com.jopdesign.sys.Const; import com.jopdesign.sys.Native; public class AudioPlayback { public static final int SIZE_OFFSET = 40; public static final int DATA_OFFSET = 44; /** * Blocking. * @param fileNumber Standard (PCM) WAVE file. */ public static void playFromTrivialFS(int fileNumber, int usPerSample) { // int size = TrivialFS.getFileSize(fileNumber); int address = TrivialFS.getFileAddress(fileNumber); int size = Amd.read(address+SIZE_OFFSET+0); size |= Amd.read(address+SIZE_OFFSET+1) << 8; size |= Amd.read(address+SIZE_OFFSET+2) << 16; size |= Amd.read(address+SIZE_OFFSET+3) << 24; int nextStop = Native.rd(Const.IO_US_CNT) + usPerSample; int current; for (int j = DATA_OFFSET; j < size; j++) { lego.lib.Speaker.write(Amd.read(address+DATA_OFFSET+j)); while ((current = Native.rd(Const.IO_US_CNT)) < nextStop); nextStop += usPerSample; // waitForNextPeriod(); } } } 1.1 jop/java/target/src/app/lego/utils/TrivialFS.java http://www.opencores.org/cvsweb.shtml/jop/java/target/src/app/lego/utils/TrivialFS.java?rev=1.1&content-type=text/x-cvsweb-markup Index: TrivialFS.java =================================================================== package lego.utils; import util.Amd; public class TrivialFS { public static int getFileCount() { int index = -4; int length = 0; int count = 0; while (true) { index += 4 + length; length = Amd.read(index+0) << 24; length |= Amd.read(index+1) << 16; length |= Amd.read(index+2) << 8; length |= Amd.read(index+3); if (length != 0) count++; else break; } return count; } public static int getFileAddress(int fileNumber) { int index = -4; int length = 0;
for (int i = 0; i <= fileNumber; i++)
{
index += 4 + length;
length = Amd.read(index+0) << 24;
length |= Amd.read(index+1) << 16;
length |= Amd.read(index+2) << 8;
length |= Amd.read(index+3);
}
return index + 4;
}
public static int getFileSize(int fileNumber)
{
int index = -4;
int length = 0;
for (int i = 0; i <= fileNumber; i++)
{
index += 4 + length;
length = Amd.read(index+0) << 24;
length |= Amd.read(index+1) << 16;
length |= Amd.read(index+2) << 8;
length |= Amd.read(index+3);
}
return length;
}
}
|