10000 Test against wrong order of outputs from multiple-output filters · Powercoder64/ffmpeg-python@faca0ee · GitHub
[go: up one dir, main page]

Skip to content

Commit faca0ee

Browse files
committed
Test against wrong order of outputs from multiple-output filters
1 parent ab42ab4 commit faca0ee

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

ffmpeg/tests/test_ffmpeg.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,3 +716,51 @@ def test__probe__exception():
716716
def test__probe__extra_args():
717717
data = ffmpeg.probe(TEST_INPUT_FILE1, show_frames=None)
718718
assert set(data.keys()) == {'format', 'streams', 'frames'}
719+
720+
def get_filter_complex_input(flt, name):
721+
m = re.search(r'\[([^]]+)\]{}(?=[[;]|$)'.format(name), flt)
722+
if m:
723+
return m.group(1)
724+
else:
725+
return None
726+
727+
def get_filter_complex_outputs(flt, name):
728+
m = re.search(r'(^|[];]){}((\[[^]]+\])+)(?=;|$)'.format(name), flt)
729+
if m:
730+
return m.group(2)[1:-1].split('][')
731+
else:
732+
return None
733+
734+
def test__get_filter_complex_input():
735+
assert get_filter_complex_input("", "scale") is None
736+
assert get_filter_complex_input("scale", "scale") is None
737+
assert get_filter_complex_input("scale[s3][s4];etc", "scale") is None
738+
assert get_filter_complex_input("[s2]scale", "scale") == "s2"
739+
assert get_filter_complex_input("[s2]scale;etc", "scale") == "s2"
740+
assert get_filter_complex_input("[s2]scale[s3][s4];etc", "scale") == "s2"
741+
742+
def test__get_filter_complex_outputs():
743+
assert get_filter_complex_outputs("", "scale") is None
744+
assert get_filter_complex_outputs("scale", "scale") is None
745+
assert get_filter_complex_outputs("scalex[s0][s1]", "scale") is None
746+
assert get_filter_complex_outputs("scale[s0][s1]", "scale") == ['s0', 's1']
747+
assert get_filter_complex_outputs("[s5]scale[s0][s1]", "scale") == ['s0', 's1']
748+
assert get_filter_complex_outputs("[s5]scale[s1][s0]", "scale") == ['s1', 's0']
749+
assert get_filter_complex_outputs("[s5]scale[s1]", "scale") == ['s1']
750+
assert get_filter_complex_outputs("[s5]scale[s1];x", "scale") == ['s1']
751+
assert get_filter_complex_outputs("y;[s5]scale[s1];x", "scale") == ['s1']
752+
753+
def test__multi_output_edge_label_order():
754+
scale2ref = ffmpeg.filter_multi_output([ffmpeg.input('x'), ffmpeg.input('y')], 'scale2ref')
755+
out = (
756+
ffmpeg.merge_outputs(
757+
scale2ref[1].filter('scale').output('a'),
758+
scale2ref[10000].filter('hflip').output('b')
759+
)
760+
)
761+
762+
args = out.get_args()
763+
flt_cmpl = args[args.index('-filter_complex')+1]
764+
out1, out2 = get_filter_complex_outputs(flt_cmpl, 'scale2ref')
765+
assert out1 == get_filter_complex_input(flt_cmpl, 'scale')
766+
assert out2 == get_filter_complex_input(flt_cmpl, 'hflip')

0 commit comments

Comments
 (0)
0