From 9fee0ec4ca0c5b7a334cc29dbb58e76c7a4c736e Mon Sep 17 00:00:00 2001 From: Michiel Van Der Kolk Date: Mon, 11 Jul 2005 15:42:37 +0000 Subject: Songdb java version, source. only 1.5 compatible git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7101 a1c6a512-1295-4272-9138-f99709370657 --- songdbj/de/jarnbjo/ogg/PhysicalOggStream.java | 124 ++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 songdbj/de/jarnbjo/ogg/PhysicalOggStream.java (limited to 'songdbj/de/jarnbjo/ogg/PhysicalOggStream.java') diff --git a/songdbj/de/jarnbjo/ogg/PhysicalOggStream.java b/songdbj/de/jarnbjo/ogg/PhysicalOggStream.java new file mode 100644 index 0000000000..5f342a38b7 --- /dev/null +++ b/songdbj/de/jarnbjo/ogg/PhysicalOggStream.java @@ -0,0 +1,124 @@ +/* + * $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.3 2003/04/10 19:48:22 jarnbjo + * no message + * + * Revision 1.2 2003/03/31 00:23:04 jarnbjo + * no message + * + * Revision 1.1 2003/03/03 21:02:20 jarnbjo + * no message + * + */ + +package de.jarnbjo.ogg; + +import java.io.IOException; +import java.util.Collection; + +/** + * Interface providing access to a physical Ogg stream. Typically this is + * a file. + */ + +public interface PhysicalOggStream { + + /** + * Returns a collection of objects implementing LogicalOggStream + * for accessing the separate logical streams within this physical Ogg stream. + * + * @return a collection of objects implementing LogicalOggStream + * which are representing the logical streams contained within this + * physical stream + * + * @see LogicalOggStream + */ + + public Collection getLogicalStreams(); + + /** + * Return the Ogg page with the absolute index index, + * independent from the logical structure of this stream or if the + * index parameter is -1, the next Ogg page is returned. + * This method should only be used by implementations of LogicalOggStream + * to access the raw pages. + * + * @param index the absolute index starting from 0 at the beginning of + * the file or stream or -1 to get the next page in a non-seekable + * stream + * + * @return the Ogg page with the physical absolute index index + * + * @throws OggFormatException if the ogg stream is corrupted + * @throws IOException if some other IO error occurs + */ + + public OggPage getOggPage(int index) throws OggFormatException, IOException; + + /** + * Checks if this stream is open for reading. + * + * @return true if this stream is open for reading, + * false otherwise + */ + + public boolean isOpen(); + + /** + * Closes this stream. After invoking this method, no further access + * to the streams data is possible. + * + * @throws IOException + */ + + public void close() throws IOException; + + /** + * Sets this stream's (and its logical stream's) position to the granule + * position. The next packet read from any logical stream will be the + * first packet beginning on the first page with a granule position higher + * than the argument.

+ * + * At the moment, this method only works correctly for Ogg files with + * a single logical Vorbis stream, and due to the different interpretations + * of the granule position, depending on mixed content, this method will + * never be able to work for mixed streams. Chained and interleaved streams are + * also not yet supported. Actually, this method is only a hack to support + * seeking from JMF, but may of course be abused otherwise too :) + * + * @param granulePosition + * + * @throws OggFormatException if the ogg stream is corrupted + * @throws IOException if some other IO error occurs + */ + + public void setTime(long granulePosition) throws OggFormatException, IOException; + + /** + * @return true if the stream is seekable, false + * otherwise + */ + + public boolean isSeekable(); +} \ No newline at end of file -- cgit v1.2.3