extractMultiSegmentInfo method

_MsInfo extractMultiSegmentInfo(
  1. XmlElement element,
  2. _MsInfo msParentInfo
)

Implementation

_MsInfo extractMultiSegmentInfo(
  xml.XmlElement element,
  _MsInfo msParentInfo,
) {
  final msInfo = msParentInfo.copy(); // Copy

  final segmentList = element.getElement('SegmentList');
  if (segmentList != null) {
    msInfo.segmentTimeline =
        extractSegmentTimeline(segmentList) ?? msParentInfo.segmentTimeline;
    msInfo.initializationUrl =
        segmentList.getElement('Initialization')?.getAttribute('sourceURL');

    final segmentUrlsSE = segmentList.findAllElements('SegmentURL');
    if (segmentUrlsSE.isNotEmpty) {
      msInfo.segmentUrls = [
        for (final segment in segmentUrlsSE) segment.getAttribute('media')!,
      ];
    }
  } else {
    final segmentTemplate = element.getElement('SegmentTemplate');
    if (segmentTemplate != null) {
      // Note: Currently SegmentTemplates are not supported.
/*        final segmentTimeLine = extractSegmentTimeline(segmentTemplate);
      if (segmentTimeLine != null) {
        msInfo['s'] = segmentTimeLine;
      }

      final timeScale = segmentTemplate.getAttribute('timescale');
      if (timeScale != null) {
        msInfo['timescale'] = int.parse(timeScale);
      }

      final media = segmentTemplate.getAttribute('media');
      if (media != null) {
        msInfo['media'] = media;
      }
      final initialization = segmentTemplate.getAttribute('initialization');
      if (initialization != null) {
        msInfo['initialization'] = initialization;
      } else {
        extractInitialization(segmentTemplate);
      }*/
    }
  }
  return msInfo;
}