void parseVBR(byte[] firstFrame) throws IOException {
        // trying Xing header
        byte[] tmp = new byte[4];
        int offset;
        if (version == VERSION_MPEG1) {
            if (mode == MODE_SINGLE_CHANNEL) {
                offset = 21 - 4;
            } else {
                offset = 36 - 4;
            }
        } else {
            if (mode == MODE_SINGLE_CHANNEL) {
                offset = 13 - 4;
            } else {
                offset = 21 - 4;
            }
        }
        try {
            System.arraycopy(firstFrame, offset, tmp, 0, 4);
            if ("Xing".equals(new String(tmp))) {
                vbr = true;
            }
        } catch (ArrayIndexOutOfBoundsException e) {
            throw new IOException("Corrupt Xing VBR header");
        }
        offset = 36 - 4;
        try {
            System.arraycopy(firstFrame, offset, tmp, 0, 4);
            if ("VBRI".equals(new String(tmp))) {
                vbr = true;
            }
        } catch (ArrayIndexOutOfBoundsException e) {
            throw new IOException("Corrupt VBRI VBR header");
        }
    }