parseServiceDescription_(mpd) {
    const TXml = shaka.util.TXml;
    const elem = TXml.findChild(mpd, 'ServiceDescription');

    if (!elem ) {
      return null;
    }

    const latencyNode = TXml.findChild(elem, 'Latency');
    const playbackRateNode = TXml.findChild(elem, 'PlaybackRate');

    if (!latencyNode && !playbackRateNode) {
      return null;
    }

    const description = {};

    if (latencyNode) {
      if ('target' in latencyNode.attributes) {
        description.targetLatency =
          parseInt(latencyNode.attributes['target'], 10) / 1000;
      }
      if ('max' in latencyNode.attributes) {
        description.maxLatency =
          parseInt(latencyNode.attributes['max'], 10) / 1000;
      }
      if ('min' in latencyNode.attributes) {
        description.minLatency =
          parseInt(latencyNode.attributes['min'], 10) / 1000;
      }
    }

    if (playbackRateNode) {
      if ('max' in playbackRateNode.attributes) {
        description.maxPlaybackRate =
          parseFloat(playbackRateNode.attributes['max']);
      }
      if ('min' in playbackRateNode.attributes) {
        description.minPlaybackRate =
          parseFloat(playbackRateNode.attributes['min']);
      }
    }

    return description;
  }
Reads maxLatency and maxPlaybackRate properties from service
description element.

@param {!shaka.extern.xml.Node} mpd
@return {?shaka.extern.ServiceDescription}
@private