Inject Video at Frame construction

This commit is contained in:
Romain Neutron 2013-09-04 19:50:38 +02:00
commit 5814eb3085
4 changed files with 29 additions and 9 deletions

View file

@ -18,16 +18,30 @@ use FFMpeg\Driver\FFMpegDriver;
use FFMpeg\FFProbe;
use FFMpeg\Exception\RuntimeException;
use FFMpeg\Coordinate\TimeCode;
use FFMpeg\Media\Video;
class Frame extends AbstractMediaType
{
/** @var TimeCode */
private $timecode;
/** @var Video */
private $video;
public function __construct($pathfile, FFMpegDriver $driver, FFProbe $ffprobe, TimeCode $timecode)
public function __construct(Video $video, FFMpegDriver $driver, FFProbe $ffprobe, TimeCode $timecode)
{
parent::__construct($pathfile, $driver, $ffprobe);
parent::__construct($video->getPathfile(), $driver, $ffprobe);
$this->timecode = $timecode;
$this->video = $video;
}
/**
* Returns the video related to the frame.
*
* @return Video
*/
public function getVideo()
{
return $this->video;
}
/**

View file

@ -159,6 +159,6 @@ class Video extends Audio
*/
public function frame(TimeCode $at)
{
return new Frame($this->pathfile, $this->driver, $this->ffprobe, $at);
return new Frame($this, $this->driver, $this->ffprobe, $at);
}
}

View file

@ -20,7 +20,7 @@ class FrameTest extends AbstractMediaTestCase
$ffprobe = $this->getFFProbeMock();
$timecode = $this->getTimeCodeMock();
$frame = new Frame(__FILE__, $driver, $ffprobe, $timecode);
$frame = new Frame($this->getVideoMock(__FILE__), $driver, $ffprobe, $timecode);
$this->assertSame($timecode, $frame->getTimeCode());
}
@ -30,7 +30,7 @@ class FrameTest extends AbstractMediaTestCase
$ffprobe = $this->getFFProbeMock();
$timecode = $this->getTimeCodeMock();
$frame = new Frame(__FILE__, $driver, $ffprobe, $timecode);
$frame = new Frame($this->getVideoMock(__FILE__), $driver, $ffprobe, $timecode);
$this->assertInstanceOf('FFMpeg\Filters\Frame\FrameFilters', $frame->filters());
}
@ -50,7 +50,7 @@ class FrameTest extends AbstractMediaTestCase
->method('add')
->with($filter);
$frame = new Frame(__FILE__, $driver, $ffprobe, $timecode);
$frame = new Frame($this->getVideoMock(__FILE__), $driver, $ffprobe, $timecode);
$frame->setFiltersCollection($filters);
$frame->addFilter($filter);
}
@ -75,7 +75,7 @@ class FrameTest extends AbstractMediaTestCase
->method('command')
->with($commands);
$frame = new Frame(__FILE__, $driver, $ffprobe, $timecode);
$frame = new Frame($this->getVideoMock(__FILE__), $driver, $ffprobe, $timecode);
$this->assertSame($frame, $frame->save($pathfile, $accurate));
}

View file

@ -122,10 +122,16 @@ class TestCase extends \PHPUnit_Framework_TestCase
->getMock();
}
protected function getVideoMock()
protected function getVideoMock($filename = null)
{
return $this->getMockBuilder('FFMpeg\Media\Video')
$video = $this->getMockBuilder('FFMpeg\Media\Video')
->disableOriginalConstructor()
->getMock();
$video->expects($this->any())
->method('getFilename')
->will($this->returnValue($filename));
return $video;
}
}