private int readAudioPacket(byte[] b, int off, int len) throws IOException {
		if(packet_data_bytes <= 0 && !audio_stream())
				return -1;
		if(packet_data_bytes < len)
			len = packet_data_bytes;

		int remain = BUF_LEN - curPos;
		if(len >= remain) {
			System.arraycopy(buf, curPos, b, off, remain);
			raf.read(b, off + remain, len - remain);
			raf.read(buf);
			curPos = 0;
		} else {
			System.arraycopy(buf, curPos, b, off, len);
			curPos += len;
		}
		needBytes(6);
		packet_data_bytes -= len;
		return len;
	}