'A new _WavPackHeader or raises WavPackHeaderError'

@classmethod
@convert_error(IOError, WavPackHeaderError)
def from_fileobj(cls, fileobj):

    header = fileobj.read(32)
    if ((len(header) != 32) or (not header.startswith('wvpk'))):
        raise WavPackHeaderError(('not    a    WavPack    header:    %r' % header))
    block_size = cdata.uint_le(header[4:8])
    version = cdata.ushort_le(header[8:10])
    track_no = ord(header[10:11])
    index_no = ord(header[11:12])
    samples = cdata.uint_le(header[12:16])
    if (samples == ((2 ** 32) - 1)):
        samples = (-1)
    block_index = cdata.uint_le(header[16:20])
    block_samples = cdata.uint_le(header[20:24])
    flags = cdata.uint_le(header[24:28])
    crc = cdata.uint_le(header[28:32])
    return _WavPackHeader(block_size, version, track_no, index_no, samples, block_index, block_samples, flags, crc)
