Spaces:
Configuration error
Configuration error
""" | |
Unit tests for the spatialmedia CLI tool. | |
# Test inputs are generated with | |
ffmpeg -y -f lavfi -i testsrc -vf scale=320:240 -vcodec libx264 -t 0.05 data/testsrc_320x240_h264.mp4 | |
ffmpeg -y -f lavfi -i testsrc -vf scale=320:240 -vcodec libvpx-vp9 -t 0.05 data/testsrc_320x240_vp9.mp4 | |
ffmpeg -y -f lavfi -i testsrc -vf scale=32:24 -vcodec prores -t 0.05 data/testsrc_32x24_prores.mov | |
""" | |
import unittest | |
import os | |
from spatialmedia.__main__ import main | |
from spatialmedia import metadata_utils | |
_OUTPUT_DIR = 'test_output' | |
def append_contents(contents): | |
def append(x): | |
contents = contents + x | |
return append | |
class TestAdd(unittest.TestCase): | |
def inject_metadata(self, args): | |
self.assertIsNone(main(args)) | |
contents = [] | |
metadata_utils.parse_metadata(args[-1], | |
lambda x: contents.append(x)) | |
try: | |
os.remove(args[-1]) | |
except: | |
return '' | |
return '\n'.join(contents[2:]) | |
def test_inject_v1_equirect_mono(self): | |
contents = self.inject_metadata(['-i', | |
'--projection', 'equirectangular', | |
'data/testsrc_320x240_h264.mp4', | |
f'{_OUTPUT_DIR}/equirect_mono_v1.mp4']) | |
self.assertFalse(contents.find('SV3D') >= 0) | |
self.assertFalse(contents.find('PRHD') >= 0) | |
self.assertFalse(contents.find('EQUI') >= 0) | |
self.assertFalse(contents.find('ST3D') >= 0) | |
self.assertTrue(contents.find("ProjectionType = equirectangular") > 0) | |
def test_inject_v1_rectangular_left_right(self): | |
contents = self.inject_metadata(['-i', | |
'--stereo', 'left-right', | |
'--projection', 'none', | |
'data/testsrc_320x240_h264.mp4', | |
f'{_OUTPUT_DIR}/rectangular_left_right_v1.mp4']) | |
self.assertFalse(contents.find('SV3D') >= 0) | |
self.assertFalse(contents.find('PRHD') >= 0) | |
self.assertFalse(contents.find('EQUI') >= 0) | |
self.assertFalse(contents.find('ST3D') >= 0) | |
self.assertFalse(contents.find("ProjectionType = equirectangular") > 0) | |
self.assertTrue(contents.find("ProjectionType = rectangular") > 0) | |
self.assertTrue(contents.find("Spherical = false") > 0) | |
def test_inject_v2_equirect_mono(self): | |
contents = self.inject_metadata(['-i', | |
'--v2', '--projection', 'equirectangular', | |
'data/testsrc_320x240_h264.mp4', | |
f'{_OUTPUT_DIR}/equirect_mono.mp4']) | |
self.assertTrue(contents.find('SV3D') >= 0) | |
self.assertTrue(contents.find('PRHD') >= 0) | |
self.assertTrue(contents.find('EQUI') >= 0) | |
self.assertFalse(contents.find('ST3D') >= 0) | |
def test_inject_v2_equirect_mono_vp9(self): | |
contents = self.inject_metadata(['-i', | |
'--v2', '--projection', 'equirectangular', | |
'data/testsrc_320x240_vp9.mp4', | |
f'{_OUTPUT_DIR}/equirect_mono_vp9.mp4']) | |
self.assertTrue(contents.find('SV3D') >= 0) | |
self.assertTrue(contents.find('PRHD') >= 0) | |
self.assertTrue(contents.find('EQUI') >= 0) | |
self.assertFalse(contents.find('ST3D') >= 0) | |
def test_inject_v2_equirect_mono_prores(self): | |
contents = self.inject_metadata(['-i', | |
'--v2', '--projection', 'equirectangular', | |
'data/testsrc_32x24_prores.mov', | |
f'{_OUTPUT_DIR}/equirect_mono_prores.mov']) | |
self.assertTrue(contents.find('SV3D') >= 0) | |
self.assertTrue(contents.find('PRHD') >= 0) | |
self.assertTrue(contents.find('EQUI') >= 0) | |
self.assertFalse(contents.find('ST3D') >= 0) | |
def test_inject_v2_rectangular_left_right(self): | |
contents = self.inject_metadata(['-i', | |
'--v2', '--stereo', 'left-right', | |
'--projection', 'none', | |
'data/testsrc_320x240_h264.mp4', | |
f'{_OUTPUT_DIR}/rectangular_left_right.mp4']) | |
self.assertFalse(contents.find('SV3D') >= 0) | |
self.assertFalse(contents.find('PRHD') >= 0) | |
self.assertFalse(contents.find('EQUI') >= 0) | |
self.assertTrue(contents.find('ST3D') >= 0) | |
self.assertTrue(contents.find('Stereo Mode: 2') >= 0) | |
def test_inject_v2_rectangular_top_bottom(self): | |
contents = self.inject_metadata(['-i', | |
'--v2', '--stereo', 'top-bottom', | |
'--projection', 'none', | |
'data/testsrc_320x240_h264.mp4', | |
f'{_OUTPUT_DIR}/rectangular_top_bottom.mp4']) | |
self.assertFalse(contents.find('SV3D') >= 0) | |
self.assertFalse(contents.find('PRHD') >= 0) | |
self.assertFalse(contents.find('EQUI') >= 0) | |
self.assertTrue(contents.find('ST3D') >= 0) | |
self.assertTrue(contents.find('Stereo Mode: 1') >= 0) | |
if __name__ == '__main__': | |
try: | |
os.mkdir('test_output') | |
except: | |
pass | |
unittest.main() | |