Spaces:
Configuration error
Configuration error
File size: 5,542 Bytes
a2fcab8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
"""
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()
|