diff --git a/src/FFMpeg/Filters/Frame/FrameFilters.php b/src/FFMpeg/Filters/Frame/FrameFilters.php index 85bfde9..255da0c 100644 --- a/src/FFMpeg/Filters/Frame/FrameFilters.php +++ b/src/FFMpeg/Filters/Frame/FrameFilters.php @@ -21,4 +21,19 @@ class FrameFilters { $this->frame = $frame; } + + /** + * Fixes the display ratio of the output frame. + * + * In case the sample ratio and display ratio are different, image may be + * anamorphozed. This filter fixes this by specifying the output size. + * + * @return FrameFilters + */ + public function fixDisplayRatio() + { + $this->frame->addFilter(new DisplayRatioFixerFilter()); + + return $this; + } } diff --git a/tests/FFMpeg/Tests/Filters/Frame/FrameFiltersTest.php b/tests/FFMpeg/Tests/Filters/Frame/FrameFiltersTest.php new file mode 100644 index 0000000..a0e6434 --- /dev/null +++ b/tests/FFMpeg/Tests/Filters/Frame/FrameFiltersTest.php @@ -0,0 +1,21 @@ +getFrameMock(); + $filters = new FrameFilters($frame); + + $frame->expects($this->once()) + ->method('addFilter') + ->with($this->isInstanceOf('FFMpeg\Filters\Frame\DisplayRatioFixerFilter')); + + $filters->fixDisplayRatio(); + } +} diff --git a/tests/FFMpeg/Tests/TestCase.php b/tests/FFMpeg/Tests/TestCase.php index 0d6f906..4757f95 100644 --- a/tests/FFMpeg/Tests/TestCase.php +++ b/tests/FFMpeg/Tests/TestCase.php @@ -40,6 +40,13 @@ class TestCase extends \PHPUnit_Framework_TestCase ->getMock(); } + public function getFrameMock() + { + return $this->getMockBuilder('FFMpeg\Media\Frame') + ->disableOriginalConstructor() + ->getMock(); + } + public function getFFMpegDriverMock() { return $this->getMockBuilder('FFMpeg\Driver\FFMpegDriver') @@ -129,7 +136,7 @@ class TestCase extends \PHPUnit_Framework_TestCase ->getMock(); $video->expects($this->any()) - ->method('getFilename') + ->method('getPathfile') ->will($this->returnValue($filename)); return $video;