def METHOD_NAME(b):
    """Unpack bytes into a sequence of frames
    This assumes that length information is at the front of the bytestring,
    as performed by pack_frames
    See Also
    --------
    pack_frames
    """
    b = memoryview(b)
    fmt = "Q"
    fmt_size = struct.calcsize(fmt)
    (n_frames,) = struct.unpack_from(fmt, b)
    lengths = struct.unpack_from(f"{n_frames}{fmt}", b, fmt_size)
    frames = []
    start = fmt_size * (1 + n_frames)
    for length in lengths:
        end = start + length
        frames.append(b[start:end])
        start = end
    return frames