Merge branch '0.4'

This commit is contained in:
Romain Neutron 2013-12-17 17:55:39 +01:00
commit 580421ab5f
13 changed files with 29 additions and 21 deletions

View file

@ -1,6 +1,10 @@
CHANGELOG
---------
* 0.4.4 (12-17-2013)
* Fix width / height dimensions extraction.
* 0.4.3 (12-02-2013)
* Fix using rotate and resize filters at the same time (#78)

View file

@ -35,7 +35,7 @@ class FFMpegServiceProvider implements ServiceProviderInterface
return array_replace($app['ffmpeg.default.configuration'], $app['ffmpeg.configuration']);
});
$app['ffmpeg'] = $app['ffmpeg.ffmpeg'] = $app->share(function(Application $app) {
$app['ffmpeg'] = $app['ffmpeg.ffmpeg'] = $app->share(function (Application $app) {
$configuration = $app['ffmpeg.configuration.build'];
if (isset($configuration['ffmpeg.timeout'])) {
@ -49,7 +49,7 @@ class FFMpegServiceProvider implements ServiceProviderInterface
return new ArrayCache();
});
$app['ffmpeg.ffprobe'] = $app->share(function(Application $app) {
$app['ffmpeg.ffprobe'] = $app->share(function (Application $app) {
$configuration = $app['ffmpeg.configuration.build'];
if (isset($configuration['ffmpeg.timeout'])) {

View file

@ -53,8 +53,8 @@ abstract class AbstractData implements \Countable
/**
* Sets the property value given its name.
*
* @param string $property
* @param mixed $value
* @param string $property
* @param mixed $value
*
* @return AbstractData
*/

View file

@ -71,7 +71,9 @@ class Stream extends AbstractData
}
if (null !== $displayRatio && null !== $sampleRatio) {
$width = round($width / $sampleRatio[0] * $sampleRatio[1] * $displayRatio[0] / $displayRatio[1]);
if ($sampleRatio[0] !== 1 && $sampleRatio[1] !== 1) {
$width = round($width / $sampleRatio[0] * $sampleRatio[1] * $displayRatio[0] / $displayRatio[1]);
}
}
return new Dimension($width, $height);

View file

@ -24,10 +24,10 @@ class FrameFilters
/**
* 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()

View file

@ -13,7 +13,6 @@ namespace FFMpeg\Filters\Video;
use FFMpeg\Coordinate\Dimension;
use FFMpeg\Exception\InvalidArgumentException;
use FFMpeg\Exception\RuntimeException;
use FFMpeg\Media\Video;
use FFMpeg\Format\VideoInterface;

View file

@ -12,7 +12,6 @@
namespace FFMpeg\Media;
use FFMpeg\Driver\FFMpegDriver;
use FFMpeg\Exception\InvalidArgumentException;
use FFMpeg\FFProbe;
use FFMpeg\Filters\FiltersCollection;
use FFMpeg\Media\MediaTypeInterface;

View file

@ -110,7 +110,7 @@ class Frame extends AbstractMediaType
foreach ($this->filters as $filter) {
$commands = array_merge($commands, $filter->apply($this));
}
$commands = array_merge($commands, array($pathfile));
try {

View file

@ -9,7 +9,7 @@ use FFMpeg\Format\Video\X264;
use FFMpeg\Media\Video;
class VideoTranscodeTest extends FunctionalTestCase
{
{
public function testSimpleTranscodeX264()
{
$filename = __DIR__ . '/output/output-x264.mp4';
@ -65,7 +65,7 @@ class VideoTranscodeTest extends FunctionalTestCase
if ($info['name'] === 'avconv' && version_compare($info['version'], '0.9', '<')) {
$this->markTestSkipped('This version of avconv is buggy and does not support this test.');
}
$filename = __DIR__ . '/output/output-x264.mp4';
if (is_file($filename)) {
unlink(__DIR__ . '/output/output-x264.mp4');
@ -91,7 +91,7 @@ class VideoTranscodeTest extends FunctionalTestCase
$this->assertFileExists($filename);
unlink($filename);
}
private function getNameAndVersion()
{
$binary = $this
@ -99,20 +99,20 @@ class VideoTranscodeTest extends FunctionalTestCase
->getFFMpegDriver()
->getProcessBuilderFactory()
->getBinary();
$output = $matches = null;
exec($binary . ' -version 2>&1', $output);
if (!isset($output[0])) {
return array('name' => null, 'version' => null);
}
preg_match('/^([a-z]+)\s+version\s+([0-9\.]+)/i', $output[0], $matches);
if (count($matches) > 0) {
return array('name' => $matches[1], 'version' => $matches[2]);
}
return array('name' => null, 'version' => null);
}
}

View file

@ -83,6 +83,12 @@ class StreamTest extends TestCase
$this->assertEquals(new Dimension(1280, 720), $stream->getDimensions());
}
public function testGetDimensionsFromVideoWith11SampleRatio()
{
$stream = new Stream(array('codec_type' => 'video', 'width' => 1920, 'height' => 1080, 'sample_aspect_ratio' => '1:1', 'display_aspect_ratio' => '16:9'));
$this->assertEquals(new Dimension(1920, 1080), $stream->getDimensions());
}
/**
* @dataProvider provideInvalidRatios
*/
@ -91,7 +97,7 @@ class StreamTest extends TestCase
$stream = new Stream(array('codec_type' => 'video', 'width' => 960, 'height' => 720, 'sample_aspect_ratio' => $invalidRatio, 'display_aspect_ratio' => '16:9'));
$this->assertEquals(new Dimension(960, 720), $stream->getDimensions());
}
public function provideInvalidRatios()
{
return array(array('0:1'), array('2:1:3'));

View file

@ -15,12 +15,12 @@ class DisplayRatioFixerFilterTest extends TestCase
{
$stream = new Stream(array('codec_type' => 'video', 'width' => 960, 'height' => 720));
$streams = new StreamCollection(array($stream));
$video = $this->getVideoMock(__FILE__);
$video->expects($this->once())
->method('getStreams')
->will($this->returnValue($streams));
$frame = new Frame($video, $this->getFFMpegDriverMock(), $this->getFFProbeMock(), new TimeCode(0, 0, 0, 0));
$filter = new DisplayRatioFixerFilter();
$this->assertEquals(array('-s', '960x720'), $filter->apply($frame));

View file

@ -4,7 +4,6 @@ namespace FFMpeg\Tests\Media;
use FFMpeg\Media\Audio;
use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
use FFMpeg\Format\ProgressableInterface;
use FFMpeg\Format\AudioInterface;
class AudioTest extends AbstractStreamableTestCase

View file

@ -4,7 +4,6 @@ namespace FFMpeg\Tests\Media;
use FFMpeg\Media\Video;
use Alchemy\BinaryDriver\Exception\ExecutionFailureException;
use FFMpeg\Format\ProgressableInterface;
use FFMpeg\Format\VideoInterface;
class VideoTest extends AbstractStreamableTestCase