| from intervaltree import IntervalTree, Interval | |
| from utils import bitstream | |
| class SegmentMap(object): | |
| def __init__(self, grid): | |
| self.segment_tree = IntervalTree() | |
| for bits_info in grid.iter_all_frames(): | |
| self.segment_tree.add( | |
| Interval( | |
| begin=bits_info.bits.base_address, | |
| end=bits_info.bits.base_address + bits_info.bits.frames, | |
| data=bits_info, | |
| )) | |
| def segment_info_for_frame(self, frame): | |
| """ Return all bits info that match frame address. """ | |
| for frame in self.segment_tree[frame]: | |
| yield frame.data |