]> git.sesse.net Git - mlt/commitdiff
Add SWIG Lua bindings.
authorDan Dennedy <dan@dennedy.org>
Tue, 23 Jun 2009 07:42:27 +0000 (00:42 -0700)
committerDan Dennedy <dan@dennedy.org>
Tue, 23 Jun 2009 07:42:27 +0000 (00:42 -0700)
Signed-off-by: Dan Dennedy <dan@dennedy.org>
src/swig/configure
src/swig/lua/build [new file with mode: 0755]
src/swig/lua/play.lua [new file with mode: 0755]

index cc23df48e15b4d5a7549dab56c903703848f1a51..eecf01bd4196db60152817dae07d93eb4c3a8f66 100755 (executable)
@@ -6,7 +6,7 @@ then
 SWIG options:
 
   --enable-swig           - Build the high level language bindings.
-  --swig-languages=[all | [java | perl | php | python | ruby | tcl]*]
+  --swig-languages=[all | [java | lua | perl | php | python | ruby | tcl]*]
                           - Languages to build (default: all)
 
 EOF
@@ -16,7 +16,7 @@ else
        which swig > /dev/null 2>&1
        [ $? != 0 ] && echo "Please install swig" && exit 1
        
-       languages="java perl php python ruby tcl"
+       languages="java lua perl php python ruby tcl"
        touch config.mak
 
        # Iterate through arguments
diff --git a/src/swig/lua/build b/src/swig/lua/build
new file mode 100755 (executable)
index 0000000..9192f53
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+if [ "$1" = "clean" ]
+then
+       ( cd `dirname $0`; rm -f *.cxx *.so mlt.i ../.lua )
+       exit 0
+fi
+
+path=`which lua 2> /dev/null`
+
+if [ $? = 0 ]
+then
+       ln -sf ../mlt.i
+
+       # Invoke swig
+       swig -c++ -I../../mlt++ -I../.. -lua mlt.i || exit $?
+
+       # Compile the wrapper
+       g++ -fPIC -DPIC -D_GNU_SOURCE -c -rdynamic -pthread -I../.. mlt_wrap.cxx || exit $?
+
+       # Create the module
+       gcc -shared mlt_wrap.o -L../../mlt++ -lmlt++ -o mlt.so || exit $?
+else
+       echo Lua not installed.
+       exit 1
+fi
diff --git a/src/swig/lua/play.lua b/src/swig/lua/play.lua
new file mode 100755 (executable)
index 0000000..5d0fd30
--- /dev/null
@@ -0,0 +1,19 @@
+#!/usr/bin/env lua
+
+require("mlt")
+
+mlt.Factory_init()
+profile = mlt.Profile()
+producer = mlt.Producer( profile, arg[1] )
+if producer:is_valid() then
+  consumer = mlt.Consumer( profile, "sdl" )
+  consumer:set( "rescale", "none" )
+  consumer:set( "terminate_on_pause", 1 )
+  consumer:connect( producer )
+  event = consumer:setup_wait_for( "consumer-stopped" )
+  consumer:start()
+  consumer:wait_for( event )
+else
+  print( "Unable to open "..arg[1] )
+end
+mlt.Factory_close()