de.jarnbjo.ogg
Class OggPage

java.lang.Object
  extended byde.jarnbjo.ogg.OggPage

public class OggPage
extends java.lang.Object

An instance of this class represents an ogg page read from an ogg file or network stream. It has no public constructor, but instances can be created by the create methods, supplying a JMF stream or a RandomAccessFile which is positioned at the beginning of an Ogg page.

Furtheron, the class provides methods for accessing the raw page data, as well as data attributes like segmenting information, sequence number, stream serial number, chechsum and wether this page is the beginning or end of a logical bitstream (BOS, EOS) and if the page data starts with a continued packet or a fresh data packet.


Method Summary
static OggPage create(byte[] source)
          this method equals to create(byte[] source, false)
static OggPage create(byte[] source, boolean skipData)
          This method is called to create a new OggPage instance based on the specified byte array.
static OggPage create(java.io.InputStream source)
          this method equals to create(InputStream source, false)
static OggPage create(java.io.InputStream source, boolean skipData)
          This method is called to read data from the current position in the specified InpuStream and create a new OggPage instance based on the data read.
static OggPage create(java.io.RandomAccessFile source)
          this method equals to create(RandomAccessFile source, false)
static OggPage create(java.io.RandomAccessFile source, boolean skipData)
          This method is called to read data from the current position in the specified RandomAccessFile and create a new OggPage instance based on the data read.
 long getAbsoluteGranulePosition()
          Returns the absolute granule position of the last complete packet contained in this Ogg page, or -1 if the page contains a single packet, which is not completed on this page.
 byte[] getData()
           
 byte[] getHeader()
           
 int getPageCheckSum()
          Return the check sum of this ogg page.
 int getPageSequenceNumber()
          Return the sequnce number of this ogg page.
 int[] getSegmentLengths()
           
 int[] getSegmentOffsets()
           
 byte[] getSegmentTable()
           
 int getStreamSerialNumber()
          Returns the stream serial number of this ogg page.
 int getTotalLength()
           
 boolean isBos()
           
 boolean isContinued()
           
 boolean isEos()
           
 boolean isFresh()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

create

public static OggPage create(java.io.RandomAccessFile source)
                      throws java.io.IOException,
                             EndOfOggStreamException,
                             OggFormatException
this method equals to create(RandomAccessFile source, false)

Throws:
java.io.IOException
EndOfOggStreamException
OggFormatException
See Also:
create(RandomAccessFile, boolean)

create

public static OggPage create(java.io.RandomAccessFile source,
                             boolean skipData)
                      throws java.io.IOException,
                             EndOfOggStreamException,
                             OggFormatException
This method is called to read data from the current position in the specified RandomAccessFile and create a new OggPage instance based on the data read. If the parameter skipData is set to true, the actual page segments (page data) is skipped and not read into memory. This mode is useful when scanning through an ogg file to build a seek table.

Parameters:
source - the source from which the ogg page is generated
skipData - if set to true, the actual page data is not read into memory
Returns:
an ogg page created by reading data from the specified source, starting at the current position
Throws:
FormatException - if the data read from the specified source is not matching the specification for an ogg page
EndOfStreamException - if it is not possible to read an entire ogg page from the specified source
java.io.IOException - if some other I/O error is detected when reading from the source
EndOfOggStreamException
OggFormatException
See Also:
create(RandomAccessFile)

create

public static OggPage create(java.io.InputStream source)
                      throws java.io.IOException,
                             EndOfOggStreamException,
                             OggFormatException
this method equals to create(InputStream source, false)

Throws:
java.io.IOException
EndOfOggStreamException
OggFormatException
See Also:
create(InputStream, boolean)

create

public static OggPage create(java.io.InputStream source,
                             boolean skipData)
                      throws java.io.IOException,
                             EndOfOggStreamException,
                             OggFormatException
This method is called to read data from the current position in the specified InpuStream and create a new OggPage instance based on the data read. If the parameter skipData is set to true, the actual page segments (page data) is skipped and not read into memory. This mode is useful when scanning through an ogg file to build a seek table.

Parameters:
source - the source from which the ogg page is generated
skipData - if set to true, the actual page data is not read into memory
Returns:
an ogg page created by reading data from the specified source, starting at the current position
Throws:
FormatException - if the data read from the specified source is not matching the specification for an ogg page
EndOfStreamException - if it is not possible to read an entire ogg page from the specified source
java.io.IOException - if some other I/O error is detected when reading from the source
EndOfOggStreamException
OggFormatException
See Also:
create(InputStream)

create

public static OggPage create(byte[] source)
                      throws java.io.IOException,
                             EndOfOggStreamException,
                             OggFormatException
this method equals to create(byte[] source, false)

Throws:
java.io.IOException
EndOfOggStreamException
OggFormatException
See Also:
create(byte[], boolean)

create

public static OggPage create(byte[] source,
                             boolean skipData)
                      throws java.io.IOException,
                             EndOfOggStreamException,
                             OggFormatException
This method is called to create a new OggPage instance based on the specified byte array.

Parameters:
source - the source from which the ogg page is generated
skipData - if set to true, the actual page data is not read into memory
Returns:
an ogg page created by reading data from the specified source, starting at the current position
Throws:
FormatException - if the data read from the specified source is not matching the specification for an ogg page
EndOfStreamException - if it is not possible to read an entire ogg page from the specified source
java.io.IOException - if some other I/O error is detected when reading from the source
EndOfOggStreamException
OggFormatException
See Also:
create(byte[])

getAbsoluteGranulePosition

public long getAbsoluteGranulePosition()
Returns the absolute granule position of the last complete packet contained in this Ogg page, or -1 if the page contains a single packet, which is not completed on this page. For pages containing Vorbis data, this value is the sample index within the Vorbis stream. The Vorbis stream does not necessarily start with sample index 0.

Returns:
the absolute granule position of the last packet completed on this page

getStreamSerialNumber

public int getStreamSerialNumber()
Returns the stream serial number of this ogg page.

Returns:
this page's serial number

getPageSequenceNumber

public int getPageSequenceNumber()
Return the sequnce number of this ogg page.

Returns:
this page's sequence number

getPageCheckSum

public int getPageCheckSum()
Return the check sum of this ogg page.

Returns:
this page's check sum

getTotalLength

public int getTotalLength()
Returns:
the total number of bytes in the page data

getData

public byte[] getData()
Returns:
a ByteBuffer containing the page data

getHeader

public byte[] getHeader()

getSegmentTable

public byte[] getSegmentTable()

getSegmentOffsets

public int[] getSegmentOffsets()

getSegmentLengths

public int[] getSegmentLengths()

isContinued

public boolean isContinued()
Returns:
true if this page begins with a continued packet

isFresh

public boolean isFresh()
Returns:
true if this page begins with a fresh packet

isBos

public boolean isBos()
Returns:
true if this page is the beginning of a logical stream

isEos

public boolean isEos()
Returns:
true if this page is the end of a logical stream