public function generate(ChannelInterface $channel, \DateTime $startsAt = null) { $targetDuration = $this->options['target_duration']; if (null === $startsAt) { $startsAt = new \DateTime(); } $segments = $this->manager->findPlaying($channel, $startsAt, $targetDuration * 3); $playlist = new Playlist($segments); $first = $playlist->getFirst(); if (null === $first) { return; } $age = $first->getEndsAt()->getTimestamp() - $startsAt->getTimestamp() + 1; $playlist->setAge($age); $discontinuitySequence = $first->getProgram()->getSequence(); if ($first->isDiscontinuity()) { --$discontinuitySequence; } return new M3u8($playlist, $this->options['version'], $targetDuration, $discontinuitySequence); }