Skip to content

Commit ddb4538

Browse files
author
pascalbaljet
committed
SimpleFilter support in the Media class
1 parent 163cb05 commit ddb4538

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

src/Media.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
use Closure;
66
use FFMpeg\Coordinate\TimeCode;
7+
use FFMpeg\Filters\Audio\SimpleFilter;
8+
use FFMpeg\Filters\FilterInterface;
79
use FFMpeg\Media\MediaTypeInterface;
810

911
/**
@@ -98,8 +100,12 @@ public function addFilter(): Media
98100

99101
if (isset($arguments[0]) && $arguments[0] instanceof Closure) {
100102
call_user_func_array($arguments[0], [$this->media->filters()]);
101-
} else {
103+
} else if (isset($arguments[0]) && $arguments[0] instanceof FilterInterface) {
102104
call_user_func_array([$this->media, 'addFilter'], $arguments);
105+
} else if (isset($arguments[0]) && is_array($arguments[0])) {
106+
$this->media->addFilter(new SimpleFilter($arguments[0]));
107+
} else {
108+
$this->media->addFilter(new SimpleFilter($arguments));
103109
}
104110

105111
return $this;

tests/AudioVideoTest.php

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44

55
use FFMpeg\Coordinate\Dimension;
66
use FFMpeg\Coordinate\TimeCode;
7+
use FFMpeg\Filters\Audio\SimpleFilter;
78
use FFMpeg\Filters\Video\ClipFilter;
9+
use FFMpeg\Format\AudioInterface;
10+
use FFMpeg\Media\Audio;
811
use FFMpeg\Media\Video;
912
use Illuminate\Config\Repository as ConfigRepository;
1013
use Illuminate\Contracts\Filesystem\Factory as Filesystems;
@@ -95,6 +98,46 @@ public function testAddingAFilterWithAnObject()
9598
$this->assertCount(1, $media->getFiltersCollection());
9699
}
97100

101+
public function testAddingASimpleFilterWithStringArguments()
102+
{
103+
$media = $this->getVideoMedia();
104+
105+
$this->assertCount(0, $media->getFiltersCollection());
106+
107+
$media->addFilter('-i', '0');
108+
109+
$this->assertCount(1, $media->getFiltersCollection());
110+
111+
$filter = $media->getFiltersCollection()->getIterator()[0];
112+
113+
$this->assertInstanceOf(SimpleFilter::class, $filter);
114+
115+
$this->assertEquals(['-i', 0], $filter->apply(
116+
Mockery::mock(Audio::class),
117+
Mockery::mock(AudioInterface::class)
118+
));
119+
}
120+
121+
public function testAddingASimpleFilterWithArrayArgument()
122+
{
123+
$media = $this->getVideoMedia();
124+
125+
$this->assertCount(0, $media->getFiltersCollection());
126+
127+
$media->addFilter(['-i', '0']);
128+
129+
$this->assertCount(1, $media->getFiltersCollection());
130+
131+
$filter = $media->getFiltersCollection()->getIterator()[0];
132+
133+
$this->assertInstanceOf(SimpleFilter::class, $filter);
134+
135+
$this->assertEquals(['-i', 0], $filter->apply(
136+
Mockery::mock(Audio::class),
137+
Mockery::mock(AudioInterface::class)
138+
));
139+
}
140+
98141
public function testExportingToLocalDisk()
99142
{
100143
$media = $this->getGuitarMedia();

0 commit comments

Comments
 (0)