org.jaudiotagger.audio.ogg.util
Class OggPageHeader

java.lang.Object
  extended by org.jaudiotagger.audio.ogg.util.OggPageHeader

public class OggPageHeader
extends java.lang.Object

$Id: OggPageHeader.java,v 1.20 2009/10/27 08:52:21 paultaylor Exp $

reference:http://xiph.org/ogg/doc/framing.html

Version:
16 d�cembre 2003
Author:
Raphael Slinckx (KiKiDonK)

Nested Class Summary
static class OggPageHeader.HeaderTypeFlag
          This represents all the flags that can be set in the headerType field.
static class OggPageHeader.PacketStartAndLength
          Within the page specifies the start and length of each packet in the page offset from the end of the pageheader (after the segment table)
 
Field Summary
private  double absoluteGranulePosition
           
static byte[] CAPTURE_PATTERN
           
private  int checksum
           
static int FIELD_ABSOLUTE_GRANULE_LENGTH
           
static int FIELD_ABSOLUTE_GRANULE_POS
           
static int FIELD_CAPTURE_PATTERN_LENGTH
           
static int FIELD_CAPTURE_PATTERN_POS
           
static int FIELD_HEADER_TYPE_FLAG_LENGTH
           
static int FIELD_HEADER_TYPE_FLAG_POS
           
static int FIELD_PAGE_CHECKSUM_LENGTH
           
static int FIELD_PAGE_CHECKSUM_POS
           
static int FIELD_PAGE_SEGMENTS_LENGTH
           
static int FIELD_PAGE_SEGMENTS_POS
           
static int FIELD_PAGE_SEQUENCE_NO_LENGTH
           
static int FIELD_PAGE_SEQUENCE_NO_POS
           
static int FIELD_SEGMENT_TABLE_POS
           
static int FIELD_STREAM_SERIAL_NO_LENGTH
           
static int FIELD_STREAM_SERIAL_NO_POS
           
static int FIELD_STREAM_STRUCTURE_VERSION_LENGTH
           
static int FIELD_STREAM_STRUCTURE_VERSION_POS
           
private  byte headerTypeFlag
           
private  boolean isValid
           
private  boolean lastPacketIncomplete
           
static java.util.logging.Logger logger
           
static int MAXIMUM_NO_OF_SEGMENT_SIZE
           
static int MAXIMUM_PAGE_DATA_SIZE
           
static int MAXIMUM_PAGE_HEADER_SIZE
           
static int MAXIMUM_PAGE_SIZE
           
static int MAXIMUM_SEGMENT_SIZE
           
static int OGG_PAGE_HEADER_FIXED_LENGTH
           
private  java.util.List<OggPageHeader.PacketStartAndLength> packetList
           
private  int pageLength
           
private  int pageSequenceNumber
           
private  byte[] rawHeaderData
           
private  byte[] segmentTable
           
private  int streamSerialNumber
           
 
Constructor Summary
OggPageHeader(byte[] b)
           
 
Method Summary
 double getAbsoluteGranulePosition()
           
 int getCheckSum()
           
 byte getHeaderType()
           
 java.util.List<OggPageHeader.PacketStartAndLength> getPacketList()
           
 int getPageLength()
           
 int getPageSequence()
           
 byte[] getRawHeaderData()
           
 byte[] getSegmentTable()
           
 int getSerialNumber()
           
 boolean isLastPacketIncomplete()
           
 boolean isValid()
           
static OggPageHeader read(java.nio.ByteBuffer byteBuffer)
          Read next PageHeader from Buffer
static OggPageHeader read(java.io.RandomAccessFile raf)
          Read next PageHeader from file
 java.lang.String toString()
           
private  int u(int i)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

logger

public static java.util.logging.Logger logger

CAPTURE_PATTERN

public static final byte[] CAPTURE_PATTERN

OGG_PAGE_HEADER_FIXED_LENGTH

public static final int OGG_PAGE_HEADER_FIXED_LENGTH
See Also:
Constant Field Values

MAXIMUM_NO_OF_SEGMENT_SIZE

public static final int MAXIMUM_NO_OF_SEGMENT_SIZE
See Also:
Constant Field Values

MAXIMUM_SEGMENT_SIZE

public static final int MAXIMUM_SEGMENT_SIZE
See Also:
Constant Field Values

MAXIMUM_PAGE_HEADER_SIZE

public static final int MAXIMUM_PAGE_HEADER_SIZE
See Also:
Constant Field Values

MAXIMUM_PAGE_DATA_SIZE

public static final int MAXIMUM_PAGE_DATA_SIZE
See Also:
Constant Field Values

MAXIMUM_PAGE_SIZE

public static final int MAXIMUM_PAGE_SIZE
See Also:
Constant Field Values

