def itunessd_to_dics(itunessd):
    """
    :param itunessd: the whole iTunesSD bytes data
    :return: translate to tree object, see doc of dics_to_itunessd
    """
    # header
    header_size = get_table_size(header_table)
    header_chunk = itunessd[0:header_size]

    header_dic = chunk_to_dic(header_chunk, header_table)

    # tracks
    tracks_header_dic, tracks_offsets = get_dic_sub_numbers(itunessd, header_dic['tracks_header_offset'],
                                                            tracks_header_table)

    tracks_dics = []
    for track_offset in tracks_offsets:
        _track_dic = chunk_to_dic(itunessd[track_offset:], track_table)
        track_dic = get_custom_fields_dic(_track_dic, track_table)
        tracks_dics.append(track_dic)

    # playlists
    playlists_header_dic, playlists_offsets = get_dic_sub_numbers(itunessd, header_dic['playlists_header_offset'],
                                                                  playlists_header_table)
    playlists_dics_and_indexes = []
    for playlist_offset in playlists_offsets:
        _playlist_header_dic, indexes_of_tracks = get_dic_sub_numbers(itunessd, playlist_offset, playlist_header_table)
        playlist_header_dic = get_custom_fields_dic(_playlist_header_dic, playlist_header_table)
        playlists_dics_and_indexes.append((playlist_header_dic, indexes_of_tracks))

    return get_custom_fields_dic(header_dic, header_table), tracks_dics, playlists_dics_and_indexes
:param itunessd: the whole iTunesSD bytes data
    :return: translate to tree object, see doc of dics_to_itunessd