def testCompute(): graph = tuttle.Graph() n = [ tuttle.NodeInit( "tuttle.exrreader", filename="TuttleOFX-data/image/openexr/DisplayWindow/t##.exr"), tuttle.NodeInit("tuttle.invert"), tuttle.NodeInit("tuttle.gamma", master=.5), tuttle.NodeInit("tuttle.jpegwriter", filename=".tests/fromExr/output-####.jpg"), ] nodes = graph.addConnectedNodes(n) procOptions = tuttle.ComputeOptions() procGraph = tuttle.ProcessGraph(procOptions, graph, []) print "before compute" outputCache = tuttle.MemoryCache() timeRange = tuttle.TimeRange(1, 16, 10) print "setup" procGraph.setup() print "beginSequence" procGraph.beginSequence(timeRange) for time in xrange(timeRange._begin, timeRange._end, timeRange._step): print "time:", time procGraph.setupAtTime(time) procGraph.processAtTime(outputCache, time) print "endSequence" procGraph.endSequence() print "after compute"
def testCompatibleBitDepth(): filepath = tempfile.NamedTemporaryFile( prefix="bitDepthTest-", suffix=".png" ) tuttle.compute( [ tuttle.NodeInit( "tuttle.checkerboard", size=[50,50], explicitConversion="8i" ), tuttle.NodeInit( "tuttle.swscale", height=500 ), # only supports 8ui tuttle.NodeInit( "tuttle.pngwriter", filename=filepath.name ), ] )
def testTranscodeToDefaultCodec(): tuttle.compute( [ tuttle.NodeInit( "tuttle.avreader", filename="TuttleOFX-data/video/bars_100.avi", v_colorspace=2 ), # video with PAR 16/15=1.066667 tuttle.NodeInit( "tuttle.invert" ), tuttle.NodeInit( "tuttle.avwriter", filename=".tests/testTrancodeToDefaultCodec.mov", v_colorspace=2, v_aspect=[0,1] ), ], tuttle.ComputeOptions(0,20) )
def testMultipleCompute_simpleNodes(): assert tuttle.compute([ tuttle.NodeInit("tuttle.checkerboard", format="PAL"), tuttle.NodeInit("tuttle.invert"), tuttle.NodeInit("tuttle.blur", size=.2), tuttle.NodeInit("tuttle.pngwriter", filename=".tests/output.png") ])
def testIncompatibleBitDepth(): filepath = tempfile.NamedTemporaryFile( prefix="bitDepthTest-", suffix=".png" ) tuttle.compute( [ tuttle.NodeInit( "tuttle.checkerboard", size=[50,50] ), tuttle.NodeInit( "tuttle.blur", size=[0.03, 0.05] ), # only supports 32f tuttle.NodeInit( "tuttle.swscale", height=500 ), # only supports 8ui tuttle.NodeInit( "tuttle.pngwriter", filename=filepath.name ), ] )
def testMultipleCompute_simpleNodes(): assert tuttle.compute([ tuttle.NodeInit("tuttle.checkerboard", format="PAL"), tuttle.NodeInit("tuttle.invert"), tuttle.NodeInit("tuttle.colortransform", offsetGlobal=.2), tuttle.NodeInit("tuttle.pngwriter", filename=".tests/output.png") ])
def generateThumbnail(imgFile): from pyTuttle import tuttle tuttle.core().preload(False) tuttle.compute([ tuttle.NodeInit("tuttle.pngreader", filename=imgFile), tuttle.NodeInit("tuttle.resize", width=256, keepRatio=1), tuttle.NodeInit("tuttle.pngwriter", filename=imgFile + "-thumbnail"), ])
def testSimpleNodeList(): tuttle.compute([ tuttle.NodeInit("tuttle.checkerboard", size=[50, 50], explicitConversion="8i"), tuttle.NodeInit("tuttle.invert"), tuttle.NodeInit("tuttle.swscale", height=500), tuttle.NodeInit("tuttle.pngwriter", filename=".tests/output.png"), ])
def testTimeShift(): tuttle.compute([ #tuttle.NodeInit( "tuttle.oiioreader", filename="/home/fab/imgTests/seqTga/###.tga" ), tuttle.NodeInit( "tuttle.oiioreader", filename="TuttleOFX-data/image/openexr/DisplayWindow/t##.exr"), tuttle.NodeInit("tuttle.invert"), tuttle.NodeInit("tuttle.timeshift", 12), tuttle.NodeInit("tuttle.gamma", master=.5), tuttle.NodeInit("tuttle.jpegwriter", filename=".tests/fromExr/output-####.jpg"), ])
def testTrancodeToMpegpipe(): tuttle.compute([ tuttle.NodeInit("tuttle.avreader", filename="TuttleOFX-data/video/flame.avi", colorspace="bt709"), tuttle.NodeInit("tuttle.avwriter", filename=".tests/testTrancodeToMpegpipe.y4m", format="yuv4mpegpipe", videoCodec="rawvideo", colorspace="bt709", aspect=[0, 1]), ], tuttle.ComputeOptions(0, 10))
def testOutputMemoryCache(): outputCache = tuttle.MemoryCache() tuttle.compute( outputCache, [ tuttle.NodeInit( "tuttle.checkerboard", format="PAL", explicitConversion="8i" ), tuttle.NodeInit( "tuttle.blur", size=.2 ), tuttle.NodeInit( "tuttle.invert" ), ] ) #print 'invert name:', invert.getName() imgRes = outputCache.get(0); print('type imgRes:', type( imgRes )) print('imgRes:', dir( imgRes )) print('FullName:', imgRes.getFullName()) print('MemorySize:', imgRes.getMemorySize())
def testDeleteUnconnectedNodes(): g = tuttle.Graph() n = [ tuttle.NodeInit( "tuttle.oiioreader", filename="TuttleOFX-data/image/openexr/DisplayWindow/t##.exr" ), tuttle.NodeInit( "tuttle.invert" ), tuttle.NodeInit( "tuttle.timeshift", 12 ), tuttle.NodeInit( "tuttle.gamma", master=.5 ), tuttle.NodeInit( "tuttle.timeshift", 0 ), tuttle.NodeInit( "tuttle.jpegwriter", filename=".tests/fromExr/output-####.jpg" ), ] nodes = g.addConnectedNodes(n) assert_equals(g.getNbNodes(), 6) assert_equals(g.getNbConnections(), 5) g.deleteUnconnectedNodes( nodes[-1] ) assert_equals(g.getNbNodes(), 6) assert_equals(g.getNbConnections(), 5) checkerboard = g.createNode( "tuttle.gamma", master=.5 ).asImageEffectNode() lensdistort = g.createNode( "tuttle.timeshift", 0. ).asImageEffectNode() assert_equals(g.getNbNodes(), 8) assert_equals(g.getNbConnections(), 5) assert_equals(len(g.getUnconnectedNodes(nodes[-1])), 2) assert_equals(len(g.getConnectedNodes(nodes[-1])), 6) g.deleteUnconnectedNodes( nodes[-1] ) assert_equals(g.getNbNodes(), 6) assert_equals(g.getNbConnections(), 5)
def testLinearGraph(): nodes = [ tuttle.NodeInit( "tuttle.oiioreader", filename="TuttleOFX-data/image/openexr/DisplayWindow/t##.exr" ), tuttle.NodeInit( "tuttle.invert" ), tuttle.NodeInit( "tuttle.timeshift", 12 ), tuttle.NodeInit( "tuttle.gamma", master=.5 ), ] for i in range(100): nodes.append( tuttle.NodeInit( "tuttle.timeshift", 0 ) ) nodes.append( tuttle.NodeInit( "tuttle.jpegwriter", filename=".tests/fromExr/output-####.jpg" ) ) tuttle.compute( nodes )
def testRenameNode(): g = tuttle.Graph() n = [ tuttle.NodeInit( "tuttle.oiioreader", filename="TuttleOFX-data/image/openexr/DisplayWindow/t##.exr" ), tuttle.NodeInit( "tuttle.invert" ), tuttle.NodeInit( "tuttle.timeshift", 12 ), tuttle.NodeInit( "tuttle.gamma", master=.5 ), tuttle.NodeInit( "tuttle.timeshift", 0 ), tuttle.NodeInit( "tuttle.jpegwriter", filename=".tests/fromExr/output-####.jpg" ), ] nodes = g.addConnectedNodes(n) g.renameNode( nodes[0], "plop" ) g.renameNode( nodes[2], "plip" ) # rename to the same name g.renameNode( nodes[2], "plip" ) # rename to an existing name assert_raises( Exception, g.renameNode, nodes[4], "plop" )