protected void readOggHeader() throws Exception {
		byte[] header = new byte[27];
		raf.readFully(header);
		
		if(!(header[0] == 'O' &&
		   header[1] == 'g' &&
		   header[2] == 'g' &&
		   header[3] == 'S')) {
		    	// this is not an ogg! abort...
			//System.out.println("not an ogg header at " + raf.getFilePointer() );
			return;
		}
				
		// we now skip the following:
		// 	version         = 1 byte,
		//	headerType      = 1 byte,
		//	granulePosition = 8 bytes,
		// 	bitstreamSerial = 4 bytes,
		//	pageSequenceNum = 4 bytes,
		//	crcChecksum     = 4 bytes
		// makes 22 bytes + 4 from "OggS" = 26
		int pageSegments = unsignedByteToInt(header[26]);
		if( pageSegments == 255 ) {
		    concatNext = true;
		}
		int totalLength = 0;
		
		for (int i = 0; i < pageSegments; i++) {
			int l=0; byte[] tmp = new byte[1];
			raf.read(tmp);
			l=tmp[0]&0xff;
			totalLength += l;
		}
		
		// save where this header ended
		headerStart = raf.getFilePointer();
	}