FIELD_CAPTURE_PATTERN_POS

public static final int FIELD_CAPTURE_PATTERN_POS
See Also:
Constant Field Values

FIELD_STREAM_STRUCTURE_VERSION_POS

public static final int FIELD_STREAM_STRUCTURE_VERSION_POS
See Also:
Constant Field Values

FIELD_HEADER_TYPE_FLAG_POS

public static final int FIELD_HEADER_TYPE_FLAG_POS
See Also:
Constant Field Values

FIELD_ABSOLUTE_GRANULE_POS

public static final int FIELD_ABSOLUTE_GRANULE_POS
See Also:
Constant Field Values

FIELD_STREAM_SERIAL_NO_POS

public static final int FIELD_STREAM_SERIAL_NO_POS
See Also:
Constant Field Values

FIELD_PAGE_SEQUENCE_NO_POS

public static final int FIELD_PAGE_SEQUENCE_NO_POS
See Also:
Constant Field Values

FIELD_PAGE_CHECKSUM_POS

public static final int FIELD_PAGE_CHECKSUM_POS
See Also:
Constant Field Values

FIELD_PAGE_SEGMENTS_POS

public static final int FIELD_PAGE_SEGMENTS_POS
See Also:
Constant Field Values

FIELD_SEGMENT_TABLE_POS

public static final int FIELD_SEGMENT_TABLE_POS
See Also:
Constant Field Values

FIELD_CAPTURE_PATTERN_LENGTH

public static final int FIELD_CAPTURE_PATTERN_LENGTH
See Also:
Constant Field Values

FIELD_STREAM_STRUCTURE_VERSION_LENGTH

public static final int FIELD_STREAM_STRUCTURE_VERSION_LENGTH
See Also:
Constant Field Values

FIELD_HEADER_TYPE_FLAG_LENGTH

public static final int FIELD_HEADER_TYPE_FLAG_LENGTH
See Also:
Constant Field Values

FIELD_ABSOLUTE_GRANULE_LENGTH

public static final int FIELD_ABSOLUTE_GRANULE_LENGTH
See Also:
Constant Field Values

FIELD_STREAM_SERIAL_NO_LENGTH

public static final int FIELD_STREAM_SERIAL_NO_LENGTH
See Also:
Constant Field Values

FIELD_PAGE_SEQUENCE_NO_LENGTH

public static final int FIELD_PAGE_SEQUENCE_NO_LENGTH
See Also:
Constant Field Values

FIELD_PAGE_CHECKSUM_LENGTH

public static final int FIELD_PAGE_CHECKSUM_LENGTH
See Also:
Constant Field Values

FIELD_PAGE_SEGMENTS_LENGTH

public static final int FIELD_PAGE_SEGMENTS_LENGTH
See Also:
Constant Field Values

rawHeaderData

private byte[] rawHeaderData

absoluteGranulePosition

private double absoluteGranulePosition

checksum

private int checksum

headerTypeFlag

private byte headerTypeFlag

isValid

private boolean isValid

pageLength

private int pageLength

pageSequenceNumber

private int pageSequenceNumber

streamSerialNumber

private int streamSerialNumber

segmentTable

private byte[] segmentTable

packetList

private java.util.List<OggPageHeader.PacketStartAndLength> packetList

lastPacketIncomplete

private boolean lastPacketIncomplete
Constructor Detail

OggPageHeader

public OggPageHeader(byte[] b)
Method Detail

read

public static OggPageHeader read(java.nio.ByteBuffer byteBuffer)
                          throws java.io.IOException,
                                 CannotReadException
Read next PageHeader from Buffer

Parameters:
byteBuffer -
Returns:
Throws:
java.io.IOException
CannotReadException

read

public static OggPageHeader read(java.io.RandomAccessFile raf)
                          throws java.io.IOException,
                                 CannotReadException
Read next PageHeader from file

Parameters:
raf -
Returns:
Throws:
java.io.IOException
CannotReadException

u

private int u(int i)

isLastPacketIncomplete

public boolean isLastPacketIncomplete()
Returns:
true if the last packet on this page extends to the next page

getAbsoluteGranulePosition

public double getAbsoluteGranulePosition()

getCheckSum

public int getCheckSum()

getHeaderType

public byte getHeaderType()

getPageLength

public int getPageLength()

getPageSequence

public int getPageSequence()

getSerialNumber

public int getSerialNumber()

getSegmentTable

public byte[] getSegmentTable()

isValid

public boolean isValid()

getPacketList

public java.util.List<OggPageHeader.PacketStartAndLength> getPacketList()
Returns:
a list of packet start position and size within this page.

getRawHeaderData

public byte[] getRawHeaderData()
Returns:
the raw header data that this pageheader is derived from

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object