def collect_video_streams(self):
        """
        Return a list of video streams in this timeline and its children.
        The streams are returned in order with respect to the timeline.

        A stream is returned as a list: the first element is the tag
        which introduced that stream; other elements are the tags
        which made up the stream body (if any).
        """
        rc = []
        streams_by_id = {}

        # scan first for all streams
        for t in self.all_tags_of_type(TagDefineVideoStream):
            stream = [ t ]
            streams_by_id[t.characterId] = stream
            rc.append(stream)

        # then find the frames
        for t in self.all_tags_of_type(TagVideoFrame):
            # we have a frame for the /named/ stream
            assert t.streamId in streams_by_id
            streams_by_id[t.streamId].append(t)

        return rc
Return a list of video streams in this timeline and its children.
        The streams are returned in order with respect to the timeline.

        A stream is returned as a list: the first element is the tag
        which introduced that stream; other elements are the tags
        which made up the stream body (if any).