setDimensions($width, $height); } public function getExtraParams() { } public function getWidth() { return $this->width; } public function getHeight() { return $this->height; } public function setDimensions($width, $height) { if ($width < 1) { throw new \InvalidArgumentException('Wrong width value'); } if ($height < 1) { throw new \InvalidArgumentException('Wrong height value'); } $this->width = $this->getMultiple($width, 16); $this->height = $this->getMultiple($height, 16); return; } public function getFrameRate() { return $this->frameRate; } public function setFrameRate($frameRate) { if ($frameRate < 1) { throw new \InvalidArgumentException('Wrong framerate value'); } $this->frameRate = (int) $frameRate; } public function getAudioCodec() { return $this->audioCodec; } public function setAudioCodec($audioCodec) { if ( ! in_array($audioCodec, $this->getAvailableAudioCodecs())) { throw new \InvalidArgumentException('Wrong audiocodec value'); } $this->audioCodec = $audioCodec; } public function getAudioSampleRate() { return $this->audioSampleRate; } public function setAudioSampleRate($audioSampleRate) { if ($audioSampleRate < 1) { throw new \InvalidArgumentException('Wrong audio sample rate value'); } $this->audioSampleRate = (int) $audioSampleRate; } public function getVideoCodec() { return $this->videoCodec; } public function setVideoCodec($videoCodec) { if ( ! in_array($videoCodec, $this->getAvailableVideoCodecs())) { throw new \InvalidArgumentException('Wrong videocodec value'); } $this->videoCodec = $videoCodec; } public function getKiloBitrate() { return $this->kiloBitrate; } public function setKiloBitrate($kiloBitrate) { if ($kiloBitrate < 1) { throw new \InvalidArgumentException('Wrong kiloBitrate value'); } $this->kiloBitrate = (int) $kiloBitrate; } public function getGOPsize() { return $this->GOPsize; } public function setGOPsize($GOPsize) { $this->GOPsize = (int) $GOPsize; } protected function getMultiple($value, $multiple) { $modulo = $value % $multiple; $ret = (int) $multiple; $halfDistance = $multiple / 2; if ($modulo <= $halfDistance) $bound = 'bottom'; else $bound = 'top'; switch ($bound) { default: case 'top': $ret = $value + $multiple - $modulo; break; case 'bottom': $ret = $value - $modulo; break; } if ($ret < $multiple) { $ret = (int) $multiple; } return (int) $ret; } abstract protected function getAvailableAudioCodecs(); abstract protected function getAvailableVideoCodecs(); }