<?php
   require_once 'video_streamer_range_basic.php';

   class VideoStreamerRangeThrottled extends VideoStreamerRangeBasic {
      private $_total_delay_us = 0;
      private $_delay_us = 0;
      private $_delay_sec = 0;

      public function __construct($video_path, $require_cookie, $chunk_size, $target_byterate) {
         parent::__construct($video_path, $require_cookie, $chunk_size);
         $this->_total_delay_us = intval(1000000 * $chunk_size / $target_byterate);
         $this->_delay_us = $this->_total_delay_us % 1000000;
         $this->_delay_sec = intval(($this->_total_delay_us - $this->_delay_us) / 1000000);
      }

      protected function afterByteSend() {
         if ($this->_delay_sec > 0) {
            sleep($this->_delay_sec);
         }
         if ($this->_delay_us > 0) {
            usleep($this->_delay_us);
         }
      }
   }
?>