diff options
| author | Björn Stenberg <bjorn@haxx.se> | 2007-01-08 23:53:00 +0000 |
|---|---|---|
| committer | Björn Stenberg <bjorn@haxx.se> | 2007-01-08 23:53:00 +0000 |
| commit | 7039a05147b8bbfc829babea1c65bd436450b505 (patch) | |
| tree | 4ba555eb84ed97b72b0575034d5b0530a393713e /songdbj/de/jarnbjo/ogg/FileStream.java | |
| parent | 6d4c19707ef95942e323cbdc89fbbfdbe45e7cc5 (diff) | |
| download | rockbox-7039a05147b8bbfc829babea1c65bd436450b505.zip rockbox-7039a05147b8bbfc829babea1c65bd436450b505.tar.gz rockbox-7039a05147b8bbfc829babea1c65bd436450b505.tar.bz2 rockbox-7039a05147b8bbfc829babea1c65bd436450b505.tar.xz | |
Splitting out songdbj
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11953 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'songdbj/de/jarnbjo/ogg/FileStream.java')
| -rw-r--r-- | songdbj/de/jarnbjo/ogg/FileStream.java | 154 |
1 files changed, 0 insertions, 154 deletions
diff --git a/songdbj/de/jarnbjo/ogg/FileStream.java b/songdbj/de/jarnbjo/ogg/FileStream.java deleted file mode 100644 index 5a52630..0000000 --- a/songdbj/de/jarnbjo/ogg/FileStream.java +++ /dev/null @@ -1,154 +0,0 @@ -/* - * $ProjectName$ - * $ProjectRevision$ - * ----------------------------------------------------------- - * $Id$ - * ----------------------------------------------------------- - * - * $Author$ - * - * Description: - * - * Copyright 2002-2003 Tor-Einar Jarnbjo - * ----------------------------------------------------------- - * - * Change History - * ----------------------------------------------------------- - * $Log$ - * Revision 1.1 2005/07/11 15:42:36 hcl - * Songdb java version, source. only 1.5 compatible - * - * Revision 1.1.1.1 2004/04/04 22:09:12 shred - * First Import - * - * Revision 1.1 2003/04/10 19:48:22 jarnbjo - * no message - * - * - */ - -package de.jarnbjo.ogg; - -import java.io.*; -import java.util.*; - -/** - * Implementation of the <code>PhysicalOggStream</code> interface for accessing - * normal disk files. - */ - -public class FileStream implements PhysicalOggStream { - - private boolean closed=false; - private RandomAccessFile source; - private long[] pageOffsets; - private long numberOfSamples=-1; - - private HashMap logicalStreams=new HashMap(); - - /** - * Creates access to the specified file through the <code>PhysicalOggStream</code> interface. - * The specified source file must have been opened for reading. - * - * @param source the file to read from - * - * @throws OggFormatException if the stream format is incorrect - * @throws IOException if some other IO error occurs when reading the file - */ - - public FileStream(RandomAccessFile source) throws OggFormatException, IOException { - this.source=source; - - ArrayList po=new ArrayList(); - int pageNumber=0; - try { - while(true) { - po.add(new Long(this.source.getFilePointer())); - - // skip data if pageNumber>0 - OggPage op=getNextPage(pageNumber>0); - if(op==null) { - break; - } - - LogicalOggStreamImpl los=(LogicalOggStreamImpl)getLogicalStream(op.getStreamSerialNumber()); - if(los==null) { - los=new LogicalOggStreamImpl(this, op.getStreamSerialNumber()); - logicalStreams.put(new Integer(op.getStreamSerialNumber()), los); - } - - if(pageNumber==0) { - los.checkFormat(op); - } - - los.addPageNumberMapping(pageNumber); - los.addGranulePosition(op.getAbsoluteGranulePosition()); - - if(pageNumber>0) { - this.source.seek(this.source.getFilePointer()+op.getTotalLength()); - } - - pageNumber++; - } - } - catch(EndOfOggStreamException e) { - // ok - } - catch(IOException e) { - throw e; - } - //System.out.println("pageNumber: "+pageNumber); - this.source.seek(0L); - pageOffsets=new long[po.size()]; - int i=0; - Iterator iter=po.iterator(); - while(iter.hasNext()) { - pageOffsets[i++]=((Long)iter.next()).longValue(); - } - } - - public Collection getLogicalStreams() { - return logicalStreams.values(); - } - - public boolean isOpen() { - return !closed; - } - - public void close() throws IOException { - closed=true; - source.close(); - } - - private OggPage getNextPage() throws EndOfOggStreamException, IOException, OggFormatException { - return getNextPage(false); - } - - private OggPage getNextPage(boolean skipData) throws EndOfOggStreamException, IOException, OggFormatException { - return OggPage.create(source, skipData); - } - - public OggPage getOggPage(int index) throws IOException { - source.seek(pageOffsets[index]); - return OggPage.create(source); - } - - private LogicalOggStream getLogicalStream(int serialNumber) { - return (LogicalOggStream)logicalStreams.get(new Integer(serialNumber)); - } - - public void setTime(long granulePosition) throws IOException { - for(Iterator iter=logicalStreams.values().iterator(); iter.hasNext(); ) { - LogicalOggStream los=(LogicalOggStream)iter.next(); - los.setTime(granulePosition); - } - } - - /** - * @return always <code>true</code> - */ - - public boolean isSeekable() { - return true; - } -}
\ No newline at end of file |