'can raise cdata.error'

def _parse_entry(self, data, offset):

    (type_, offset) = cdata.uint16_le_from(data, offset)
    (units, offset) = cdata.uint16_le_from(data, offset)
    next_offset = (offset + (units * 2))
    try:
        name = data[offset:next_offset].decode('utf-16-le').strip('\x00')
    except UnicodeDecodeError:
        name = u''
    offset = next_offset
    (units, offset) = cdata.uint16_le_from(data, offset)
    next_offset = (offset + (units * 2))
    try:
        desc = data[offset:next_offset].decode('utf-16-le').strip('\x00')
    except UnicodeDecodeError:
        desc = u''
    offset = next_offset
    (bytes_, offset) = cdata.uint16_le_from(data, offset)
    next_offset = (offset + bytes_)
    codec = u''
    if (bytes_ == 2):
        codec_id = cdata.uint16_le_from(data, offset)[0]
        if (codec_id in CODECS):
            codec = CODECS[codec_id]
    offset = next_offset
    return (offset, type_, name, desc, codec)
