handleSegment_() {
    let segmentInfo;
    let segment;

    this.state = 'APPENDING';
    segmentInfo = this.pendingSegment_;
    segmentInfo.buffered = this.sourceUpdater_.buffered();
    segment = segmentInfo.playlist.segments[segmentInfo.mediaIndex];
    this.currentTimeline_ = segmentInfo.timeline;

    if (segmentInfo.timestampOffset !== this.sourceUpdater_.timestampOffset()) {
      this.sourceUpdater_.timestampOffset(segmentInfo.timestampOffset);
    }

    // if the media initialization segment is changing, append it
    // before the content segment
    if (segment.map) {
      let initId = initSegmentId(segment.map);

      if (!this.activeInitSegmentId_ ||
          this.activeInitSegmentId_ !== initId) {
        let initSegment = this.initSegments_[initId];

        this.sourceUpdater_.appendBuffer(initSegment.bytes, () => {
          this.activeInitSegmentId_ = initId;
        });
      }
    }

    this.sourceUpdater_.appendBuffer(segmentInfo.bytes,
                                     this.handleUpdateEnd_.bind(this));
  }
/**
   * append a decrypted segement to the SourceBuffer through a SourceUpdater
   *
   * @private
   */
append a decrypted segement to the SourceBuffer through a SourceUpdater
@private
append a decrypted segement to the SourceBuffer through a SourceUpdater @private
handleSegment_() {
    let segmentInfo;
    let segment;
    this.state = 'APPENDING';
    segmentInfo = this.pendingSegment_;
    segmentInfo.buffered = this.sourceUpdater_.buffered();
    segment = segmentInfo.playlist.segments[segmentInfo.mediaIndex];
    this.currentTimeline_ = segmentInfo.timeline;
    if (segmentInfo.timestampOffset !== this.sourceUpdater_.timestampOffset()) {
      this.sourceUpdater_.timestampOffset(segmentInfo.timestampOffset);
    }
    if (segment.map) {
      let initId = initSegmentId(segment.map);
      if (!this.activeInitSegmentId_ ||
          this.activeInitSegmentId_ !== initId) {
        let initSegment = this.initSegments_[initId];
        this.sourceUpdater_.appendBuffer(initSegment.bytes, () => {
          this.activeInitSegmentId_ = initId;
        });
      }
    }
    this.sourceUpdater_.appendBuffer(segmentInfo.bytes,
                                     this.handleUpdateEnd_.bind(this));
  }
handleSegment_ ( ) { let segmentInfo ; let segment ; this . state = 'APPENDING' ; segmentInfo = this . pendingSegment_ ; segmentInfo . buffered = this . sourceUpdater_ . buffered ( ) ; segment = segmentInfo . playlist . segments [ segmentInfo . mediaIndex ] ; this . currentTimeline_ = segmentInfo . timeline ; if ( segmentInfo . timestampOffset !== this . sourceUpdater_ . timestampOffset ( ) ) { this . sourceUpdater_ . timestampOffset ( segmentInfo . timestampOffset ) ; } if ( segment . map ) { let initId = initSegmentId ( segment . map ) ; if ( ! this . activeInitSegmentId_ || this . activeInitSegmentId_ !== initId ) { let initSegment = this . initSegments_ [ initId ] ; this . sourceUpdater_ . appendBuffer ( initSegment . bytes , ( ) => { this . activeInitSegmentId_ = initId ; } ) ; } } this . sourceUpdater_ . appendBuffer ( segmentInfo . bytes , this . handleUpdateEnd_ . bind ( this ) ) ; }
append a decrypted segement to the SourceBuffer through a SourceUpdater
 @private
append a decrypted segement to the SourceBuffer through a SourceUpdater @private
// if the media initialization segment is changing, append it // before the content segment